{"id":"18c33c09874ad6226b4454a9d9eebfa2","_format":"hh-sol-build-info-1","solcVersion":"0.7.6","solcLongVersion":"0.7.6+commit.7338295f","input":{"language":"Solidity","sources":{"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLFlashCallback.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Callback for IAstraCLPoolActions#flash\n/// @notice Any contract that calls IAstraCLPoolActions#flash must implement this interface\ninterface IAstraCLFlashCallback {\n    /// @notice Called to `msg.sender` after transferring to the recipient from IAstraCLPool#flash.\n    /// @dev In the implementation you must repay the pool the tokens sent by flash plus the computed fee amounts.\n    /// The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory.\n    /// @param fee0 The fee amount in token0 due to the pool by the end of the flash\n    /// @param fee1 The fee amount in token1 due to the pool by the end of the flash\n    /// @param data Any data passed through by the caller via the IAstraCLPoolActions#flash call\n    function astraCLFlashCallback(uint256 fee0, uint256 fee1, bytes calldata data) external;\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Callback for IAstraCLPoolActions#mint\n/// @notice Any contract that calls IAstraCLPoolActions#mint must implement this interface\ninterface IAstraCLMintCallback {\n    /// @notice Called to `msg.sender` after minting liquidity to a position from IAstraCLPool#mint.\n    /// @dev In the implementation you must pay the pool tokens owed for the minted liquidity.\n    /// The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory.\n    /// @param amount0Owed The amount of token0 due to the pool for the minted liquidity\n    /// @param amount1Owed The amount of token1 due to the pool for the minted liquidity\n    /// @param data Any data passed through by the caller via the IAstraCLPoolActions#mint call\n    function astraCLMintCallback(uint256 amount0Owed, uint256 amount1Owed, bytes calldata data) external;\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Callback for IAstraCLPoolActions#swap\n/// @notice Any contract that calls IAstraCLPoolActions#swap must implement this interface\ninterface IAstraCLSwapCallback {\n    /// @notice Called to `msg.sender` after executing a swap via IAstraCLPool#swap.\n    /// @dev In the implementation you must pay the pool tokens owed for the swap.\n    /// The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory.\n    /// amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\n    /// @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by\n    /// the end of the swap. If positive, the callback must send that amount of token0 to the pool.\n    /// @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by\n    /// the end of the swap. If positive, the callback must send that amount of token1 to the pool.\n    /// @param data Any data passed through by the caller via the IAstraCLPoolActions#swap call\n    function astraCLSwapCallback(int256 amount0Delta, int256 amount1Delta, bytes calldata data) external;\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title The interface for the Astra CL Factory\n/// @notice The Astra CL Factory facilitates creation of Astra CL pools and control over the protocol fees\ninterface IAstraCLFactory {\n    /// @notice Emitted when the owner of the factory is changed\n    /// @param oldOwner The owner before the owner was changed\n    /// @param newOwner The owner after the owner was changed\n    event OwnerChanged(address indexed oldOwner, address indexed newOwner);\n\n    /// @notice Emitted when a pool is created\n    /// @param token0 The first token of the pool by address sort order\n    /// @param token1 The second token 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 pool The address of the created pool\n    event PoolCreated(\n        address indexed token0,\n        address indexed token1,\n        uint24 indexed fee,\n        int24 tickSpacing,\n        address pool\n    );\n\n    /// @notice Emitted when a new fee amount is enabled for pool creation via the factory\n    /// @param fee The enabled fee, denominated in hundredths of a bip\n    /// @param tickSpacing The minimum number of ticks between initialized ticks for pools created with the given fee\n    event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing);\n\n    /// @notice Returns the current owner of the factory\n    /// @dev Can be changed by the current owner via setOwner\n    /// @return The address of the factory owner\n    function owner() external view returns (address);\n\n    /// @notice Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled\n    /// @dev A fee amount can never be removed, so this value should be hard coded or cached in the calling context\n    /// @param fee The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee\n    /// @return The tick spacing\n    function feeAmountTickSpacing(uint24 fee) external view returns (int24);\n\n    /// @notice Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist\n    /// @dev tokenA and tokenB may be passed in either token0/token1 or token1/token0 order\n    /// @param tokenA The contract address of either token0 or token1\n    /// @param tokenB The contract address of the other token\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n    /// @return pool The pool address\n    function getPool(address tokenA, address tokenB, uint24 fee) external view returns (address pool);\n\n    /// @notice Creates a pool for the given two tokens and fee\n    /// @param tokenA One of the two tokens in the desired pool\n    /// @param tokenB The other of the two tokens in the desired pool\n    /// @param fee The desired fee for the pool\n    /// @dev tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved\n    /// from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments\n    /// are invalid.\n    /// @return pool The address of the newly created pool\n    function createPool(address tokenA, address tokenB, uint24 fee) external returns (address pool);\n\n    /// @notice Updates the owner of the factory\n    /// @dev Must be called by the current owner\n    /// @param _owner The new owner of the factory\n    function setOwner(address _owner) external;\n\n    /// @notice Enables a fee amount with the given tickSpacing\n    /// @dev Fee amounts may never be removed once enabled\n    /// @param fee The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)\n    /// @param tickSpacing The spacing between ticks to be enforced for all pools created with the given fee amount\n    function enableFeeAmount(uint24 fee, int24 tickSpacing) external;\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\nimport {IAstraCLPoolActions} from './pool/IAstraCLPoolActions.sol';\nimport {IAstraCLPoolDerivedState} from './pool/IAstraCLPoolDerivedState.sol';\nimport {IAstraCLPoolEvents} from './pool/IAstraCLPoolEvents.sol';\nimport {IAstraCLPoolImmutables} from './pool/IAstraCLPoolImmutables.sol';\nimport {IAstraCLPoolOwnerActions} from './pool/IAstraCLPoolOwnerActions.sol';\nimport {IAstraCLPoolState} from './pool/IAstraCLPoolState.sol';\n\n/// @title The interface for a Astra CL Pool\n/// @notice An Astra pool facilitates swapping and automated market making between any two assets that strictly conform\n/// to the ERC20 specification\n/// @dev The pool interface is broken up into many smaller pieces\ninterface IAstraCLPool is\n    IAstraCLPoolImmutables,\n    IAstraCLPoolState,\n    IAstraCLPoolDerivedState,\n    IAstraCLPoolActions,\n    IAstraCLPoolOwnerActions,\n    IAstraCLPoolEvents\n{}\n"},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Permissionless pool actions\n/// @notice Contains pool methods that can be called by anyone\ninterface IAstraCLPoolActions {\n    /// @notice Sets the initial price for the pool\n    /// @dev Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\n    /// @param sqrtPriceX96 the initial sqrt price of the pool as a Q64.96\n    function initialize(uint160 sqrtPriceX96) external;\n\n    /// @notice Adds liquidity for the given recipient/tickLower/tickUpper position\n    /// @dev The caller of this method receives a callback in the form of IAstraCLMintCallback.sol#astraCLMintCallback\n    /// in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends\n    /// on tickLower, tickUpper, the amount of liquidity, and the current price.\n    /// @param recipient The address for which the liquidity will be created\n    /// @param tickLower The lower tick of the position in which to add liquidity\n    /// @param tickUpper The upper tick of the position in which to add liquidity\n    /// @param amount The amount of liquidity to mint\n    /// @param data Any data that should be passed through to the callback\n    /// @return amount0 The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\n    /// @return amount1 The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\n    function mint(\n        address recipient,\n        int24 tickLower,\n        int24 tickUpper,\n        uint128 amount,\n        bytes calldata data\n    ) external returns (uint256 amount0, uint256 amount1);\n\n    /// @notice Collects tokens owed to a position\n    /// @dev Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity.\n    /// Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or\n    /// amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the\n    /// actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\n    /// @param recipient The address which should receive the fees collected\n    /// @param tickLower The lower tick of the position for which to collect fees\n    /// @param tickUpper The upper tick of the position for which to collect fees\n    /// @param amount0Requested How much token0 should be withdrawn from the fees owed\n    /// @param amount1Requested How much token1 should be withdrawn from the fees owed\n    /// @return amount0 The amount of fees collected in token0\n    /// @return amount1 The amount of fees collected in token1\n    function collect(\n        address recipient,\n        int24 tickLower,\n        int24 tickUpper,\n        uint128 amount0Requested,\n        uint128 amount1Requested\n    ) external returns (uint128 amount0, uint128 amount1);\n\n    /// @notice Burn liquidity from the sender and account tokens owed for the liquidity to the position\n    /// @dev Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0\n    /// @dev Fees must be collected separately via a call to #collect\n    /// @param tickLower The lower tick of the position for which to burn liquidity\n    /// @param tickUpper The upper tick of the position for which to burn liquidity\n    /// @param amount How much liquidity to burn\n    /// @return amount0 The amount of token0 sent to the recipient\n    /// @return amount1 The amount of token1 sent to the recipient\n    function burn(int24 tickLower, int24 tickUpper, uint128 amount) external returns (uint256 amount0, uint256 amount1);\n\n    /// @notice Swap token0 for token1, or token1 for token0\n    /// @dev The caller of this method receives a callback in the form of IAstraCLSwapCallback.sol#astraCLSwapCallback\n    /// @param recipient The address to receive the output of the swap\n    /// @param zeroForOne The direction of the swap, true for token0 to token1, false for token1 to token0\n    /// @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\n    /// @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this\n    /// value after the swap. If one for zero, the price cannot be greater than this value after the swap\n    /// @param data Any data to be passed through to the callback\n    /// @return amount0 The delta of the balance of token0 of the pool, exact when negative, minimum when positive\n    /// @return amount1 The delta of the balance of token1 of the pool, exact when negative, minimum when positive\n    function swap(\n        address recipient,\n        bool zeroForOne,\n        int256 amountSpecified,\n        uint160 sqrtPriceLimitX96,\n        bytes calldata data\n    ) external returns (int256 amount0, int256 amount1);\n\n    /// @notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback\n    /// @dev The caller of this method receives a callback in the form of IAstraCLFlashCallback.sol#astraCLFlashCallback\n    /// @dev Can be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling\n    /// with 0 amount{0,1} and sending the donation amount(s) from the callback\n    /// @param recipient The address which will receive the token0 and token1 amounts\n    /// @param amount0 The amount of token0 to send\n    /// @param amount1 The amount of token1 to send\n    /// @param data Any data to be passed through to the callback\n    function flash(address recipient, uint256 amount0, uint256 amount1, bytes calldata data) external;\n\n    /// @notice Increase the maximum number of price and liquidity observations that this pool will store\n    /// @dev This method is no-op if the pool already has an observationCardinalityNext greater than or equal to\n    /// the input observationCardinalityNext.\n    /// @param observationCardinalityNext The desired minimum number of observations for the pool to store\n    function increaseObservationCardinalityNext(uint16 observationCardinalityNext) external;\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Pool state that is not stored\n/// @notice Contains view functions to provide information about the pool that is computed rather than stored on the\n/// blockchain. The functions here may have variable gas costs.\ninterface IAstraCLPoolDerivedState {\n    /// @notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\n    /// @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing\n    /// the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,\n    /// you must call it with secondsAgos = [3600, 0].\n    /// @dev The time weighted average tick represents the geometric time weighted average price of the pool, in\n    /// log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\n    /// @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned\n    /// @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp\n    /// @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block\n    /// timestamp\n    function observe(\n        uint32[] calldata secondsAgos\n    ) external view returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s);\n\n    /// @notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\n    /// @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed.\n    /// I.e., snapshots cannot be compared if a position is not held for the entire period between when the first\n    /// snapshot is taken and the second snapshot is taken.\n    /// @param tickLower The lower tick of the range\n    /// @param tickUpper The upper tick of the range\n    /// @return tickCumulativeInside The snapshot of the tick accumulator for the range\n    /// @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range\n    /// @return secondsInside The snapshot of seconds per liquidity for the range\n    function snapshotCumulativesInside(\n        int24 tickLower,\n        int24 tickUpper\n    ) external view returns (int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside);\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Events emitted by a pool\n/// @notice Contains all events emitted by the pool\ninterface IAstraCLPoolEvents {\n    /// @notice Emitted exactly once by a pool when #initialize is first called on the pool\n    /// @dev Mint/Burn/Swap cannot be emitted by the pool before Initialize\n    /// @param sqrtPriceX96 The initial sqrt price of the pool, as a Q64.96\n    /// @param tick The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool\n    event Initialize(uint160 sqrtPriceX96, int24 tick);\n\n    /// @notice Emitted when liquidity is minted for a given position\n    /// @param sender The address that minted the liquidity\n    /// @param owner The owner of the position and recipient of any minted liquidity\n    /// @param tickLower The lower tick of the position\n    /// @param tickUpper The upper tick of the position\n    /// @param amount The amount of liquidity minted to the position range\n    /// @param amount0 How much token0 was required for the minted liquidity\n    /// @param amount1 How much token1 was required for the minted liquidity\n    event Mint(\n        address sender,\n        address indexed owner,\n        int24 indexed tickLower,\n        int24 indexed tickUpper,\n        uint128 amount,\n        uint256 amount0,\n        uint256 amount1\n    );\n\n    /// @notice Emitted when fees are collected by the owner of a position\n    /// @dev Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\n    /// @param owner The owner of the position for which fees are collected\n    /// @param tickLower The lower tick of the position\n    /// @param tickUpper The upper tick of the position\n    /// @param amount0 The amount of token0 fees collected\n    /// @param amount1 The amount of token1 fees collected\n    event Collect(\n        address indexed owner,\n        address recipient,\n        int24 indexed tickLower,\n        int24 indexed tickUpper,\n        uint128 amount0,\n        uint128 amount1\n    );\n\n    /// @notice Emitted when a position's liquidity is removed\n    /// @dev Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\n    /// @param owner The owner of the position for which liquidity is removed\n    /// @param tickLower The lower tick of the position\n    /// @param tickUpper The upper tick of the position\n    /// @param amount The amount of liquidity to remove\n    /// @param amount0 The amount of token0 withdrawn\n    /// @param amount1 The amount of token1 withdrawn\n    event Burn(\n        address indexed owner,\n        int24 indexed tickLower,\n        int24 indexed tickUpper,\n        uint128 amount,\n        uint256 amount0,\n        uint256 amount1\n    );\n\n    /// @notice Emitted by the pool for any swaps between token0 and token1\n    /// @param sender The address that initiated the swap call, and that received the callback\n    /// @param recipient The address that received the output of the swap\n    /// @param amount0 The delta of the token0 balance of the pool\n    /// @param amount1 The delta of the token1 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 price of the pool after the swap\n    event Swap(\n        address indexed sender,\n        address indexed recipient,\n        int256 amount0,\n        int256 amount1,\n        uint160 sqrtPriceX96,\n        uint128 liquidity,\n        int24 tick\n    );\n\n    /// @notice Emitted by the pool for any flashes of token0/token1\n    /// @param sender The address that initiated the swap call, and that received the callback\n    /// @param recipient The address that received the tokens from flash\n    /// @param amount0 The amount of token0 that was flashed\n    /// @param amount1 The amount of token1 that was flashed\n    /// @param paid0 The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\n    /// @param paid1 The amount of token1 paid for the flash, which can exceed the amount1 plus the fee\n    event Flash(\n        address indexed sender,\n        address indexed recipient,\n        uint256 amount0,\n        uint256 amount1,\n        uint256 paid0,\n        uint256 paid1\n    );\n\n    /// @notice Emitted by the pool for increases to the number of observations that can be stored\n    /// @dev observationCardinalityNext is not the observation cardinality until an observation is written at the index\n    /// just before a mint/swap/burn.\n    /// @param observationCardinalityNextOld The previous value of the next observation cardinality\n    /// @param observationCardinalityNextNew The updated value of the next observation cardinality\n    event IncreaseObservationCardinalityNext(\n        uint16 observationCardinalityNextOld,\n        uint16 observationCardinalityNextNew\n    );\n\n    /// @notice Emitted when the protocol fee is changed by the pool\n    /// @param feeProtocol0Old The previous value of the token0 protocol fee\n    /// @param feeProtocol1Old The previous value of the token1 protocol fee\n    /// @param feeProtocol0New The updated value of the token0 protocol fee\n    /// @param feeProtocol1New The updated value of the token1 protocol fee\n    event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New);\n\n    /// @notice Emitted when the collected protocol fees are withdrawn by the factory owner\n    /// @param sender The address that collects the protocol fees\n    /// @param recipient The address that receives the collected protocol fees\n    /// @param amount0 The amount of token0 protocol fees that is withdrawn\n    /// @param amount0 The amount of token1 protocol fees that is withdrawn\n    event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1);\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Pool state that never changes\n/// @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same values\ninterface IAstraCLPoolImmutables {\n    /// @notice The contract that deployed the pool, which must adhere to the IAstraCLFactory interface\n    /// @return The contract address\n    function factory() external view returns (address);\n\n    /// @notice The first of the two tokens of the pool, sorted by address\n    /// @return The token contract address\n    function token0() external view returns (address);\n\n    /// @notice The second of the two tokens of the pool, sorted by address\n    /// @return The token contract address\n    function token1() external view returns (address);\n\n    /// @notice The pool's fee in hundredths of a bip, i.e. 1e-6\n    /// @return The fee\n    function fee() external view returns (uint24);\n\n    /// @notice The pool tick spacing\n    /// @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive\n    /// e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...\n    /// This value is an int24 to avoid casting even though it is always positive.\n    /// @return The tick spacing\n    function tickSpacing() external view returns (int24);\n\n    /// @notice The maximum amount of position liquidity that can use any tick in the range\n    /// @dev This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and\n    /// also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\n    /// @return The max amount of liquidity per tick\n    function maxLiquidityPerTick() external view returns (uint128);\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Permissioned pool actions\n/// @notice Contains pool methods that may only be called by the factory owner\ninterface IAstraCLPoolOwnerActions {\n    /// @notice Set the denominator of the protocol's % share of the fees\n    /// @param feeProtocol0 new protocol fee for token0 of the pool\n    /// @param feeProtocol1 new protocol fee for token1 of the pool\n    function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) external;\n\n    /// @notice Collect the protocol fee accrued to the pool\n    /// @param recipient The address to which collected protocol fees should be sent\n    /// @param amount0Requested The maximum amount of token0 to send, can be 0 to collect fees in only token1\n    /// @param amount1Requested The maximum amount of token1 to send, can be 0 to collect fees in only token0\n    /// @return amount0 The protocol fee collected in token0\n    /// @return amount1 The protocol fee collected in token1\n    function collectProtocol(\n        address recipient,\n        uint128 amount0Requested,\n        uint128 amount1Requested\n    ) external returns (uint128 amount0, uint128 amount1);\n}\n"},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Pool state that can change\n/// @notice These methods compose the pool's state, and can change with any frequency including multiple times\n/// per transaction\ninterface IAstraCLPoolState {\n    /// @notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas\n    /// when accessed externally.\n    /// @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value\n    /// tick The current tick of the pool, i.e. according to the last tick transition that was run.\n    /// This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick\n    /// boundary.\n    /// observationIndex The index of the last oracle observation that was written,\n    /// observationCardinality The current maximum number of observations stored in the pool,\n    /// observationCardinalityNext The next maximum number of observations, to be updated when the observation.\n    /// feeProtocol The protocol fee for both tokens of the pool.\n    /// Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0\n    /// is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee.\n    /// unlocked Whether the pool is currently locked to reentrancy\n    function slot0()\n        external\n        view\n        returns (\n            uint160 sqrtPriceX96,\n            int24 tick,\n            uint16 observationIndex,\n            uint16 observationCardinality,\n            uint16 observationCardinalityNext,\n            uint8 feeProtocol,\n            bool unlocked\n        );\n\n    /// @notice The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\n    /// @dev This value can overflow the uint256\n    function feeGrowthGlobal0X128() external view returns (uint256);\n\n    /// @notice The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\n    /// @dev This value can overflow the uint256\n    function feeGrowthGlobal1X128() external view returns (uint256);\n\n    /// @notice The amounts of token0 and token1 that are owed to the protocol\n    /// @dev Protocol fees will never exceed uint128 max in either token\n    function protocolFees() external view returns (uint128 token0, uint128 token1);\n\n    /// @notice The currently in range liquidity available to the pool\n    /// @dev This value has no relationship to the total liquidity across all ticks\n    function liquidity() external view returns (uint128);\n\n    /// @notice Look up information about a specific tick in the pool\n    /// @param tick The tick to look up\n    /// @return liquidityGross the total amount of position liquidity that uses the pool either as tick lower or\n    /// tick upper,\n    /// liquidityNet how much liquidity changes when the pool price crosses the tick,\n    /// feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0,\n    /// feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1,\n    /// tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick\n    /// secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick,\n    /// secondsOutside the seconds spent on the other side of the tick from the current tick,\n    /// initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false.\n    /// Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0.\n    /// In addition, these values are only relative and must be used only in comparison to previous snapshots for\n    /// a specific position.\n    function ticks(\n        int24 tick\n    )\n        external\n        view\n        returns (\n            uint128 liquidityGross,\n            int128 liquidityNet,\n            uint256 feeGrowthOutside0X128,\n            uint256 feeGrowthOutside1X128,\n            int56 tickCumulativeOutside,\n            uint160 secondsPerLiquidityOutsideX128,\n            uint32 secondsOutside,\n            bool initialized\n        );\n\n    /// @notice Returns 256 packed tick initialized boolean values. See TickBitmap for more information\n    function tickBitmap(int16 wordPosition) external view returns (uint256);\n\n    /// @notice Returns the information about a position by the position's key\n    /// @param key The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\n    /// @return _liquidity The amount of liquidity in the position,\n    /// Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke,\n    /// Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke,\n    /// Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke,\n    /// Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\n    function positions(\n        bytes32 key\n    )\n        external\n        view\n        returns (\n            uint128 _liquidity,\n            uint256 feeGrowthInside0LastX128,\n            uint256 feeGrowthInside1LastX128,\n            uint128 tokensOwed0,\n            uint128 tokensOwed1\n        );\n\n    /// @notice Returns data about a specific observation index\n    /// @param index The element of the observations array to fetch\n    /// @dev You most likely want to use #observe() instead of this method to get an observation as of some amount of time\n    /// ago, rather than at a specific index in the array.\n    /// @return blockTimestamp The timestamp of the observation,\n    /// Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,\n    /// Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp,\n    /// Returns initialized whether the observation has been initialized and the values are safe to use\n    function observations(\n        uint256 index\n    )\n        external\n        view\n        returns (\n            uint32 blockTimestamp,\n            int56 tickCumulative,\n            uint160 secondsPerLiquidityCumulativeX128,\n            bool initialized\n        );\n}\n"},"@airdao/astra-cl-core/contracts/libraries/BitMath.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title BitMath\n/// @dev This library provides functionality for computing bit properties of an unsigned integer\nlibrary BitMath {\n    /// @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    /// @dev The function satisfies the property:\n    ///     x >= 2**mostSignificantBit(x) and x < 2**(mostSignificantBit(x)+1)\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\n    function mostSignificantBit(uint256 x) internal pure returns (uint8 r) {\n        require(x > 0);\n\n        if (x >= 0x100000000000000000000000000000000) {\n            x >>= 128;\n            r += 128;\n        }\n        if (x >= 0x10000000000000000) {\n            x >>= 64;\n            r += 64;\n        }\n        if (x >= 0x100000000) {\n            x >>= 32;\n            r += 32;\n        }\n        if (x >= 0x10000) {\n            x >>= 16;\n            r += 16;\n        }\n        if (x >= 0x100) {\n            x >>= 8;\n            r += 8;\n        }\n        if (x >= 0x10) {\n            x >>= 4;\n            r += 4;\n        }\n        if (x >= 0x4) {\n            x >>= 2;\n            r += 2;\n        }\n        if (x >= 0x2) r += 1;\n    }\n\n    /// @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    /// @dev The function satisfies the property:\n    ///     (x & 2**leastSignificantBit(x)) != 0 and (x & (2**(leastSignificantBit(x)) - 1)) == 0)\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\n    function leastSignificantBit(uint256 x) internal pure returns (uint8 r) {\n        require(x > 0);\n\n        r = 255;\n        if (x & type(uint128).max > 0) {\n            r -= 128;\n        } else {\n            x >>= 128;\n        }\n        if (x & type(uint64).max > 0) {\n            r -= 64;\n        } else {\n            x >>= 64;\n        }\n        if (x & type(uint32).max > 0) {\n            r -= 32;\n        } else {\n            x >>= 32;\n        }\n        if (x & type(uint16).max > 0) {\n            r -= 16;\n        } else {\n            x >>= 16;\n        }\n        if (x & type(uint8).max > 0) {\n            r -= 8;\n        } else {\n            x >>= 8;\n        }\n        if (x & 0xf > 0) {\n            r -= 4;\n        } else {\n            x >>= 4;\n        }\n        if (x & 0x3 > 0) {\n            r -= 2;\n        } else {\n            x >>= 2;\n        }\n        if (x & 0x1 > 0) r -= 1;\n    }\n}\n"},"@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.4.0;\n\n/// @title FixedPoint128\n/// @notice A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)\nlibrary FixedPoint128 {\n    uint256 internal constant Q128 = 0x100000000000000000000000000000000;\n}\n"},"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.4.0;\n\n/// @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\nlibrary FixedPoint96 {\n    uint8 internal constant RESOLUTION = 96;\n    uint256 internal constant Q96 = 0x1000000000000000000000000;\n}\n"},"@airdao/astra-cl-core/contracts/libraries/FullMath.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity >=0.4.0 <0.8.0;\n\n/// @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\nlibrary FullMath {\n    /// @notice Calculates floor(a×b÷denominator) 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\n    function mulDiv(uint256 a, uint256 b, uint256 denominator) internal pure returns (uint256 result) {\n        // 512-bit multiply [prod1 prod0] = a * b\n        // Compute the product mod 2**256 and mod 2**256 - 1\n        // then use the Chinese Remainder Theorem to reconstruct\n        // the 512 bit result. The result is stored in two 256\n        // variables such that product = prod1 * 2**256 + prod0\n        uint256 prod0; // Least significant 256 bits of the product\n        uint256 prod1; // Most significant 256 bits of the product\n        assembly {\n            let mm := mulmod(a, b, not(0))\n            prod0 := mul(a, b)\n            prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n        }\n\n        // Handle non-overflow cases, 256 by 256 division\n        if (prod1 == 0) {\n            require(denominator > 0);\n            assembly {\n                result := div(prod0, denominator)\n            }\n            return result;\n        }\n\n        // Make sure the result is less than 2**256.\n        // Also prevents denominator == 0\n        require(denominator > prod1);\n\n        ///////////////////////////////////////////////\n        // 512 by 256 division.\n        ///////////////////////////////////////////////\n\n        // Make division exact by subtracting the remainder from [prod1 prod0]\n        // Compute remainder using mulmod\n        uint256 remainder;\n        assembly {\n            remainder := mulmod(a, b, denominator)\n        }\n        // Subtract 256 bit number from 512 bit number\n        assembly {\n            prod1 := sub(prod1, gt(remainder, prod0))\n            prod0 := sub(prod0, remainder)\n        }\n\n        // Factor powers of two out of denominator\n        // Compute largest power of two divisor of denominator.\n        // Always >= 1.\n        uint256 twos = -denominator & denominator;\n        // Divide denominator by power of two\n        assembly {\n            denominator := div(denominator, twos)\n        }\n\n        // Divide [prod1 prod0] by the factors of two\n        assembly {\n            prod0 := div(prod0, twos)\n        }\n        // Shift in bits from prod1 into prod0. For this we need\n        // to flip `twos` such that it is 2**256 / twos.\n        // If twos is zero, then it becomes one\n        assembly {\n            twos := add(div(sub(0, twos), twos), 1)\n        }\n        prod0 |= prod1 * twos;\n\n        // Invert denominator mod 2**256\n        // Now that denominator is an odd number, it has an inverse\n        // modulo 2**256 such that denominator * inv = 1 mod 2**256.\n        // Compute the inverse by starting with a seed that is correct\n        // correct for four bits. That is, denominator * inv = 1 mod 2**4\n        uint256 inv = (3 * denominator) ^ 2;\n        // Now use Newton-Raphson iteration to improve the precision.\n        // Thanks to Hensel's lifting lemma, this also works in modular\n        // arithmetic, doubling the correct bits in each step.\n        inv *= 2 - denominator * inv; // inverse mod 2**8\n        inv *= 2 - denominator * inv; // inverse mod 2**16\n        inv *= 2 - denominator * inv; // inverse mod 2**32\n        inv *= 2 - denominator * inv; // inverse mod 2**64\n        inv *= 2 - denominator * inv; // inverse mod 2**128\n        inv *= 2 - denominator * inv; // inverse mod 2**256\n\n        // Because the division is now exact we can divide by multiplying\n        // with the modular inverse of denominator. This will give us the\n        // correct result modulo 2**256. Since the precoditions guarantee\n        // that the outcome is less than 2**256, this is the final result.\n        // We don't need to compute the high bits of the result and prod1\n        // is no longer required.\n        result = prod0 * inv;\n        return result;\n    }\n\n    /// @notice Calculates ceil(a×b÷denominator) 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    function mulDivRoundingUp(uint256 a, uint256 b, uint256 denominator) internal pure returns (uint256 result) {\n        result = mulDiv(a, b, denominator);\n        if (mulmod(a, b, denominator) > 0) {\n            require(result < type(uint256).max);\n            result++;\n        }\n    }\n}\n"},"@airdao/astra-cl-core/contracts/libraries/LiquidityMath.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Math library for liquidity\nlibrary LiquidityMath {\n    /// @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\n    function addDelta(uint128 x, int128 y) internal pure returns (uint128 z) {\n        if (y < 0) {\n            require((z = x - uint128(-y)) < x, 'LS');\n        } else {\n            require((z = x + uint128(y)) >= x, 'LA');\n        }\n    }\n}\n"},"@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.0;\n\n/// @title Optimized overflow and underflow safe math operations\n/// @notice Contains methods for doing math operations that revert on overflow or underflow for minimal gas cost\nlibrary LowGasSafeMath {\n    /// @notice Returns x + y, reverts if sum overflows uint256\n    /// @param x The augend\n    /// @param y The addend\n    /// @return z The sum of x and y\n    function add(uint256 x, uint256 y) internal pure returns (uint256 z) {\n        require((z = x + y) >= x);\n    }\n\n    /// @notice Returns x - y, reverts if underflows\n    /// @param x The minuend\n    /// @param y The subtrahend\n    /// @return z The difference of x and y\n    function sub(uint256 x, uint256 y) internal pure returns (uint256 z) {\n        require((z = x - y) <= x);\n    }\n\n    /// @notice Returns x * y, reverts if overflows\n    /// @param x The multiplicand\n    /// @param y The multiplier\n    /// @return z The product of x and y\n    function mul(uint256 x, uint256 y) internal pure returns (uint256 z) {\n        require(x == 0 || (z = x * y) / x == y);\n    }\n\n    /// @notice Returns x + y, reverts if overflows or underflows\n    /// @param x The augend\n    /// @param y The addend\n    /// @return z The sum of x and y\n    function add(int256 x, int256 y) internal pure returns (int256 z) {\n        require((z = x + y) >= x == (y >= 0));\n    }\n\n    /// @notice Returns x - y, reverts if overflows or underflows\n    /// @param x The minuend\n    /// @param y The subtrahend\n    /// @return z The difference of x and y\n    function sub(int256 x, int256 y) internal pure returns (int256 z) {\n        require((z = x - y) <= x == (y >= 0));\n    }\n}\n"},"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Safe casting methods\n/// @notice Contains methods for safely casting between types\nlibrary SafeCast {\n    /// @notice Cast a uint256 to a uint160, revert on overflow\n    /// @param y The uint256 to be downcasted\n    /// @return z The downcasted integer, now type uint160\n    function toUint160(uint256 y) internal pure returns (uint160 z) {\n        require((z = uint160(y)) == y);\n    }\n\n    /// @notice Cast a int256 to a int128, revert on overflow or underflow\n    /// @param y The int256 to be downcasted\n    /// @return z The downcasted integer, now type int128\n    function toInt128(int256 y) internal pure returns (int128 z) {\n        require((z = int128(y)) == y);\n    }\n\n    /// @notice Cast a uint256 to a int256, revert on overflow\n    /// @param y The uint256 to be casted\n    /// @return z The casted integer, now type int256\n    function toInt256(uint256 y) internal pure returns (int256 z) {\n        require(y < 2 ** 255);\n        z = int256(y);\n    }\n}\n"},"@airdao/astra-cl-core/contracts/libraries/Tick.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\npragma solidity >=0.5.0 <0.8.0;\n\nimport './LowGasSafeMath.sol';\nimport './SafeCast.sol';\n\nimport './TickMath.sol';\nimport './LiquidityMath.sol';\n\n/// @title Tick\n/// @notice Contains functions for managing tick processes and relevant calculations\nlibrary Tick {\n    using LowGasSafeMath for int256;\n    using SafeCast for int256;\n\n    // info stored for each initialized individual tick\n    struct Info {\n        // the total position liquidity that references this tick\n        uint128 liquidityGross;\n        // amount of net liquidity added (subtracted) when tick is crossed from left to right (right to left),\n        int128 liquidityNet;\n        // fee growth per unit of liquidity on the _other_ side of this tick (relative to the current tick)\n        // only has relative meaning, not absolute — the value depends on when the tick is initialized\n        uint256 feeGrowthOutside0X128;\n        uint256 feeGrowthOutside1X128;\n        // the cumulative tick value on the other side of the tick\n        int56 tickCumulativeOutside;\n        // the seconds per unit of liquidity on the _other_ side of this tick (relative to the current tick)\n        // only has relative meaning, not absolute — the value depends on when the tick is initialized\n        uint160 secondsPerLiquidityOutsideX128;\n        // the seconds spent on the other side of the tick (relative to the current tick)\n        // only has relative meaning, not absolute — the value depends on when the tick is initialized\n        uint32 secondsOutside;\n        // true iff the tick is initialized, i.e. the value is exactly equivalent to the expression liquidityGross != 0\n        // these 8 bits are set to prevent fresh sstores when crossing newly initialized ticks\n        bool initialized;\n    }\n\n    /// @notice Derives max liquidity per tick from given tick spacing\n    /// @dev Executed within the pool constructor\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 The max liquidity per tick\n    function tickSpacingToMaxLiquidityPerTick(int24 tickSpacing) internal pure returns (uint128) {\n        int24 minTick = (TickMath.MIN_TICK / tickSpacing) * tickSpacing;\n        int24 maxTick = (TickMath.MAX_TICK / tickSpacing) * tickSpacing;\n        uint24 numTicks = uint24((maxTick - minTick) / tickSpacing) + 1;\n        return type(uint128).max / numTicks;\n    }\n\n    /// @notice Retrieves fee growth data\n    /// @param self The mapping containing all tick information for initialized ticks\n    /// @param tickLower The lower tick boundary of the position\n    /// @param tickUpper The upper tick boundary of the position\n    /// @param tickCurrent The current tick\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 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\n    function getFeeGrowthInside(\n        mapping(int24 => Tick.Info) storage self,\n        int24 tickLower,\n        int24 tickUpper,\n        int24 tickCurrent,\n        uint256 feeGrowthGlobal0X128,\n        uint256 feeGrowthGlobal1X128\n    ) internal view returns (uint256 feeGrowthInside0X128, uint256 feeGrowthInside1X128) {\n        Info storage lower = self[tickLower];\n        Info storage upper = self[tickUpper];\n\n        // calculate fee growth below\n        uint256 feeGrowthBelow0X128;\n        uint256 feeGrowthBelow1X128;\n        if (tickCurrent >= tickLower) {\n            feeGrowthBelow0X128 = lower.feeGrowthOutside0X128;\n            feeGrowthBelow1X128 = lower.feeGrowthOutside1X128;\n        } else {\n            feeGrowthBelow0X128 = feeGrowthGlobal0X128 - lower.feeGrowthOutside0X128;\n            feeGrowthBelow1X128 = feeGrowthGlobal1X128 - lower.feeGrowthOutside1X128;\n        }\n\n        // calculate fee growth above\n        uint256 feeGrowthAbove0X128;\n        uint256 feeGrowthAbove1X128;\n        if (tickCurrent < tickUpper) {\n            feeGrowthAbove0X128 = upper.feeGrowthOutside0X128;\n            feeGrowthAbove1X128 = upper.feeGrowthOutside1X128;\n        } else {\n            feeGrowthAbove0X128 = feeGrowthGlobal0X128 - upper.feeGrowthOutside0X128;\n            feeGrowthAbove1X128 = feeGrowthGlobal1X128 - upper.feeGrowthOutside1X128;\n        }\n\n        feeGrowthInside0X128 = feeGrowthGlobal0X128 - feeGrowthBelow0X128 - feeGrowthAbove0X128;\n        feeGrowthInside1X128 = feeGrowthGlobal1X128 - feeGrowthBelow1X128 - feeGrowthAbove1X128;\n    }\n\n    /// @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 tickCurrent The current tick\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 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    /// @param secondsPerLiquidityCumulativeX128 The all-time seconds per max(1, liquidity) of the pool\n    /// @param tickCumulative The tick * time elapsed since the pool was first initialized\n    /// @param time The current block timestamp cast to a uint32\n    /// @param upper true for updating a position's upper tick, or false for updating a position's lower tick\n    /// @param maxLiquidity The maximum liquidity allocation for a single tick\n    /// @return flipped Whether the tick was flipped from initialized to uninitialized, or vice versa\n    function update(\n        mapping(int24 => Tick.Info) storage self,\n        int24 tick,\n        int24 tickCurrent,\n        int128 liquidityDelta,\n        uint256 feeGrowthGlobal0X128,\n        uint256 feeGrowthGlobal1X128,\n        uint160 secondsPerLiquidityCumulativeX128,\n        int56 tickCumulative,\n        uint32 time,\n        bool upper,\n        uint128 maxLiquidity\n    ) internal returns (bool flipped) {\n        Tick.Info storage info = self[tick];\n\n        uint128 liquidityGrossBefore = info.liquidityGross;\n        uint128 liquidityGrossAfter = LiquidityMath.addDelta(liquidityGrossBefore, liquidityDelta);\n\n        require(liquidityGrossAfter <= maxLiquidity, 'LO');\n\n        flipped = (liquidityGrossAfter == 0) != (liquidityGrossBefore == 0);\n\n        if (liquidityGrossBefore == 0) {\n            // by convention, we assume that all growth before a tick was initialized happened _below_ the tick\n            if (tick <= tickCurrent) {\n                info.feeGrowthOutside0X128 = feeGrowthGlobal0X128;\n                info.feeGrowthOutside1X128 = feeGrowthGlobal1X128;\n                info.secondsPerLiquidityOutsideX128 = secondsPerLiquidityCumulativeX128;\n                info.tickCumulativeOutside = tickCumulative;\n                info.secondsOutside = time;\n            }\n            info.initialized = true;\n        }\n\n        info.liquidityGross = liquidityGrossAfter;\n\n        // when the lower (upper) tick is crossed left to right (right to left), liquidity must be added (removed)\n        info.liquidityNet = upper\n            ? int256(info.liquidityNet).sub(liquidityDelta).toInt128()\n            : int256(info.liquidityNet).add(liquidityDelta).toInt128();\n    }\n\n    /// @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\n    function clear(mapping(int24 => Tick.Info) storage self, int24 tick) internal {\n        delete self[tick];\n    }\n\n    /// @notice Transitions to next tick as needed by price movement\n    /// @param self The mapping containing all tick information for initialized ticks\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    /// @param secondsPerLiquidityCumulativeX128 The current seconds per liquidity\n    /// @param tickCumulative The tick * time elapsed since the pool was first initialized\n    /// @param time The current block.timestamp\n    /// @return liquidityNet The amount of liquidity added (subtracted) when tick is crossed from left to right (right to left)\n    function cross(\n        mapping(int24 => Tick.Info) storage self,\n        int24 tick,\n        uint256 feeGrowthGlobal0X128,\n        uint256 feeGrowthGlobal1X128,\n        uint160 secondsPerLiquidityCumulativeX128,\n        int56 tickCumulative,\n        uint32 time\n    ) internal returns (int128 liquidityNet) {\n        Tick.Info storage info = self[tick];\n        info.feeGrowthOutside0X128 = feeGrowthGlobal0X128 - info.feeGrowthOutside0X128;\n        info.feeGrowthOutside1X128 = feeGrowthGlobal1X128 - info.feeGrowthOutside1X128;\n        info.secondsPerLiquidityOutsideX128 = secondsPerLiquidityCumulativeX128 - info.secondsPerLiquidityOutsideX128;\n        info.tickCumulativeOutside = tickCumulative - info.tickCumulativeOutside;\n        info.secondsOutside = time - info.secondsOutside;\n        liquidityNet = info.liquidityNet;\n    }\n}\n"},"@airdao/astra-cl-core/contracts/libraries/TickBitmap.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\npragma solidity >=0.5.0;\n\nimport './BitMath.sol';\n\n/// @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.\nlibrary TickBitmap {\n    /// @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\n    function position(int24 tick) private pure returns (int16 wordPos, uint8 bitPos) {\n        wordPos = int16(tick >> 8);\n        bitPos = uint8(tick % 256);\n    }\n\n    /// @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\n    function flipTick(mapping(int16 => uint256) storage self, int24 tick, int24 tickSpacing) internal {\n        require(tick % tickSpacing == 0); // ensure that the tick is spaced\n        (int16 wordPos, uint8 bitPos) = position(tick / tickSpacing);\n        uint256 mask = 1 << bitPos;\n        self[wordPos] ^= mask;\n    }\n\n    /// @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\n    function nextInitializedTickWithinOneWord(\n        mapping(int16 => uint256) storage self,\n        int24 tick,\n        int24 tickSpacing,\n        bool lte\n    ) internal view returns (int24 next, bool initialized) {\n        int24 compressed = tick / tickSpacing;\n        if (tick < 0 && tick % tickSpacing != 0) compressed--; // round towards negative infinity\n\n        if (lte) {\n            (int16 wordPos, uint8 bitPos) = position(compressed);\n            // all the 1s at or to the right of the current bitPos\n            uint256 mask = (1 << bitPos) - 1 + (1 << bitPos);\n            uint256 masked = self[wordPos] & mask;\n\n            // if there are no initialized ticks to the right of or at the current tick, return rightmost in the word\n            initialized = masked != 0;\n            // overflow/underflow is possible, but prevented externally by limiting both tickSpacing and tick\n            next = initialized\n                ? (compressed - int24(bitPos - BitMath.mostSignificantBit(masked))) * tickSpacing\n                : (compressed - int24(bitPos)) * tickSpacing;\n        } else {\n            // start from the word of the next tick, since the current tick state doesn't matter\n            (int16 wordPos, uint8 bitPos) = position(compressed + 1);\n            // all the 1s at or to the left of the bitPos\n            uint256 mask = ~((1 << bitPos) - 1);\n            uint256 masked = self[wordPos] & mask;\n\n            // if there are no initialized ticks to the left of the current tick, return leftmost in the word\n            initialized = masked != 0;\n            // overflow/underflow is possible, but prevented externally by limiting both tickSpacing and tick\n            next = initialized\n                ? (compressed + 1 + int24(BitMath.leastSignificantBit(masked) - bitPos)) * tickSpacing\n                : (compressed + 1 + int24(type(uint8).max - bitPos)) * tickSpacing;\n        }\n    }\n}\n"},"@airdao/astra-cl-core/contracts/libraries/TickMath.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0 <0.8.0;\n\n/// @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\nlibrary TickMath {\n    /// @dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128\n    int24 internal constant MIN_TICK = -887272;\n    /// @dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128\n    int24 internal constant MAX_TICK = -MIN_TICK;\n\n    /// @dev The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK)\n    uint160 internal constant MIN_SQRT_RATIO = 4295128739;\n    /// @dev The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK)\n    uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;\n\n    /// @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 ratio of the two assets (token1/token0)\n    /// at the given tick\n    function getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {\n        uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));\n        require(absTick <= uint256(MAX_TICK), 'T');\n\n        uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;\n        if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;\n        if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;\n        if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;\n        if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;\n        if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;\n        if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;\n        if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;\n        if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;\n        if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;\n        if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;\n        if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;\n        if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;\n        if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;\n        if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;\n        if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;\n        if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;\n        if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;\n        if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;\n        if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;\n\n        if (tick > 0) ratio = type(uint256).max / ratio;\n\n        // this divides by 1<<32 rounding up to go from a Q128.128 to a Q128.96.\n        // we then downcast because we know the result always fits within 160 bits due to our tick input constraint\n        // we round up in the division so getTickAtSqrtRatio of the output price is always consistent\n        sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));\n    }\n\n    /// @notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio\n    /// @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\n    /// ever return.\n    /// @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96\n    /// @return tick The greatest tick for which the ratio is less than or equal to the input ratio\n    function getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {\n        // second inequality must be < because the price can never reach the price at the max tick\n        require(sqrtPriceX96 >= MIN_SQRT_RATIO && sqrtPriceX96 < MAX_SQRT_RATIO, 'R');\n        uint256 ratio = uint256(sqrtPriceX96) << 32;\n\n        uint256 r = ratio;\n        uint256 msb = 0;\n\n        assembly {\n            let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(5, gt(r, 0xFFFFFFFF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(4, gt(r, 0xFFFF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(3, gt(r, 0xFF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(2, gt(r, 0xF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(1, gt(r, 0x3))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := gt(r, 0x1)\n            msb := or(msb, f)\n        }\n\n        if (msb >= 128) r = ratio >> (msb - 127);\n        else r = ratio << (127 - msb);\n\n        int256 log_2 = (int256(msb) - 128) << 64;\n\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(63, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(62, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(61, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(60, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(59, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(58, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(57, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(56, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(55, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(54, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(53, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(52, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(51, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(50, f))\n        }\n\n        int256 log_sqrt10001 = log_2 * 255738958999603826347141; // 128.128 number\n\n        int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);\n        int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);\n\n        tick = tickLow == tickHi\n            ? tickLow\n            : getSqrtRatioAtTick(tickHi) <= sqrtPriceX96\n                ? tickHi\n                : tickLow;\n    }\n}\n"},"@airdao/astra-cl-core/contracts/libraries/UnsafeMath.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @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\nlibrary UnsafeMath {\n    /// @notice Returns ceil(x / y)\n    /// @dev division by 0 has unspecified behavior, and must be checked externally\n    /// @param x The dividend\n    /// @param y The divisor\n    /// @return z The quotient, ceil(x / y)\n    function divRoundingUp(uint256 x, uint256 y) internal pure returns (uint256 z) {\n        assembly {\n            z := add(div(x, y), gt(mod(x, y), 0))\n        }\n    }\n}\n"},"@openzeppelin/contracts/cryptography/ECDSA.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSA {\n    /**\n     * @dev Returns the address that signed a hashed message (`hash`) with\n     * `signature`. This address can then be used for verification purposes.\n     *\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n     * this function rejects them by requiring the `s` value to be in the lower\n     * half order, and the `v` value to be either 27 or 28.\n     *\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n     * verification to be secure: it is possible to craft signatures that\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n     * this is by receiving a hash of the original message (which may otherwise\n     * be too long), and then calling {toEthSignedMessageHash} on it.\n     */\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n        // Check the signature length\n        if (signature.length != 65) {\n            revert(\"ECDSA: invalid signature length\");\n        }\n\n        // Divide the signature in r, s and v variables\n        bytes32 r;\n        bytes32 s;\n        uint8 v;\n\n        // ecrecover takes the signature parameters, and the only way to get them\n        // currently is to use assembly.\n        // solhint-disable-next-line no-inline-assembly\n        assembly {\n            r := mload(add(signature, 0x20))\n            s := mload(add(signature, 0x40))\n            v := byte(0, mload(add(signature, 0x60)))\n        }\n\n        return recover(hash, v, r, s);\n    }\n\n    /**\n     * @dev Overload of {ECDSA-recover-bytes32-bytes-} that receives the `v`,\n     * `r` and `s` signature fields separately.\n     */\n    function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n        // the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n        //\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n        // these malleable signatures as well.\n        require(uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, \"ECDSA: invalid signature 's' value\");\n        require(v == 27 || v == 28, \"ECDSA: invalid signature 'v' value\");\n\n        // If the signature is valid (and not malleable), return the signer address\n        address signer = ecrecover(hash, v, r, s);\n        require(signer != address(0), \"ECDSA: invalid signature\");\n\n        return signer;\n    }\n\n    /**\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\n     * replicates the behavior of the\n     * https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign[`eth_sign`]\n     * JSON-RPC method.\n     *\n     * See {recover}.\n     */\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\n        // 32 is the length in bytes of hash,\n        // enforced by the type signature above\n        return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", hash));\n    }\n}\n"},"@openzeppelin/contracts/drafts/EIP712.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n *\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\n *\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n * ({_hashTypedDataV4}).\n *\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n * the chain id to protect against replay attacks on an eventual fork of the chain.\n *\n * NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n *\n * _Available since v3.4._\n */\nabstract contract EIP712 {\n    /* solhint-disable var-name-mixedcase */\n    // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\n    // invalidate the cached domain separator if the chain id changes.\n    bytes32 private immutable _CACHED_DOMAIN_SEPARATOR;\n    uint256 private immutable _CACHED_CHAIN_ID;\n\n    bytes32 private immutable _HASHED_NAME;\n    bytes32 private immutable _HASHED_VERSION;\n    bytes32 private immutable _TYPE_HASH;\n    /* solhint-enable var-name-mixedcase */\n\n    /**\n     * @dev Initializes the domain separator and parameter caches.\n     *\n     * The meaning of `name` and `version` is specified in\n     * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n     *\n     * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n     * - `version`: the current major version of the signing domain.\n     *\n     * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n     * contract upgrade].\n     */\n    constructor(string memory name, string memory version) {\n        bytes32 hashedName = keccak256(bytes(name));\n        bytes32 hashedVersion = keccak256(bytes(version));\n        bytes32 typeHash = keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\");\n        _HASHED_NAME = hashedName;\n        _HASHED_VERSION = hashedVersion;\n        _CACHED_CHAIN_ID = _getChainId();\n        _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(typeHash, hashedName, hashedVersion);\n        _TYPE_HASH = typeHash;\n    }\n\n    /**\n     * @dev Returns the domain separator for the current chain.\n     */\n    function _domainSeparatorV4() internal view virtual returns (bytes32) {\n        if (_getChainId() == _CACHED_CHAIN_ID) {\n            return _CACHED_DOMAIN_SEPARATOR;\n        } else {\n            return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION);\n        }\n    }\n\n    function _buildDomainSeparator(bytes32 typeHash, bytes32 name, bytes32 version) private view returns (bytes32) {\n        return keccak256(\n            abi.encode(\n                typeHash,\n                name,\n                version,\n                _getChainId(),\n                address(this)\n            )\n        );\n    }\n\n    /**\n     * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n     * function returns the hash of the fully encoded EIP712 message for this domain.\n     *\n     * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n     *\n     * ```solidity\n     * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n     *     keccak256(\"Mail(address to,string contents)\"),\n     *     mailTo,\n     *     keccak256(bytes(mailContents))\n     * )));\n     * address signer = ECDSA.recover(digest, signature);\n     * ```\n     */\n    function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\n        return keccak256(abi.encodePacked(\"\\x19\\x01\", _domainSeparatorV4(), structHash));\n    }\n\n    function _getChainId() private view returns (uint256 chainId) {\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\n        // solhint-disable-next-line no-inline-assembly\n        assembly {\n            chainId := chainid()\n        }\n    }\n}\n"},"@openzeppelin/contracts/drafts/ERC20Permit.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.5 <0.8.0;\n\nimport \"../token/ERC20/ERC20.sol\";\nimport \"./IERC20Permit.sol\";\nimport \"../cryptography/ECDSA.sol\";\nimport \"../utils/Counters.sol\";\nimport \"./EIP712.sol\";\n\n/**\n * @dev Implementation of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n *\n * _Available since v3.4._\n */\nabstract contract ERC20Permit is ERC20, IERC20Permit, EIP712 {\n    using Counters for Counters.Counter;\n\n    mapping (address => Counters.Counter) private _nonces;\n\n    // solhint-disable-next-line var-name-mixedcase\n    bytes32 private immutable _PERMIT_TYPEHASH = keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\");\n\n    /**\n     * @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\"1\"`.\n     *\n     * It's a good idea to use the same `name` that is defined as the ERC20 token name.\n     */\n    constructor(string memory name) EIP712(name, \"1\") {\n    }\n\n    /**\n     * @dev See {IERC20Permit-permit}.\n     */\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public virtual override {\n        // solhint-disable-next-line not-rely-on-time\n        require(block.timestamp <= deadline, \"ERC20Permit: expired deadline\");\n\n        bytes32 structHash = keccak256(\n            abi.encode(\n                _PERMIT_TYPEHASH,\n                owner,\n                spender,\n                value,\n                _nonces[owner].current(),\n                deadline\n            )\n        );\n\n        bytes32 hash = _hashTypedDataV4(structHash);\n\n        address signer = ECDSA.recover(hash, v, r, s);\n        require(signer == owner, \"ERC20Permit: invalid signature\");\n\n        _nonces[owner].increment();\n        _approve(owner, spender, value);\n    }\n\n    /**\n     * @dev See {IERC20Permit-nonces}.\n     */\n    function nonces(address owner) public view override returns (uint256) {\n        return _nonces[owner].current();\n    }\n\n    /**\n     * @dev See {IERC20Permit-DOMAIN_SEPARATOR}.\n     */\n    // solhint-disable-next-line func-name-mixedcase\n    function DOMAIN_SEPARATOR() external view override returns (bytes32) {\n        return _domainSeparatorV4();\n    }\n}\n"},"@openzeppelin/contracts/drafts/IERC20Permit.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/**\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n */\ninterface IERC20Permit {\n    /**\n     * @dev Sets `value` as the allowance of `spender` over `owner`'s tokens,\n     * given `owner`'s signed approval.\n     *\n     * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n     * ordering also apply here.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     * - `deadline` must be a timestamp in the future.\n     * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n     * over the EIP712-formatted function arguments.\n     * - the signature must use ``owner``'s current nonce (see {nonces}).\n     *\n     * For more information on the signature format, see the\n     * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n     * section].\n     */\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\n\n    /**\n     * @dev Returns the current nonce for `owner`. This value must be\n     * included whenever a signature is generated for {permit}.\n     *\n     * Every successful call to {permit} increases ``owner``'s nonce by one. This\n     * prevents a signature from being used multiple times.\n     */\n    function nonces(address owner) external view returns (uint256);\n\n    /**\n     * @dev Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}.\n     */\n    // solhint-disable-next-line func-name-mixedcase\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts may inherit from this and call {_registerInterface} to declare\n * their support of an interface.\n */\nabstract contract ERC165 is IERC165 {\n    /*\n     * bytes4(keccak256('supportsInterface(bytes4)')) == 0x01ffc9a7\n     */\n    bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7;\n\n    /**\n     * @dev Mapping of interface ids to whether or not it's supported.\n     */\n    mapping(bytes4 => bool) private _supportedInterfaces;\n\n    constructor () {\n        // Derived contracts need only register support for their own interfaces,\n        // we register support for ERC165 itself here\n        _registerInterface(_INTERFACE_ID_ERC165);\n    }\n\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     *\n     * Time complexity O(1), guaranteed to always use less than 30 000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return _supportedInterfaces[interfaceId];\n    }\n\n    /**\n     * @dev Registers the contract as an implementer of the interface defined by\n     * `interfaceId`. Support of the actual ERC165 interface is automatic and\n     * registering its interface id is not required.\n     *\n     * See {IERC165-supportsInterface}.\n     *\n     * Requirements:\n     *\n     * - `interfaceId` cannot be the ERC165 invalid interface (`0xffffffff`).\n     */\n    function _registerInterface(bytes4 interfaceId) internal virtual {\n        require(interfaceId != 0xffffffff, \"ERC165: invalid interface id\");\n        _supportedInterfaces[interfaceId] = true;\n    }\n}\n"},"@openzeppelin/contracts/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n    /**\n     * @dev Returns true if this contract implements the interface defined by\n     * `interfaceId`. See the corresponding\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n     * to learn more about how these ids are created.\n     *\n     * This function call must use less than 30 000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts/math/SafeMath.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeMath {\n    /**\n     * @dev Returns the addition of two unsigned integers, with an overflow flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        uint256 c = a + b;\n        if (c < a) return (false, 0);\n        return (true, c);\n    }\n\n    /**\n     * @dev Returns the substraction of two unsigned integers, with an overflow flag.\n     *\n     * _Available since v3.4._\n     */\n    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        if (b > a) return (false, 0);\n        return (true, a - b);\n    }\n\n    /**\n     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n        // benefit is lost if 'b' is also tested.\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n        if (a == 0) return (true, 0);\n        uint256 c = a * b;\n        if (c / a != b) return (false, 0);\n        return (true, c);\n    }\n\n    /**\n     * @dev Returns the division of two unsigned integers, with a division by zero flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        if (b == 0) return (false, 0);\n        return (true, a / b);\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        if (b == 0) return (false, 0);\n        return (true, a % b);\n    }\n\n    /**\n     * @dev Returns the addition of two unsigned integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `+` operator.\n     *\n     * Requirements:\n     *\n     * - Addition cannot overflow.\n     */\n    function add(uint256 a, uint256 b) internal pure returns (uint256) {\n        uint256 c = a + b;\n        require(c >= a, \"SafeMath: addition overflow\");\n        return c;\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, reverting on\n     * overflow (when the result is negative).\n     *\n     * Counterpart to Solidity's `-` operator.\n     *\n     * Requirements:\n     *\n     * - Subtraction cannot overflow.\n     */\n    function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n        require(b <= a, \"SafeMath: subtraction overflow\");\n        return a - b;\n    }\n\n    /**\n     * @dev Returns the multiplication of two unsigned integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `*` operator.\n     *\n     * Requirements:\n     *\n     * - Multiplication cannot overflow.\n     */\n    function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n        if (a == 0) return 0;\n        uint256 c = a * b;\n        require(c / a == b, \"SafeMath: multiplication overflow\");\n        return c;\n    }\n\n    /**\n     * @dev Returns the integer division of two unsigned integers, reverting on\n     * division by zero. The result is rounded towards zero.\n     *\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\n     * uses an invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function div(uint256 a, uint256 b) internal pure returns (uint256) {\n        require(b > 0, \"SafeMath: division by zero\");\n        return a / b;\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n     * reverting when dividing by zero.\n     *\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\n     * invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n        require(b > 0, \"SafeMath: modulo by zero\");\n        return a % b;\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n     * overflow (when the result is negative).\n     *\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\n     * message unnecessarily. For custom revert reasons use {trySub}.\n     *\n     * Counterpart to Solidity's `-` operator.\n     *\n     * Requirements:\n     *\n     * - Subtraction cannot overflow.\n     */\n    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n        require(b <= a, errorMessage);\n        return a - b;\n    }\n\n    /**\n     * @dev Returns the integer division of two unsigned integers, reverting with custom message on\n     * division by zero. The result is rounded towards zero.\n     *\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\n     * message unnecessarily. For custom revert reasons use {tryDiv}.\n     *\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\n     * uses an invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n        require(b > 0, errorMessage);\n        return a / b;\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n     * reverting with custom message when dividing by zero.\n     *\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\n     * message unnecessarily. For custom revert reasons use {tryMod}.\n     *\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\n     * invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n        require(b > 0, errorMessage);\n        return a % b;\n    }\n}\n"},"@openzeppelin/contracts/math/SignedSafeMath.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @title SignedSafeMath\n * @dev Signed math operations with safety checks that revert on error.\n */\nlibrary SignedSafeMath {\n    int256 constant private _INT256_MIN = -2**255;\n\n    /**\n     * @dev Returns the multiplication of two signed integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `*` operator.\n     *\n     * Requirements:\n     *\n     * - Multiplication cannot overflow.\n     */\n    function mul(int256 a, int256 b) internal pure returns (int256) {\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n        // benefit is lost if 'b' is also tested.\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n        if (a == 0) {\n            return 0;\n        }\n\n        require(!(a == -1 && b == _INT256_MIN), \"SignedSafeMath: multiplication overflow\");\n\n        int256 c = a * b;\n        require(c / a == b, \"SignedSafeMath: multiplication overflow\");\n\n        return c;\n    }\n\n    /**\n     * @dev Returns the integer division of two signed integers. Reverts on\n     * division by zero. The result is rounded towards zero.\n     *\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\n     * uses an invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function div(int256 a, int256 b) internal pure returns (int256) {\n        require(b != 0, \"SignedSafeMath: division by zero\");\n        require(!(b == -1 && a == _INT256_MIN), \"SignedSafeMath: division overflow\");\n\n        int256 c = a / b;\n\n        return c;\n    }\n\n    /**\n     * @dev Returns the subtraction of two signed integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `-` operator.\n     *\n     * Requirements:\n     *\n     * - Subtraction cannot overflow.\n     */\n    function sub(int256 a, int256 b) internal pure returns (int256) {\n        int256 c = a - b;\n        require((b >= 0 && c <= a) || (b < 0 && c > a), \"SignedSafeMath: subtraction overflow\");\n\n        return c;\n    }\n\n    /**\n     * @dev Returns the addition of two signed integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `+` operator.\n     *\n     * Requirements:\n     *\n     * - Addition cannot overflow.\n     */\n    function add(int256 a, int256 b) internal pure returns (int256) {\n        int256 c = a + b;\n        require((b >= 0 && c >= a) || (b < 0 && c < a), \"SignedSafeMath: addition overflow\");\n\n        return c;\n    }\n}\n"},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"../../utils/Context.sol\";\nimport \"./IERC20.sol\";\nimport \"../../math/SafeMath.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin guidelines: functions revert instead\n * of returning `false` on failure. This behavior is nonetheless conventional\n * and does not conflict with the expectations of ERC20 applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20 {\n    using SafeMath for uint256;\n\n    mapping (address => uint256) private _balances;\n\n    mapping (address => mapping (address => uint256)) private _allowances;\n\n    uint256 private _totalSupply;\n\n    string private _name;\n    string private _symbol;\n    uint8 private _decimals;\n\n    /**\n     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n     * a default value of 18.\n     *\n     * To select a different value for {decimals}, use {_setupDecimals}.\n     *\n     * All three of these values are immutable: they can only be set once during\n     * construction.\n     */\n    constructor (string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n        _decimals = 18;\n    }\n\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() public view virtual returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev Returns the symbol of the token, usually a shorter version of the\n     * name.\n     */\n    function symbol() public view virtual returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev Returns the number of decimals used to get its user representation.\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\n     * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n     *\n     * Tokens usually opt for a value of 18, imitating the relationship between\n     * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n     * called.\n     *\n     * NOTE: This information is only used for _display_ purposes: it in\n     * no way affects any of the arithmetic of the contract, including\n     * {IERC20-balanceOf} and {IERC20-transfer}.\n     */\n    function decimals() public view virtual returns (uint8) {\n        return _decimals;\n    }\n\n    /**\n     * @dev See {IERC20-totalSupply}.\n     */\n    function totalSupply() public view virtual override returns (uint256) {\n        return _totalSupply;\n    }\n\n    /**\n     * @dev See {IERC20-balanceOf}.\n     */\n    function balanceOf(address account) public view virtual override returns (uint256) {\n        return _balances[account];\n    }\n\n    /**\n     * @dev See {IERC20-transfer}.\n     *\n     * Requirements:\n     *\n     * - `recipient` cannot be the zero address.\n     * - the caller must have a balance of at least `amount`.\n     */\n    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\n        _transfer(_msgSender(), recipient, amount);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-allowance}.\n     */\n    function allowance(address owner, address spender) public view virtual override returns (uint256) {\n        return _allowances[owner][spender];\n    }\n\n    /**\n     * @dev See {IERC20-approve}.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function approve(address spender, uint256 amount) public virtual override returns (bool) {\n        _approve(_msgSender(), spender, amount);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-transferFrom}.\n     *\n     * Emits an {Approval} event indicating the updated allowance. This is not\n     * required by the EIP. See the note at the beginning of {ERC20}.\n     *\n     * Requirements:\n     *\n     * - `sender` and `recipient` cannot be the zero address.\n     * - `sender` must have a balance of at least `amount`.\n     * - the caller must have allowance for ``sender``'s tokens of at least\n     * `amount`.\n     */\n    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {\n        _transfer(sender, recipient, amount);\n        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \"ERC20: transfer amount exceeds allowance\"));\n        return true;\n    }\n\n    /**\n     * @dev Atomically increases the allowance granted to `spender` by the caller.\n     *\n     * This is an alternative to {approve} that can be used as a mitigation for\n     * problems described in {IERC20-approve}.\n     *\n     * Emits an {Approval} event indicating the updated allowance.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\n        return true;\n    }\n\n    /**\n     * @dev Atomically decreases the allowance granted to `spender` by the caller.\n     *\n     * This is an alternative to {approve} that can be used as a mitigation for\n     * problems described in {IERC20-approve}.\n     *\n     * Emits an {Approval} event indicating the updated allowance.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     * - `spender` must have allowance for the caller of at least\n     * `subtractedValue`.\n     */\n    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \"ERC20: decreased allowance below zero\"));\n        return true;\n    }\n\n    /**\n     * @dev Moves tokens `amount` from `sender` to `recipient`.\n     *\n     * This is internal function is equivalent to {transfer}, and can be used to\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\n     *\n     * Emits a {Transfer} event.\n     *\n     * Requirements:\n     *\n     * - `sender` cannot be the zero address.\n     * - `recipient` cannot be the zero address.\n     * - `sender` must have a balance of at least `amount`.\n     */\n    function _transfer(address sender, address recipient, uint256 amount) internal virtual {\n        require(sender != address(0), \"ERC20: transfer from the zero address\");\n        require(recipient != address(0), \"ERC20: transfer to the zero address\");\n\n        _beforeTokenTransfer(sender, recipient, amount);\n\n        _balances[sender] = _balances[sender].sub(amount, \"ERC20: transfer amount exceeds balance\");\n        _balances[recipient] = _balances[recipient].add(amount);\n        emit Transfer(sender, recipient, amount);\n    }\n\n    /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n     * the total supply.\n     *\n     * Emits a {Transfer} event with `from` set to the zero address.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     */\n    function _mint(address account, uint256 amount) internal virtual {\n        require(account != address(0), \"ERC20: mint to the zero address\");\n\n        _beforeTokenTransfer(address(0), account, amount);\n\n        _totalSupply = _totalSupply.add(amount);\n        _balances[account] = _balances[account].add(amount);\n        emit Transfer(address(0), account, amount);\n    }\n\n    /**\n     * @dev Destroys `amount` tokens from `account`, reducing the\n     * total supply.\n     *\n     * Emits a {Transfer} event with `to` set to the zero address.\n     *\n     * Requirements:\n     *\n     * - `account` cannot be the zero address.\n     * - `account` must have at least `amount` tokens.\n     */\n    function _burn(address account, uint256 amount) internal virtual {\n        require(account != address(0), \"ERC20: burn from the zero address\");\n\n        _beforeTokenTransfer(account, address(0), amount);\n\n        _balances[account] = _balances[account].sub(amount, \"ERC20: burn amount exceeds balance\");\n        _totalSupply = _totalSupply.sub(amount);\n        emit Transfer(account, address(0), amount);\n    }\n\n    /**\n     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n     *\n     * This internal function is equivalent to `approve`, and can be used to\n     * e.g. set automatic allowances for certain subsystems, etc.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `owner` cannot be the zero address.\n     * - `spender` cannot be the zero address.\n     */\n    function _approve(address owner, address spender, uint256 amount) internal virtual {\n        require(owner != address(0), \"ERC20: approve from the zero address\");\n        require(spender != address(0), \"ERC20: approve to the zero address\");\n\n        _allowances[owner][spender] = amount;\n        emit Approval(owner, spender, amount);\n    }\n\n    /**\n     * @dev Sets {decimals} to a value other than the default one of 18.\n     *\n     * WARNING: This function should only be called from the constructor. Most\n     * applications that interact with token contracts will not expect\n     * {decimals} to ever change, and may work incorrectly if it does.\n     */\n    function _setupDecimals(uint8 decimals_) internal virtual {\n        _decimals = decimals_;\n    }\n\n    /**\n     * @dev Hook that is called before any transfer of tokens. This includes\n     * minting and burning.\n     *\n     * Calling conditions:\n     *\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n     * will be to transferred to `to`.\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\n     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n    /**\n     * @dev Returns the amount of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the amount of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address recipient, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\n     * allowance mechanism. `amount` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n"},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"../../utils/Context.sol\";\nimport \"./IERC721.sol\";\nimport \"./IERC721Metadata.sol\";\nimport \"./IERC721Enumerable.sol\";\nimport \"./IERC721Receiver.sol\";\nimport \"../../introspection/ERC165.sol\";\nimport \"../../math/SafeMath.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/EnumerableSet.sol\";\nimport \"../../utils/EnumerableMap.sol\";\nimport \"../../utils/Strings.sol\";\n\n/**\n * @title ERC721 Non-Fungible Token Standard basic implementation\n * @dev see https://eips.ethereum.org/EIPS/eip-721\n */\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable {\n    using SafeMath for uint256;\n    using Address for address;\n    using EnumerableSet for EnumerableSet.UintSet;\n    using EnumerableMap for EnumerableMap.UintToAddressMap;\n    using Strings for uint256;\n\n    // Equals to `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`\n    // which can be also obtained as `IERC721Receiver(0).onERC721Received.selector`\n    bytes4 private constant _ERC721_RECEIVED = 0x150b7a02;\n\n    // Mapping from holder address to their (enumerable) set of owned tokens\n    mapping (address => EnumerableSet.UintSet) private _holderTokens;\n\n    // Enumerable mapping from token ids to their owners\n    EnumerableMap.UintToAddressMap private _tokenOwners;\n\n    // Mapping from token ID to approved address\n    mapping (uint256 => address) private _tokenApprovals;\n\n    // Mapping from owner to operator approvals\n    mapping (address => mapping (address => bool)) private _operatorApprovals;\n\n    // Token name\n    string private _name;\n\n    // Token symbol\n    string private _symbol;\n\n    // Optional mapping for token URIs\n    mapping (uint256 => string) private _tokenURIs;\n\n    // Base URI\n    string private _baseURI;\n\n    /*\n     *     bytes4(keccak256('balanceOf(address)')) == 0x70a08231\n     *     bytes4(keccak256('ownerOf(uint256)')) == 0x6352211e\n     *     bytes4(keccak256('approve(address,uint256)')) == 0x095ea7b3\n     *     bytes4(keccak256('getApproved(uint256)')) == 0x081812fc\n     *     bytes4(keccak256('setApprovalForAll(address,bool)')) == 0xa22cb465\n     *     bytes4(keccak256('isApprovedForAll(address,address)')) == 0xe985e9c5\n     *     bytes4(keccak256('transferFrom(address,address,uint256)')) == 0x23b872dd\n     *     bytes4(keccak256('safeTransferFrom(address,address,uint256)')) == 0x42842e0e\n     *     bytes4(keccak256('safeTransferFrom(address,address,uint256,bytes)')) == 0xb88d4fde\n     *\n     *     => 0x70a08231 ^ 0x6352211e ^ 0x095ea7b3 ^ 0x081812fc ^\n     *        0xa22cb465 ^ 0xe985e9c5 ^ 0x23b872dd ^ 0x42842e0e ^ 0xb88d4fde == 0x80ac58cd\n     */\n    bytes4 private constant _INTERFACE_ID_ERC721 = 0x80ac58cd;\n\n    /*\n     *     bytes4(keccak256('name()')) == 0x06fdde03\n     *     bytes4(keccak256('symbol()')) == 0x95d89b41\n     *     bytes4(keccak256('tokenURI(uint256)')) == 0xc87b56dd\n     *\n     *     => 0x06fdde03 ^ 0x95d89b41 ^ 0xc87b56dd == 0x5b5e139f\n     */\n    bytes4 private constant _INTERFACE_ID_ERC721_METADATA = 0x5b5e139f;\n\n    /*\n     *     bytes4(keccak256('totalSupply()')) == 0x18160ddd\n     *     bytes4(keccak256('tokenOfOwnerByIndex(address,uint256)')) == 0x2f745c59\n     *     bytes4(keccak256('tokenByIndex(uint256)')) == 0x4f6ccce7\n     *\n     *     => 0x18160ddd ^ 0x2f745c59 ^ 0x4f6ccce7 == 0x780e9d63\n     */\n    bytes4 private constant _INTERFACE_ID_ERC721_ENUMERABLE = 0x780e9d63;\n\n    /**\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n     */\n    constructor (string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n\n        // register the supported interfaces to conform to ERC721 via ERC165\n        _registerInterface(_INTERFACE_ID_ERC721);\n        _registerInterface(_INTERFACE_ID_ERC721_METADATA);\n        _registerInterface(_INTERFACE_ID_ERC721_ENUMERABLE);\n    }\n\n    /**\n     * @dev See {IERC721-balanceOf}.\n     */\n    function balanceOf(address owner) public view virtual override returns (uint256) {\n        require(owner != address(0), \"ERC721: balance query for the zero address\");\n        return _holderTokens[owner].length();\n    }\n\n    /**\n     * @dev See {IERC721-ownerOf}.\n     */\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n        return _tokenOwners.get(tokenId, \"ERC721: owner query for nonexistent token\");\n    }\n\n    /**\n     * @dev See {IERC721Metadata-name}.\n     */\n    function name() public view virtual override returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-symbol}.\n     */\n    function symbol() public view virtual override returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-tokenURI}.\n     */\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n        require(_exists(tokenId), \"ERC721Metadata: URI query for nonexistent token\");\n\n        string memory _tokenURI = _tokenURIs[tokenId];\n        string memory base = baseURI();\n\n        // If there is no base URI, return the token URI.\n        if (bytes(base).length == 0) {\n            return _tokenURI;\n        }\n        // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).\n        if (bytes(_tokenURI).length > 0) {\n            return string(abi.encodePacked(base, _tokenURI));\n        }\n        // If there is a baseURI but no tokenURI, concatenate the tokenID to the baseURI.\n        return string(abi.encodePacked(base, tokenId.toString()));\n    }\n\n    /**\n    * @dev Returns the base URI set via {_setBaseURI}. This will be\n    * automatically added as a prefix in {tokenURI} to each token's URI, or\n    * to the token ID if no specific URI is set for that token ID.\n    */\n    function baseURI() public view virtual returns (string memory) {\n        return _baseURI;\n    }\n\n    /**\n     * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.\n     */\n    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {\n        return _holderTokens[owner].at(index);\n    }\n\n    /**\n     * @dev See {IERC721Enumerable-totalSupply}.\n     */\n    function totalSupply() public view virtual override returns (uint256) {\n        // _tokenOwners are indexed by tokenIds, so .length() returns the number of tokenIds\n        return _tokenOwners.length();\n    }\n\n    /**\n     * @dev See {IERC721Enumerable-tokenByIndex}.\n     */\n    function tokenByIndex(uint256 index) public view virtual override returns (uint256) {\n        (uint256 tokenId, ) = _tokenOwners.at(index);\n        return tokenId;\n    }\n\n    /**\n     * @dev See {IERC721-approve}.\n     */\n    function approve(address to, uint256 tokenId) public virtual override {\n        address owner = ERC721.ownerOf(tokenId);\n        require(to != owner, \"ERC721: approval to current owner\");\n\n        require(_msgSender() == owner || ERC721.isApprovedForAll(owner, _msgSender()),\n            \"ERC721: approve caller is not owner nor approved for all\"\n        );\n\n        _approve(to, tokenId);\n    }\n\n    /**\n     * @dev See {IERC721-getApproved}.\n     */\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\n        require(_exists(tokenId), \"ERC721: approved query for nonexistent token\");\n\n        return _tokenApprovals[tokenId];\n    }\n\n    /**\n     * @dev See {IERC721-setApprovalForAll}.\n     */\n    function setApprovalForAll(address operator, bool approved) public virtual override {\n        require(operator != _msgSender(), \"ERC721: approve to caller\");\n\n        _operatorApprovals[_msgSender()][operator] = approved;\n        emit ApprovalForAll(_msgSender(), operator, approved);\n    }\n\n    /**\n     * @dev See {IERC721-isApprovedForAll}.\n     */\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n        return _operatorApprovals[owner][operator];\n    }\n\n    /**\n     * @dev See {IERC721-transferFrom}.\n     */\n    function transferFrom(address from, address to, uint256 tokenId) public virtual override {\n        //solhint-disable-next-line max-line-length\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: transfer caller is not owner nor approved\");\n\n        _transfer(from, to, tokenId);\n    }\n\n    /**\n     * @dev See {IERC721-safeTransferFrom}.\n     */\n    function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {\n        safeTransferFrom(from, to, tokenId, \"\");\n    }\n\n    /**\n     * @dev See {IERC721-safeTransferFrom}.\n     */\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override {\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: transfer caller is not owner nor approved\");\n        _safeTransfer(from, to, tokenId, _data);\n    }\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n     *\n     * `_data` is additional data, it has no specified format and it is sent in call to `to`.\n     *\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual {\n        _transfer(from, to, tokenId);\n        require(_checkOnERC721Received(from, to, tokenId, _data), \"ERC721: transfer to non ERC721Receiver implementer\");\n    }\n\n    /**\n     * @dev Returns whether `tokenId` exists.\n     *\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n     *\n     * Tokens start existing when they are minted (`_mint`),\n     * and stop existing when they are burned (`_burn`).\n     */\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\n        return _tokenOwners.contains(tokenId);\n    }\n\n    /**\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n        require(_exists(tokenId), \"ERC721: operator query for nonexistent token\");\n        address owner = ERC721.ownerOf(tokenId);\n        return (spender == owner || getApproved(tokenId) == spender || ERC721.isApprovedForAll(owner, spender));\n    }\n\n    /**\n     * @dev Safely mints `tokenId` and transfers it to `to`.\n     *\n     * Requirements:\n     d*\n     * - `tokenId` must not exist.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _safeMint(address to, uint256 tokenId) internal virtual {\n        _safeMint(to, tokenId, \"\");\n    }\n\n    /**\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n     */\n    function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual {\n        _mint(to, tokenId);\n        require(_checkOnERC721Received(address(0), to, tokenId, _data), \"ERC721: transfer to non ERC721Receiver implementer\");\n    }\n\n    /**\n     * @dev Mints `tokenId` and transfers it to `to`.\n     *\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n     *\n     * Requirements:\n     *\n     * - `tokenId` must not exist.\n     * - `to` cannot be the zero address.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _mint(address to, uint256 tokenId) internal virtual {\n        require(to != address(0), \"ERC721: mint to the zero address\");\n        require(!_exists(tokenId), \"ERC721: token already minted\");\n\n        _beforeTokenTransfer(address(0), to, tokenId);\n\n        _holderTokens[to].add(tokenId);\n\n        _tokenOwners.set(tokenId, to);\n\n        emit Transfer(address(0), to, tokenId);\n    }\n\n    /**\n     * @dev Destroys `tokenId`.\n     * The approval is cleared when the token is burned.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _burn(uint256 tokenId) internal virtual {\n        address owner = ERC721.ownerOf(tokenId); // internal owner\n\n        _beforeTokenTransfer(owner, address(0), tokenId);\n\n        // Clear approvals\n        _approve(address(0), tokenId);\n\n        // Clear metadata (if any)\n        if (bytes(_tokenURIs[tokenId]).length != 0) {\n            delete _tokenURIs[tokenId];\n        }\n\n        _holderTokens[owner].remove(tokenId);\n\n        _tokenOwners.remove(tokenId);\n\n        emit Transfer(owner, address(0), tokenId);\n    }\n\n    /**\n     * @dev Transfers `tokenId` from `from` to `to`.\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must be owned by `from`.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _transfer(address from, address to, uint256 tokenId) internal virtual {\n        require(ERC721.ownerOf(tokenId) == from, \"ERC721: transfer of token that is not own\"); // internal owner\n        require(to != address(0), \"ERC721: transfer to the zero address\");\n\n        _beforeTokenTransfer(from, to, tokenId);\n\n        // Clear approvals from the previous owner\n        _approve(address(0), tokenId);\n\n        _holderTokens[from].remove(tokenId);\n        _holderTokens[to].add(tokenId);\n\n        _tokenOwners.set(tokenId, to);\n\n        emit Transfer(from, to, tokenId);\n    }\n\n    /**\n     * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {\n        require(_exists(tokenId), \"ERC721Metadata: URI set of nonexistent token\");\n        _tokenURIs[tokenId] = _tokenURI;\n    }\n\n    /**\n     * @dev Internal function to set the base URI for all token IDs. It is\n     * automatically added as a prefix to the value returned in {tokenURI},\n     * or to the token ID if {tokenURI} is empty.\n     */\n    function _setBaseURI(string memory baseURI_) internal virtual {\n        _baseURI = baseURI_;\n    }\n\n    /**\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n     * The call is not executed if the target address is not a contract.\n     *\n     * @param from address representing the previous owner of the given token ID\n     * @param to target address that will receive the tokens\n     * @param tokenId uint256 ID of the token to be transferred\n     * @param _data bytes optional data to send along with the call\n     * @return bool whether the call correctly returned the expected magic value\n     */\n    function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data)\n        private returns (bool)\n    {\n        if (!to.isContract()) {\n            return true;\n        }\n        bytes memory returndata = to.functionCall(abi.encodeWithSelector(\n            IERC721Receiver(to).onERC721Received.selector,\n            _msgSender(),\n            from,\n            tokenId,\n            _data\n        ), \"ERC721: transfer to non ERC721Receiver implementer\");\n        bytes4 retval = abi.decode(returndata, (bytes4));\n        return (retval == _ERC721_RECEIVED);\n    }\n\n    /**\n     * @dev Approve `to` to operate on `tokenId`\n     *\n     * Emits an {Approval} event.\n     */\n    function _approve(address to, uint256 tokenId) internal virtual {\n        _tokenApprovals[tokenId] = to;\n        emit Approval(ERC721.ownerOf(tokenId), to, tokenId); // internal owner\n    }\n\n    /**\n     * @dev Hook that is called before any token transfer. This includes minting\n     * and burning.\n     *\n     * Calling conditions:\n     *\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n     * transferred to `to`.\n     * - When `from` is zero, `tokenId` will be minted for `to`.\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual { }\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"../../introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 compliant contract.\n */\ninterface IERC721 is IERC165 {\n    /**\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n    /**\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n     */\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n    /**\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n     */\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n    /**\n     * @dev Returns the number of tokens in ``owner``'s account.\n     */\n    function balanceOf(address owner) external view returns (uint256 balance);\n\n    /**\n     * @dev Returns the owner of the `tokenId` token.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function ownerOf(uint256 tokenId) external view returns (address owner);\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function safeTransferFrom(address from, address to, uint256 tokenId) external;\n\n    /**\n     * @dev Transfers `tokenId` token from `from` to `to`.\n     *\n     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must be owned by `from`.\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address from, address to, uint256 tokenId) external;\n\n    /**\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n     * The approval is cleared when the token is transferred.\n     *\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n     *\n     * Requirements:\n     *\n     * - The caller must own the token or be an approved operator.\n     * - `tokenId` must exist.\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address to, uint256 tokenId) external;\n\n    /**\n     * @dev Returns the account approved for `tokenId` token.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function getApproved(uint256 tokenId) external view returns (address operator);\n\n    /**\n     * @dev Approve or remove `operator` as an operator for the caller.\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n     *\n     * Requirements:\n     *\n     * - The `operator` cannot be the caller.\n     *\n     * Emits an {ApprovalForAll} event.\n     */\n    function setApprovalForAll(address operator, bool _approved) external;\n\n    /**\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n     *\n     * See {setApprovalForAll}\n     */\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\n\n    /**\n      * @dev Safely transfers `tokenId` token from `from` to `to`.\n      *\n      * Requirements:\n      *\n      * - `from` cannot be the zero address.\n      * - `to` cannot be the zero address.\n      * - `tokenId` token must exist and be owned by `from`.\n      * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n      * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n      *\n      * Emits a {Transfer} event.\n      */\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"./IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Enumerable is IERC721 {\n\n    /**\n     * @dev Returns the total amount of tokens stored by the contract.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n     * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\n     */\n    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);\n\n    /**\n     * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n     * Use along with {totalSupply} to enumerate all tokens.\n     */\n    function tokenByIndex(uint256 index) external view returns (uint256);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"./IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Metadata is IERC721 {\n\n    /**\n     * @dev Returns the token collection name.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the token collection symbol.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n     */\n    function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 asset contracts.\n */\ninterface IERC721Receiver {\n    /**\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n     * by `operator` from `from`, this function is called.\n     *\n     * It must return its Solidity selector to confirm the token transfer.\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n     *\n     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.\n     */\n    function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize, which returns 0 for contracts in\n        // construction, since the code is only stored at the end of the\n        // constructor execution.\n\n        uint256 size;\n        // solhint-disable-next-line no-inline-assembly\n        assembly { size := extcodesize(account) }\n        return size > 0;\n    }\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\n        (bool success, ) = recipient.call{ value: amount }(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain`call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason, it is bubbled up by this\n     * function (like regular Solidity function calls).\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n      return functionCall(target, data, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        require(isContract(target), \"Address: call to non-contract\");\n\n        // solhint-disable-next-line avoid-low-level-calls\n        (bool success, bytes memory returndata) = target.call{ value: value }(data);\n        return _verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {\n        require(isContract(target), \"Address: static call to non-contract\");\n\n        // solhint-disable-next-line avoid-low-level-calls\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return _verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\n        require(isContract(target), \"Address: delegate call to non-contract\");\n\n        // solhint-disable-next-line avoid-low-level-calls\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return _verifyCallResult(success, returndata, errorMessage);\n    }\n\n    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\n            // Look for revert reason and bubble it up if present\n            if (returndata.length > 0) {\n                // The easiest way to bubble the revert reason is using memory via assembly\n\n                // solhint-disable-next-line no-inline-assembly\n                assembly {\n                    let returndata_size := mload(returndata)\n                    revert(add(32, returndata), returndata_size)\n                }\n            } else {\n                revert(errorMessage);\n            }\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/*\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with GSN meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address payable) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes memory) {\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\n        return msg.data;\n    }\n}\n"},"@openzeppelin/contracts/utils/Counters.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"../math/SafeMath.sol\";\n\n/**\n * @title Counters\n * @author Matt Condon (@shrugs)\n * @dev Provides counters that can only be incremented or decremented by one. This can be used e.g. to track the number\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\n *\n * Include with `using Counters for Counters.Counter;`\n * Since it is not possible to overflow a 256 bit integer with increments of one, `increment` can skip the {SafeMath}\n * overflow check, thereby saving gas. This does assume however correct usage, in that the underlying `_value` is never\n * directly accessed.\n */\nlibrary Counters {\n    using SafeMath for uint256;\n\n    struct Counter {\n        // This variable should never be directly accessed by users of the library: interactions must be restricted to\n        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\n        // this feature: see https://github.com/ethereum/solidity/issues/4637\n        uint256 _value; // default: 0\n    }\n\n    function current(Counter storage counter) internal view returns (uint256) {\n        return counter._value;\n    }\n\n    function increment(Counter storage counter) internal {\n        // The {SafeMath} overflow check can be skipped here, see the comment at the top\n        counter._value += 1;\n    }\n\n    function decrement(Counter storage counter) internal {\n        counter._value = counter._value.sub(1);\n    }\n}\n"},"@openzeppelin/contracts/utils/EnumerableMap.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev Library for managing an enumerable variant of Solidity's\n * https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`]\n * type.\n *\n * Maps have the following properties:\n *\n * - Entries are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Entries are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n *     // Add the library methods\n *     using EnumerableMap for EnumerableMap.UintToAddressMap;\n *\n *     // Declare a set state variable\n *     EnumerableMap.UintToAddressMap private myMap;\n * }\n * ```\n *\n * As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are\n * supported.\n */\nlibrary EnumerableMap {\n    // To implement this library for multiple types with as little code\n    // repetition as possible, we write it in terms of a generic Map type with\n    // bytes32 keys and values.\n    // The Map implementation uses private functions, and user-facing\n    // implementations (such as Uint256ToAddressMap) are just wrappers around\n    // the underlying Map.\n    // This means that we can only create new EnumerableMaps for types that fit\n    // in bytes32.\n\n    struct MapEntry {\n        bytes32 _key;\n        bytes32 _value;\n    }\n\n    struct Map {\n        // Storage of map keys and values\n        MapEntry[] _entries;\n\n        // Position of the entry defined by a key in the `entries` array, plus 1\n        // because index 0 means a key is not in the map.\n        mapping (bytes32 => uint256) _indexes;\n    }\n\n    /**\n     * @dev Adds a key-value pair to a map, or updates the value for an existing\n     * key. O(1).\n     *\n     * Returns true if the key was added to the map, that is if it was not\n     * already present.\n     */\n    function _set(Map storage map, bytes32 key, bytes32 value) private returns (bool) {\n        // We read and store the key's index to prevent multiple reads from the same storage slot\n        uint256 keyIndex = map._indexes[key];\n\n        if (keyIndex == 0) { // Equivalent to !contains(map, key)\n            map._entries.push(MapEntry({ _key: key, _value: value }));\n            // The entry is stored at length-1, but we add 1 to all indexes\n            // and use 0 as a sentinel value\n            map._indexes[key] = map._entries.length;\n            return true;\n        } else {\n            map._entries[keyIndex - 1]._value = value;\n            return false;\n        }\n    }\n\n    /**\n     * @dev Removes a key-value pair from a map. O(1).\n     *\n     * Returns true if the key was removed from the map, that is if it was present.\n     */\n    function _remove(Map storage map, bytes32 key) private returns (bool) {\n        // We read and store the key's index to prevent multiple reads from the same storage slot\n        uint256 keyIndex = map._indexes[key];\n\n        if (keyIndex != 0) { // Equivalent to contains(map, key)\n            // To delete a key-value pair from the _entries array in O(1), we swap the entry to delete with the last one\n            // in the array, and then remove the last entry (sometimes called as 'swap and pop').\n            // This modifies the order of the array, as noted in {at}.\n\n            uint256 toDeleteIndex = keyIndex - 1;\n            uint256 lastIndex = map._entries.length - 1;\n\n            // When the entry to delete is the last one, the swap operation is unnecessary. However, since this occurs\n            // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement.\n\n            MapEntry storage lastEntry = map._entries[lastIndex];\n\n            // Move the last entry to the index where the entry to delete is\n            map._entries[toDeleteIndex] = lastEntry;\n            // Update the index for the moved entry\n            map._indexes[lastEntry._key] = toDeleteIndex + 1; // All indexes are 1-based\n\n            // Delete the slot where the moved entry was stored\n            map._entries.pop();\n\n            // Delete the index for the deleted slot\n            delete map._indexes[key];\n\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Returns true if the key is in the map. O(1).\n     */\n    function _contains(Map storage map, bytes32 key) private view returns (bool) {\n        return map._indexes[key] != 0;\n    }\n\n    /**\n     * @dev Returns the number of key-value pairs in the map. O(1).\n     */\n    function _length(Map storage map) private view returns (uint256) {\n        return map._entries.length;\n    }\n\n   /**\n    * @dev Returns the key-value pair stored at position `index` in the map. O(1).\n    *\n    * Note that there are no guarantees on the ordering of entries inside the\n    * array, and it may change when more entries are added or removed.\n    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function _at(Map storage map, uint256 index) private view returns (bytes32, bytes32) {\n        require(map._entries.length > index, \"EnumerableMap: index out of bounds\");\n\n        MapEntry storage entry = map._entries[index];\n        return (entry._key, entry._value);\n    }\n\n    /**\n     * @dev Tries to returns the value associated with `key`.  O(1).\n     * Does not revert if `key` is not in the map.\n     */\n    function _tryGet(Map storage map, bytes32 key) private view returns (bool, bytes32) {\n        uint256 keyIndex = map._indexes[key];\n        if (keyIndex == 0) return (false, 0); // Equivalent to contains(map, key)\n        return (true, map._entries[keyIndex - 1]._value); // All indexes are 1-based\n    }\n\n    /**\n     * @dev Returns the value associated with `key`.  O(1).\n     *\n     * Requirements:\n     *\n     * - `key` must be in the map.\n     */\n    function _get(Map storage map, bytes32 key) private view returns (bytes32) {\n        uint256 keyIndex = map._indexes[key];\n        require(keyIndex != 0, \"EnumerableMap: nonexistent key\"); // Equivalent to contains(map, key)\n        return map._entries[keyIndex - 1]._value; // All indexes are 1-based\n    }\n\n    /**\n     * @dev Same as {_get}, with a custom error message when `key` is not in the map.\n     *\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\n     * message unnecessarily. For custom revert reasons use {_tryGet}.\n     */\n    function _get(Map storage map, bytes32 key, string memory errorMessage) private view returns (bytes32) {\n        uint256 keyIndex = map._indexes[key];\n        require(keyIndex != 0, errorMessage); // Equivalent to contains(map, key)\n        return map._entries[keyIndex - 1]._value; // All indexes are 1-based\n    }\n\n    // UintToAddressMap\n\n    struct UintToAddressMap {\n        Map _inner;\n    }\n\n    /**\n     * @dev Adds a key-value pair to a map, or updates the value for an existing\n     * key. O(1).\n     *\n     * Returns true if the key was added to the map, that is if it was not\n     * already present.\n     */\n    function set(UintToAddressMap storage map, uint256 key, address value) internal returns (bool) {\n        return _set(map._inner, bytes32(key), bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the key was removed from the map, that is if it was present.\n     */\n    function remove(UintToAddressMap storage map, uint256 key) internal returns (bool) {\n        return _remove(map._inner, bytes32(key));\n    }\n\n    /**\n     * @dev Returns true if the key is in the map. O(1).\n     */\n    function contains(UintToAddressMap storage map, uint256 key) internal view returns (bool) {\n        return _contains(map._inner, bytes32(key));\n    }\n\n    /**\n     * @dev Returns the number of elements in the map. O(1).\n     */\n    function length(UintToAddressMap storage map) internal view returns (uint256) {\n        return _length(map._inner);\n    }\n\n   /**\n    * @dev Returns the element stored at position `index` in the set. O(1).\n    * Note that there are no guarantees on the ordering of values inside the\n    * array, and it may change when more values are added or removed.\n    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function at(UintToAddressMap storage map, uint256 index) internal view returns (uint256, address) {\n        (bytes32 key, bytes32 value) = _at(map._inner, index);\n        return (uint256(key), address(uint160(uint256(value))));\n    }\n\n    /**\n     * @dev Tries to returns the value associated with `key`.  O(1).\n     * Does not revert if `key` is not in the map.\n     *\n     * _Available since v3.4._\n     */\n    function tryGet(UintToAddressMap storage map, uint256 key) internal view returns (bool, address) {\n        (bool success, bytes32 value) = _tryGet(map._inner, bytes32(key));\n        return (success, address(uint160(uint256(value))));\n    }\n\n    /**\n     * @dev Returns the value associated with `key`.  O(1).\n     *\n     * Requirements:\n     *\n     * - `key` must be in the map.\n     */\n    function get(UintToAddressMap storage map, uint256 key) internal view returns (address) {\n        return address(uint160(uint256(_get(map._inner, bytes32(key)))));\n    }\n\n    /**\n     * @dev Same as {get}, with a custom error message when `key` is not in the map.\n     *\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\n     * message unnecessarily. For custom revert reasons use {tryGet}.\n     */\n    function get(UintToAddressMap storage map, uint256 key, string memory errorMessage) internal view returns (address) {\n        return address(uint160(uint256(_get(map._inner, bytes32(key), errorMessage))));\n    }\n}\n"},"@openzeppelin/contracts/utils/EnumerableSet.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n *     // Add the library methods\n *     using EnumerableSet for EnumerableSet.AddressSet;\n *\n *     // Declare a set state variable\n *     EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n */\nlibrary EnumerableSet {\n    // To implement this library for multiple types with as little code\n    // repetition as possible, we write it in terms of a generic Set type with\n    // bytes32 values.\n    // The Set implementation uses private functions, and user-facing\n    // implementations (such as AddressSet) are just wrappers around the\n    // underlying Set.\n    // This means that we can only create new EnumerableSets for types that fit\n    // in bytes32.\n\n    struct Set {\n        // Storage of set values\n        bytes32[] _values;\n\n        // Position of the value in the `values` array, plus 1 because index 0\n        // means a value is not in the set.\n        mapping (bytes32 => uint256) _indexes;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function _add(Set storage set, bytes32 value) private returns (bool) {\n        if (!_contains(set, value)) {\n            set._values.push(value);\n            // The value is stored at length-1, but we add 1 to all indexes\n            // and use 0 as a sentinel value\n            set._indexes[value] = set._values.length;\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function _remove(Set storage set, bytes32 value) private returns (bool) {\n        // We read and store the value's index to prevent multiple reads from the same storage slot\n        uint256 valueIndex = set._indexes[value];\n\n        if (valueIndex != 0) { // Equivalent to contains(set, value)\n            // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n            // the array, and then remove the last element (sometimes called as 'swap and pop').\n            // This modifies the order of the array, as noted in {at}.\n\n            uint256 toDeleteIndex = valueIndex - 1;\n            uint256 lastIndex = set._values.length - 1;\n\n            // When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs\n            // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement.\n\n            bytes32 lastvalue = set._values[lastIndex];\n\n            // Move the last value to the index where the value to delete is\n            set._values[toDeleteIndex] = lastvalue;\n            // Update the index for the moved value\n            set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based\n\n            // Delete the slot where the moved value was stored\n            set._values.pop();\n\n            // Delete the index for the deleted slot\n            delete set._indexes[value];\n\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function _contains(Set storage set, bytes32 value) private view returns (bool) {\n        return set._indexes[value] != 0;\n    }\n\n    /**\n     * @dev Returns the number of values on the set. O(1).\n     */\n    function _length(Set storage set) private view returns (uint256) {\n        return set._values.length;\n    }\n\n   /**\n    * @dev Returns the value stored at position `index` in the set. O(1).\n    *\n    * Note that there are no guarantees on the ordering of values inside the\n    * array, and it may change when more values are added or removed.\n    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function _at(Set storage set, uint256 index) private view returns (bytes32) {\n        require(set._values.length > index, \"EnumerableSet: index out of bounds\");\n        return set._values[index];\n    }\n\n    // Bytes32Set\n\n    struct Bytes32Set {\n        Set _inner;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n        return _add(set._inner, value);\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n        return _remove(set._inner, value);\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n        return _contains(set._inner, value);\n    }\n\n    /**\n     * @dev Returns the number of values in the set. O(1).\n     */\n    function length(Bytes32Set storage set) internal view returns (uint256) {\n        return _length(set._inner);\n    }\n\n   /**\n    * @dev Returns the value stored at position `index` in the set. O(1).\n    *\n    * Note that there are no guarantees on the ordering of values inside the\n    * array, and it may change when more values are added or removed.\n    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n        return _at(set._inner, index);\n    }\n\n    // AddressSet\n\n    struct AddressSet {\n        Set _inner;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function add(AddressSet storage set, address value) internal returns (bool) {\n        return _add(set._inner, bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function remove(AddressSet storage set, address value) internal returns (bool) {\n        return _remove(set._inner, bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function contains(AddressSet storage set, address value) internal view returns (bool) {\n        return _contains(set._inner, bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Returns the number of values in the set. O(1).\n     */\n    function length(AddressSet storage set) internal view returns (uint256) {\n        return _length(set._inner);\n    }\n\n   /**\n    * @dev Returns the value stored at position `index` in the set. O(1).\n    *\n    * Note that there are no guarantees on the ordering of values inside the\n    * array, and it may change when more values are added or removed.\n    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function at(AddressSet storage set, uint256 index) internal view returns (address) {\n        return address(uint160(uint256(_at(set._inner, index))));\n    }\n\n\n    // UintSet\n\n    struct UintSet {\n        Set _inner;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function add(UintSet storage set, uint256 value) internal returns (bool) {\n        return _add(set._inner, bytes32(value));\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function remove(UintSet storage set, uint256 value) internal returns (bool) {\n        return _remove(set._inner, bytes32(value));\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function contains(UintSet storage set, uint256 value) internal view returns (bool) {\n        return _contains(set._inner, bytes32(value));\n    }\n\n    /**\n     * @dev Returns the number of values on the set. O(1).\n     */\n    function length(UintSet storage set) internal view returns (uint256) {\n        return _length(set._inner);\n    }\n\n   /**\n    * @dev Returns the value stored at position `index` in the set. O(1).\n    *\n    * Note that there are no guarantees on the ordering of values inside the\n    * array, and it may change when more values are added or removed.\n    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function at(UintSet storage set, uint256 index) internal view returns (uint256) {\n        return uint256(_at(set._inner, index));\n    }\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` representation.\n     */\n    function toString(uint256 value) internal pure returns (string memory) {\n        // Inspired by OraclizeAPI's implementation - MIT licence\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\n\n        if (value == 0) {\n            return \"0\";\n        }\n        uint256 temp = value;\n        uint256 digits;\n        while (temp != 0) {\n            digits++;\n            temp /= 10;\n        }\n        bytes memory buffer = new bytes(digits);\n        uint256 index = digits - 1;\n        temp = value;\n        while (temp != 0) {\n            buffer[index--] = bytes1(uint8(48 + temp % 10));\n            temp /= 10;\n        }\n        return string(buffer);\n    }\n}\n"},"base64-sol/base64.sol":{"content":"// SPDX-License-Identifier: MIT\n\n/// @title Base64\n/// @author Brecht Devos - <brecht@loopring.org>\n/// @notice Provides a function for encoding some bytes in base64\nlibrary Base64 {\n    string internal constant TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n    function encode(bytes memory data) internal pure returns (string memory) {\n        if (data.length == 0) return '';\n        \n        // load the table into memory\n        string memory table = TABLE;\n\n        // multiply by 4/3 rounded up\n        uint256 encodedLen = 4 * ((data.length + 2) / 3);\n\n        // add some extra buffer at the end required for the writing\n        string memory result = new string(encodedLen + 32);\n\n        assembly {\n            // set the actual output length\n            mstore(result, encodedLen)\n            \n            // prepare the lookup table\n            let tablePtr := add(table, 1)\n            \n            // input ptr\n            let dataPtr := data\n            let endPtr := add(dataPtr, mload(data))\n            \n            // result ptr, jump over length\n            let resultPtr := add(result, 32)\n            \n            // run over the input, 3 bytes at a time\n            for {} lt(dataPtr, endPtr) {}\n            {\n               dataPtr := add(dataPtr, 3)\n               \n               // read 3 bytes\n               let input := mload(dataPtr)\n               \n               // write 4 characters\n               mstore(resultPtr, shl(248, mload(add(tablePtr, and(shr(18, input), 0x3F)))))\n               resultPtr := add(resultPtr, 1)\n               mstore(resultPtr, shl(248, mload(add(tablePtr, and(shr(12, input), 0x3F)))))\n               resultPtr := add(resultPtr, 1)\n               mstore(resultPtr, shl(248, mload(add(tablePtr, and(shr( 6, input), 0x3F)))))\n               resultPtr := add(resultPtr, 1)\n               mstore(resultPtr, shl(248, mload(add(tablePtr, and(        input,  0x3F)))))\n               resultPtr := add(resultPtr, 1)\n            }\n            \n            // padding with '='\n            switch mod(mload(data), 3)\n            case 1 { mstore(sub(resultPtr, 2), shl(240, 0x3d3d)) }\n            case 2 { mstore(sub(resultPtr, 1), shl(248, 0x3d)) }\n        }\n        \n        return result;\n    }\n}\n"},"contracts/base/BlockTimestamp.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\n\n/// @title Function for getting block timestamp\n/// @dev Base contract that is overridden for tests\nabstract contract BlockTimestamp {\n    /// @dev Method that exists purely to be overridden for tests\n    /// @return The current block timestamp\n    function _blockTimestamp() internal view virtual returns (uint256) {\n        return block.timestamp;\n    }\n}\n"},"contracts/base/ERC721Permit.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\n\nimport '@openzeppelin/contracts/token/ERC721/ERC721.sol';\nimport '@openzeppelin/contracts/utils/Address.sol';\n\nimport '../libraries/ChainId.sol';\nimport '../interfaces/external/IERC1271.sol';\nimport '../interfaces/IERC721Permit.sol';\nimport './BlockTimestamp.sol';\n\n/// @title ERC721 with permit\n/// @notice Nonfungible tokens that support an approve via signature, i.e. permit\nabstract contract ERC721Permit is BlockTimestamp, ERC721, IERC721Permit {\n    /// @dev Gets the current nonce for a token ID and then increments it, returning the original value\n    function _getAndIncrementNonce(uint256 tokenId) internal virtual returns (uint256);\n\n    /// @dev The hash of the name used in the permit signature verification\n    bytes32 private immutable nameHash;\n\n    /// @dev The hash of the version string used in the permit signature verification\n    bytes32 private immutable versionHash;\n\n    /// @notice Computes the nameHash and versionHash\n    constructor(string memory name_, string memory symbol_, string memory version_) ERC721(name_, symbol_) {\n        nameHash = keccak256(bytes(name_));\n        versionHash = keccak256(bytes(version_));\n    }\n\n    /// @inheritdoc IERC721Permit\n    function DOMAIN_SEPARATOR() public view override returns (bytes32) {\n        return\n            keccak256(\n                abi.encode(\n                    // keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)')\n                    0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f,\n                    nameHash,\n                    versionHash,\n                    ChainId.get(),\n                    address(this)\n                )\n            );\n    }\n\n    /// @inheritdoc IERC721Permit\n    /// @dev Value is equal to keccak256(\"Permit(address spender,uint256 tokenId,uint256 nonce,uint256 deadline)\");\n    bytes32 public constant override PERMIT_TYPEHASH =\n        0x49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad;\n\n    /// @inheritdoc IERC721Permit\n    function permit(\n        address spender,\n        uint256 tokenId,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external payable override {\n        require(_blockTimestamp() <= deadline, 'Permit expired');\n\n        bytes32 digest = keccak256(\n            abi.encodePacked(\n                '\\x19\\x01',\n                DOMAIN_SEPARATOR(),\n                keccak256(abi.encode(PERMIT_TYPEHASH, spender, tokenId, _getAndIncrementNonce(tokenId), deadline))\n            )\n        );\n        address owner = ownerOf(tokenId);\n        require(spender != owner, 'ERC721Permit: approval to current owner');\n\n        if (Address.isContract(owner)) {\n            require(IERC1271(owner).isValidSignature(digest, abi.encodePacked(r, s, v)) == 0x1626ba7e, 'Unauthorized');\n        } else {\n            address recoveredAddress = ecrecover(digest, v, r, s);\n            require(recoveredAddress != address(0), 'Invalid signature');\n            require(recoveredAddress == owner, 'Unauthorized');\n        }\n\n        _approve(spender, tokenId);\n    }\n}\n"},"contracts/base/LiquidityManagement.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\npragma abicoder v2;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/TickMath.sol';\n\nimport '../libraries/PoolAddress.sol';\nimport '../libraries/CallbackValidation.sol';\nimport '../libraries/LiquidityAmounts.sol';\n\nimport './PeripheryPayments.sol';\nimport './PeripheryImmutableState.sol';\n\n/// @title Liquidity management functions\n/// @notice Internal functions for safely managing liquidity in AstraDEX CL\nabstract contract LiquidityManagement is IAstraCLMintCallback, PeripheryImmutableState, PeripheryPayments {\n    struct MintCallbackData {\n        PoolAddress.PoolKey poolKey;\n        address payer;\n    }\n\n    /// @inheritdoc IAstraCLMintCallback\n    function astraCLMintCallback(uint256 amount0Owed, uint256 amount1Owed, bytes calldata data) external override {\n        MintCallbackData memory decoded = abi.decode(data, (MintCallbackData));\n        CallbackValidation.verifyCallback(factory, decoded.poolKey);\n\n        if (amount0Owed > 0) pay(decoded.poolKey.token0, decoded.payer, msg.sender, amount0Owed);\n        if (amount1Owed > 0) pay(decoded.poolKey.token1, decoded.payer, msg.sender, amount1Owed);\n    }\n\n    struct AddLiquidityParams {\n        address token0;\n        address token1;\n        uint24 fee;\n        address recipient;\n        int24 tickLower;\n        int24 tickUpper;\n        uint256 amount0Desired;\n        uint256 amount1Desired;\n        uint256 amount0Min;\n        uint256 amount1Min;\n    }\n\n    /// @notice Add liquidity to an initialized pool\n    function addLiquidity(\n        AddLiquidityParams memory params\n    ) internal returns (uint128 liquidity, uint256 amount0, uint256 amount1, IAstraCLPool pool) {\n        PoolAddress.PoolKey memory poolKey = PoolAddress.PoolKey({\n            token0: params.token0,\n            token1: params.token1,\n            fee: params.fee\n        });\n\n        pool = IAstraCLPool(PoolAddress.computeAddress(factory, poolKey));\n\n        // compute the liquidity amount\n        {\n            (uint160 sqrtPriceX96, , , , , , ) = pool.slot0();\n            uint160 sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(params.tickLower);\n            uint160 sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(params.tickUpper);\n\n            liquidity = LiquidityAmounts.getLiquidityForAmounts(\n                sqrtPriceX96,\n                sqrtRatioAX96,\n                sqrtRatioBX96,\n                params.amount0Desired,\n                params.amount1Desired\n            );\n        }\n\n        (amount0, amount1) = pool.mint(\n            params.recipient,\n            params.tickLower,\n            params.tickUpper,\n            liquidity,\n            abi.encode(MintCallbackData({poolKey: poolKey, payer: msg.sender}))\n        );\n\n        require(amount0 >= params.amount0Min && amount1 >= params.amount1Min, 'Price slippage check');\n    }\n}\n"},"contracts/base/Multicall.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\npragma abicoder v2;\n\nimport '../interfaces/IMulticall.sol';\n\n/// @title Multicall\n/// @notice Enables calling multiple methods in a single call to the contract\nabstract contract Multicall is IMulticall {\n    /// @inheritdoc IMulticall\n    function multicall(bytes[] calldata data) public payable override returns (bytes[] memory results) {\n        results = new bytes[](data.length);\n        for (uint256 i = 0; i < data.length; i++) {\n            (bool success, bytes memory result) = address(this).delegatecall(data[i]);\n\n            if (!success) {\n                // Next 5 lines from https://ethereum.stackexchange.com/a/83577\n                if (result.length < 68) revert();\n                assembly {\n                    result := add(result, 0x04)\n                }\n                revert(abi.decode(result, (string)));\n            }\n\n            results[i] = result;\n        }\n    }\n}\n"},"contracts/base/PeripheryImmutableState.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\n\nimport '../interfaces/IPeripheryImmutableState.sol';\n\n/// @title Immutable state\n/// @notice Immutable state used by periphery contracts\nabstract contract PeripheryImmutableState is IPeripheryImmutableState {\n    /// @inheritdoc IPeripheryImmutableState\n    address public immutable override factory;\n    /// @inheritdoc IPeripheryImmutableState\n    address public immutable override SAMB;\n\n    constructor(address _factory, address _SAMB) {\n        factory = _factory;\n        SAMB = _SAMB;\n    }\n}\n"},"contracts/base/PeripheryPayments.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\n\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\n\nimport '../interfaces/IPeripheryPayments.sol';\nimport '../interfaces/external/ISAMB.sol';\n\nimport '../libraries/TransferHelper.sol';\n\nimport './PeripheryImmutableState.sol';\n\nabstract contract PeripheryPayments is IPeripheryPayments, PeripheryImmutableState {\n    receive() external payable {\n        require(msg.sender == SAMB, 'Not SAMB');\n    }\n\n    /// @inheritdoc IPeripheryPayments\n    function unwrapSAMB(uint256 amountMinimum, address recipient) public payable override {\n        uint256 balanceSAMB = ISAMB(SAMB).balanceOf(address(this));\n        require(balanceSAMB >= amountMinimum, 'Insufficient SAMB');\n\n        if (balanceSAMB > 0) {\n            ISAMB(SAMB).withdraw(balanceSAMB);\n            TransferHelper.safeTransferAMB(recipient, balanceSAMB);\n        }\n    }\n\n    /// @inheritdoc IPeripheryPayments\n    function sweepToken(address token, uint256 amountMinimum, address recipient) public payable override {\n        uint256 balanceToken = IERC20(token).balanceOf(address(this));\n        require(balanceToken >= amountMinimum, 'Insufficient token');\n\n        if (balanceToken > 0) {\n            TransferHelper.safeTransfer(token, recipient, balanceToken);\n        }\n    }\n\n    /// @inheritdoc IPeripheryPayments\n    function refundAMB() external payable override {\n        if (address(this).balance > 0) TransferHelper.safeTransferAMB(msg.sender, address(this).balance);\n    }\n\n    /// @param token The token to pay\n    /// @param payer The entity that must pay\n    /// @param recipient The entity that will receive payment\n    /// @param value The amount to pay\n    function pay(address token, address payer, address recipient, uint256 value) internal {\n        if (token == SAMB && address(this).balance >= value) {\n            // pay with SAMB\n            ISAMB(SAMB).deposit{value: value}(); // wrap only what is needed to pay\n            ISAMB(SAMB).transfer(recipient, value);\n        } else if (payer == address(this)) {\n            // pay with tokens already in the contract (for the exact input multihop case)\n            TransferHelper.safeTransfer(token, recipient, value);\n        } else {\n            // pull payment\n            TransferHelper.safeTransferFrom(token, payer, recipient, value);\n        }\n    }\n}\n"},"contracts/base/PeripheryPaymentsWithFee.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\n\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol';\n\nimport './PeripheryPayments.sol';\nimport '../interfaces/IPeripheryPaymentsWithFee.sol';\n\nimport '../interfaces/external/ISAMB.sol';\nimport '../libraries/TransferHelper.sol';\n\nabstract contract PeripheryPaymentsWithFee is PeripheryPayments, IPeripheryPaymentsWithFee {\n    using LowGasSafeMath for uint256;\n\n    /// @inheritdoc IPeripheryPaymentsWithFee\n    function unwrapSAMBWithFee(\n        uint256 amountMinimum,\n        address recipient,\n        uint256 feeBips,\n        address feeRecipient\n    ) public payable override {\n        require(feeBips > 0 && feeBips <= 100);\n\n        uint256 balanceSAMB = ISAMB(SAMB).balanceOf(address(this));\n        require(balanceSAMB >= amountMinimum, 'Insufficient SAMB');\n\n        if (balanceSAMB > 0) {\n            ISAMB(SAMB).withdraw(balanceSAMB);\n            uint256 feeAmount = balanceSAMB.mul(feeBips) / 10_000;\n            if (feeAmount > 0) TransferHelper.safeTransferAMB(feeRecipient, feeAmount);\n            TransferHelper.safeTransferAMB(recipient, balanceSAMB - feeAmount);\n        }\n    }\n\n    /// @inheritdoc IPeripheryPaymentsWithFee\n    function sweepTokenWithFee(\n        address token,\n        uint256 amountMinimum,\n        address recipient,\n        uint256 feeBips,\n        address feeRecipient\n    ) public payable override {\n        require(feeBips > 0 && feeBips <= 100);\n\n        uint256 balanceToken = IERC20(token).balanceOf(address(this));\n        require(balanceToken >= amountMinimum, 'Insufficient token');\n\n        if (balanceToken > 0) {\n            uint256 feeAmount = balanceToken.mul(feeBips) / 10_000;\n            if (feeAmount > 0) TransferHelper.safeTransfer(token, feeRecipient, feeAmount);\n            TransferHelper.safeTransfer(token, recipient, balanceToken - feeAmount);\n        }\n    }\n}\n"},"contracts/base/PeripheryValidation.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\n\nimport './BlockTimestamp.sol';\n\nabstract contract PeripheryValidation is BlockTimestamp {\n    modifier checkDeadline(uint256 deadline) {\n        require(_blockTimestamp() <= deadline, 'Transaction too old');\n        _;\n    }\n}\n"},"contracts/base/PoolInitializer.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol';\n\nimport './PeripheryImmutableState.sol';\nimport '../interfaces/IPoolInitializer.sol';\n\n/// @title Creates and initializes CL Pools\nabstract contract PoolInitializer is IPoolInitializer, PeripheryImmutableState {\n    /// @inheritdoc IPoolInitializer\n    function createAndInitializePoolIfNecessary(\n        address token0,\n        address token1,\n        uint24 fee,\n        uint160 sqrtPriceX96\n    ) external payable override returns (address pool) {\n        require(token0 < token1);\n        pool = IAstraCLFactory(factory).getPool(token0, token1, fee);\n\n        if (pool == address(0)) {\n            pool = IAstraCLFactory(factory).createPool(token0, token1, fee);\n            IAstraCLPool(pool).initialize(sqrtPriceX96);\n        } else {\n            (uint160 sqrtPriceX96Existing, , , , , , ) = IAstraCLPool(pool).slot0();\n            if (sqrtPriceX96Existing == 0) {\n                IAstraCLPool(pool).initialize(sqrtPriceX96);\n            }\n        }\n    }\n}\n"},"contracts/base/SelfPermit.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\nimport '@openzeppelin/contracts/drafts/IERC20Permit.sol';\n\nimport '../interfaces/ISelfPermit.sol';\nimport '../interfaces/external/IERC20PermitAllowed.sol';\n\n/// @title Self Permit\n/// @notice Functionality to call permit on any EIP-2612-compliant token for use in the route\n/// @dev These functions are expected to be embedded in multicalls to allow EOAs to approve a contract and call a function\n/// that requires an approval in a single transaction.\nabstract contract SelfPermit is ISelfPermit {\n    /// @inheritdoc ISelfPermit\n    function selfPermit(\n        address token,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) public payable override {\n        IERC20Permit(token).permit(msg.sender, address(this), value, deadline, v, r, s);\n    }\n\n    /// @inheritdoc ISelfPermit\n    function selfPermitIfNecessary(\n        address token,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external payable override {\n        if (IERC20(token).allowance(msg.sender, address(this)) < value) selfPermit(token, value, deadline, v, r, s);\n    }\n\n    /// @inheritdoc ISelfPermit\n    function selfPermitAllowed(\n        address token,\n        uint256 nonce,\n        uint256 expiry,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) public payable override {\n        IERC20PermitAllowed(token).permit(msg.sender, address(this), nonce, expiry, true, v, r, s);\n    }\n\n    /// @inheritdoc ISelfPermit\n    function selfPermitAllowedIfNecessary(\n        address token,\n        uint256 nonce,\n        uint256 expiry,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external payable override {\n        if (IERC20(token).allowance(msg.sender, address(this)) < type(uint256).max)\n            selfPermitAllowed(token, nonce, expiry, v, r, s);\n    }\n}\n"},"contracts/CLMigrator.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\npragma abicoder v2;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol';\n// TODO: change to import from @airdao/astradex\nimport './interfaces/classic/IAstraPair.sol';\n\nimport './interfaces/INonfungiblePositionManager.sol';\n\nimport './libraries/TransferHelper.sol';\n\nimport './interfaces/ICLMigrator.sol';\nimport './base/PeripheryImmutableState.sol';\nimport './base/Multicall.sol';\nimport './base/SelfPermit.sol';\nimport './interfaces/external/ISAMB.sol';\nimport './base/PoolInitializer.sol';\n\n/// @title AstraDEX CL Migrator\ncontract CLMigrator is ICLMigrator, PeripheryImmutableState, PoolInitializer, Multicall, SelfPermit {\n    using LowGasSafeMath for uint256;\n\n    address public immutable nonfungiblePositionManager;\n\n    constructor(\n        address _factory,\n        address _SAMB,\n        address _nonfungiblePositionManager\n    ) PeripheryImmutableState(_factory, _SAMB) {\n        nonfungiblePositionManager = _nonfungiblePositionManager;\n    }\n\n    receive() external payable {\n        require(msg.sender == SAMB, 'Not SAMB');\n    }\n\n    function migrate(MigrateParams calldata params) external override {\n        require(params.percentageToMigrate > 0, 'Percentage too small');\n        require(params.percentageToMigrate <= 100, 'Percentage too large');\n\n        // burn classic liquidity to this address\n        IAstraPair(params.pair).transferFrom(msg.sender, params.pair, params.liquidityToMigrate);\n        (uint256 amount0Classic, uint256 amount1Classic) = IAstraPair(params.pair).burn(address(this));\n\n        // calculate the amounts to migrate to CL\n        uint256 amount0ClassicToMigrate = amount0Classic.mul(params.percentageToMigrate) / 100;\n        uint256 amount1ClassicToMigrate = amount1Classic.mul(params.percentageToMigrate) / 100;\n\n        // approve the position manager up to the maximum token amounts\n        TransferHelper.safeApprove(params.token0, nonfungiblePositionManager, amount0ClassicToMigrate);\n        TransferHelper.safeApprove(params.token1, nonfungiblePositionManager, amount1ClassicToMigrate);\n\n        // mint CL position\n        (, , uint256 amount0CL, uint256 amount1CL) = INonfungiblePositionManager(nonfungiblePositionManager).mint(\n            INonfungiblePositionManager.MintParams({\n                token0: params.token0,\n                token1: params.token1,\n                fee: params.fee,\n                tickLower: params.tickLower,\n                tickUpper: params.tickUpper,\n                amount0Desired: amount0ClassicToMigrate,\n                amount1Desired: amount1ClassicToMigrate,\n                amount0Min: params.amount0Min,\n                amount1Min: params.amount1Min,\n                recipient: params.recipient,\n                deadline: params.deadline\n            })\n        );\n\n        // if necessary, clear allowance and refund dust\n        if (amount0CL < amount0Classic) {\n            if (amount0CL < amount0ClassicToMigrate) {\n                TransferHelper.safeApprove(params.token0, nonfungiblePositionManager, 0);\n            }\n\n            uint256 refund0 = amount0Classic - amount0CL;\n            if (params.refundAsAMB && params.token0 == SAMB) {\n                ISAMB(SAMB).withdraw(refund0);\n                TransferHelper.safeTransferAMB(msg.sender, refund0);\n            } else {\n                TransferHelper.safeTransfer(params.token0, msg.sender, refund0);\n            }\n        }\n        if (amount1CL < amount1Classic) {\n            if (amount1CL < amount1ClassicToMigrate) {\n                TransferHelper.safeApprove(params.token1, nonfungiblePositionManager, 0);\n            }\n\n            uint256 refund1 = amount1Classic - amount1CL;\n            if (params.refundAsAMB && params.token1 == SAMB) {\n                ISAMB(SAMB).withdraw(refund1);\n                TransferHelper.safeTransferAMB(msg.sender, refund1);\n            } else {\n                TransferHelper.safeTransfer(params.token1, msg.sender, refund1);\n            }\n        }\n    }\n}\n"},"contracts/examples/PairFlash.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\npragma abicoder v2;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLFlashCallback.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol';\n\nimport '../base/PeripheryPayments.sol';\nimport '../base/PeripheryImmutableState.sol';\nimport '../libraries/PoolAddress.sol';\nimport '../libraries/CallbackValidation.sol';\nimport '../libraries/TransferHelper.sol';\nimport '../interfaces/ISwapRouter.sol';\n\n/// @title Flash contract implementation\n/// @notice An example contract using the AstraDEX CL flash function\ncontract PairFlash is IAstraCLFlashCallback, PeripheryPayments {\n    using LowGasSafeMath for uint256;\n    using LowGasSafeMath for int256;\n\n    ISwapRouter public immutable swapRouter;\n\n    constructor(ISwapRouter _swapRouter, address _factory, address _SAMB) PeripheryImmutableState(_factory, _SAMB) {\n        swapRouter = _swapRouter;\n    }\n\n    // fee2 and fee3 are the two other fees associated with the two other pools of token0 and token1\n    struct FlashCallbackData {\n        uint256 amount0;\n        uint256 amount1;\n        address payer;\n        PoolAddress.PoolKey poolKey;\n        uint24 poolFee2;\n        uint24 poolFee3;\n    }\n\n    /// @param fee0 The fee from calling flash for token0\n    /// @param fee1 The fee from calling flash for token1\n    /// @param data The data needed in the callback passed as FlashCallbackData from `initFlash`\n    /// @notice implements the callback called from flash\n    /// @dev fails if the flash is not profitable, meaning the amountOut from the flash is less than the amount borrowed\n    function astraCLFlashCallback(uint256 fee0, uint256 fee1, bytes calldata data) external override {\n        FlashCallbackData memory decoded = abi.decode(data, (FlashCallbackData));\n        CallbackValidation.verifyCallback(factory, decoded.poolKey);\n\n        address token0 = decoded.poolKey.token0;\n        address token1 = decoded.poolKey.token1;\n\n        // profitability parameters - we must receive at least the required payment from the arbitrage swaps\n        // exactInputSingle will fail if this amount not met\n        uint256 amount0Min = LowGasSafeMath.add(decoded.amount0, fee0);\n        uint256 amount1Min = LowGasSafeMath.add(decoded.amount1, fee1);\n\n        // call exactInputSingle for swapping token1 for token0 in pool with fee2\n        TransferHelper.safeApprove(token1, address(swapRouter), decoded.amount1);\n        uint256 amountOut0 = swapRouter.exactInputSingle(\n            ISwapRouter.ExactInputSingleParams({\n                tokenIn: token1,\n                tokenOut: token0,\n                fee: decoded.poolFee2,\n                recipient: address(this),\n                deadline: block.timestamp,\n                amountIn: decoded.amount1,\n                amountOutMinimum: amount0Min,\n                sqrtPriceLimitX96: 0\n            })\n        );\n\n        // call exactInputSingle for swapping token0 for token 1 in pool with fee3\n        TransferHelper.safeApprove(token0, address(swapRouter), decoded.amount0);\n        uint256 amountOut1 = swapRouter.exactInputSingle(\n            ISwapRouter.ExactInputSingleParams({\n                tokenIn: token0,\n                tokenOut: token1,\n                fee: decoded.poolFee3,\n                recipient: address(this),\n                deadline: block.timestamp,\n                amountIn: decoded.amount0,\n                amountOutMinimum: amount1Min,\n                sqrtPriceLimitX96: 0\n            })\n        );\n\n        // pay the required amounts back to the pair\n        if (amount0Min > 0) pay(token0, address(this), msg.sender, amount0Min);\n        if (amount1Min > 0) pay(token1, address(this), msg.sender, amount1Min);\n\n        // if profitable pay profits to payer\n        if (amountOut0 > amount0Min) {\n            uint256 profit0 = amountOut0 - amount0Min;\n            pay(token0, address(this), decoded.payer, profit0);\n        }\n        if (amountOut1 > amount1Min) {\n            uint256 profit1 = amountOut1 - amount1Min;\n            pay(token1, address(this), decoded.payer, profit1);\n        }\n    }\n\n    //fee1 is the fee of the pool from the initial borrow\n    //fee2 is the fee of the first pool to arb from\n    //fee3 is the fee of the second pool to arb from\n    struct FlashParams {\n        address token0;\n        address token1;\n        uint24 fee1;\n        uint256 amount0;\n        uint256 amount1;\n        uint24 fee2;\n        uint24 fee3;\n    }\n\n    /// @param params The parameters necessary for flash and the callback, passed in as FlashParams\n    /// @notice Calls the pools flash function with data needed in `astraCLFlashCallback`\n    function initFlash(FlashParams memory params) external {\n        PoolAddress.PoolKey memory poolKey = PoolAddress.PoolKey({\n            token0: params.token0,\n            token1: params.token1,\n            fee: params.fee1\n        });\n        IAstraCLPool pool = IAstraCLPool(PoolAddress.computeAddress(factory, poolKey));\n        // recipient of borrowed amounts\n        // amount of token0 requested to borrow\n        // amount of token1 requested to borrow\n        // need amount 0 and amount1 in callback to pay back pool\n        // recipient of flash should be THIS contract\n        pool.flash(\n            address(this),\n            params.amount0,\n            params.amount1,\n            abi.encode(\n                FlashCallbackData({\n                    amount0: params.amount0,\n                    amount1: params.amount1,\n                    payer: msg.sender,\n                    poolKey: poolKey,\n                    poolFee2: params.fee2,\n                    poolFee3: params.fee3\n                })\n            )\n        );\n    }\n}\n"},"contracts/interfaces/classic/IAstraPair.sol":{"content":"pragma solidity >=0.5.0;\n\ninterface IAstraPair {\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    function name() external pure returns (string memory);\n\n    function symbol() external pure returns (string memory);\n\n    function decimals() external pure returns (uint8);\n\n    function totalSupply() external view returns (uint256);\n\n    function balanceOf(address owner) external view returns (uint256);\n\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    function approve(address spender, uint256 value) external returns (bool);\n\n    function transfer(address to, uint256 value) external returns (bool);\n\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\n\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\n\n    function PERMIT_TYPEHASH() external pure returns (bytes32);\n\n    function nonces(address owner) external view returns (uint256);\n\n    function permit(\n        address owner,\n        address spender,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external;\n\n    event Mint(address indexed sender, uint256 amount0, uint256 amount1);\n    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to);\n    event Swap(\n        address indexed sender,\n        uint256 amount0In,\n        uint256 amount1In,\n        uint256 amount0Out,\n        uint256 amount1Out,\n        address indexed to\n    );\n    event Sync(uint112 reserve0, uint112 reserve1);\n\n    function MINIMUM_LIQUIDITY() external pure returns (uint256);\n\n    function factory() external view returns (address);\n\n    function token0() external view returns (address);\n\n    function token1() external view returns (address);\n\n    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\n\n    function price0CumulativeLast() external view returns (uint256);\n\n    function price1CumulativeLast() external view returns (uint256);\n\n    function kLast() external view returns (uint256);\n\n    function mint(address to) external returns (uint256 liquidity);\n\n    function burn(address to) external returns (uint256 amount0, uint256 amount1);\n\n    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;\n\n    function skim(address to) external;\n\n    function sync() external;\n\n    function initialize(address, address) external;\n}\n"},"contracts/interfaces/external/IERC1271.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Interface for verifying contract-based account signatures\n/// @notice Interface that verifies provided signature for the data\n/// @dev Interface defined by EIP-1271\ninterface IERC1271 {\n    /// @notice Returns whether the provided signature is valid for the provided data\n    /// @dev MUST return the bytes4 magic value 0x1626ba7e when function passes.\n    /// MUST NOT modify state (using STATICCALL for solc < 0.5, view modifier for solc > 0.5).\n    /// MUST allow external calls.\n    /// @param hash Hash of the data to be signed\n    /// @param signature Signature byte array associated with _data\n    /// @return magicValue The bytes4 magic value 0x1626ba7e\n    function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\n}\n"},"contracts/interfaces/external/IERC20PermitAllowed.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Interface for permit\n/// @notice Interface used by DAI/CHAI for permit\ninterface IERC20PermitAllowed {\n    /// @notice Approve the spender to spend some tokens via the holder signature\n    /// @dev This is the permit interface used by DAI and CHAI\n    /// @param holder The address of the token holder, the token owner\n    /// @param spender The address of the token spender\n    /// @param nonce The holder's nonce, increases at each call to permit\n    /// @param expiry The timestamp at which the permit is no longer valid\n    /// @param allowed Boolean that sets approval amount, true for type(uint256).max and false for 0\n    /// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\n    /// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\n    /// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`\n    function permit(\n        address holder,\n        address spender,\n        uint256 nonce,\n        uint256 expiry,\n        bool allowed,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external;\n}\n"},"contracts/interfaces/external/ISAMB.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\n\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\n\n/// @title Interface for SAMB\ninterface ISAMB is IERC20 {\n    /// @notice Deposit ether to get wrapped ether\n    function deposit() external payable;\n\n    /// @notice Withdraw wrapped ether to get ether\n    function withdraw(uint256) external;\n}\n"},"contracts/interfaces/ICLMigrator.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\npragma abicoder v2;\n\nimport './IMulticall.sol';\nimport './ISelfPermit.sol';\nimport './IPoolInitializer.sol';\n\n/// @title CL Migrator\n/// @notice Enables migration of liqudity from AstraDEX-compatible pairs into AstraDEX CL pools\ninterface ICLMigrator is IMulticall, ISelfPermit, IPoolInitializer {\n    struct MigrateParams {\n        address pair; // the AstraDEX-compatible pair\n        uint256 liquidityToMigrate; // expected to be balanceOf(msg.sender)\n        uint8 percentageToMigrate; // represented as a numerator over 100\n        address token0;\n        address token1;\n        uint24 fee;\n        int24 tickLower;\n        int24 tickUpper;\n        uint256 amount0Min; // must be discounted by percentageToMigrate\n        uint256 amount1Min; // must be discounted by percentageToMigrate\n        address recipient;\n        uint256 deadline;\n        bool refundAsAMB;\n    }\n\n    /// @notice Migrates liquidity to CL by burning classic liquidity and minting a new position for CL\n    /// @dev Slippage protection is enforced via `amount{0,1}Min`, which should be a discount of the expected values of\n    /// the maximum amount of CL liquidity that the Classic liquidity can get. For the special case of migrating to an\n    /// out-of-range position, `amount{0,1}Min` may be set to 0, enforcing that the position remains out of range\n    /// @param params The params necessary to migrate Classic liquidity, encoded as `MigrateParams` in calldata\n    function migrate(MigrateParams calldata params) external;\n}\n"},"contracts/interfaces/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity ^0.7.0;\n\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\n\n/// @title IERC20Metadata\n/// @title Interface for ERC20 Metadata\n/// @notice Extension to IERC20 that includes token metadata\ninterface IERC20Metadata is IERC20 {\n    /// @return The name of the token\n    function name() external view returns (string memory);\n\n    /// @return The symbol of the token\n    function symbol() external view returns (string memory);\n\n    /// @return The number of decimal places the token has\n    function decimals() external view returns (uint8);\n}\n"},"contracts/interfaces/IERC721Permit.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\n\nimport '@openzeppelin/contracts/token/ERC721/IERC721.sol';\n\n/// @title ERC721 with permit\n/// @notice Extension to ERC721 that includes a permit function for signature based approvals\ninterface IERC721Permit is IERC721 {\n    /// @notice The permit typehash used in the permit signature\n    /// @return The typehash for the permit\n    function PERMIT_TYPEHASH() external pure returns (bytes32);\n\n    /// @notice The domain separator used in the permit signature\n    /// @return The domain seperator used in encoding of permit signature\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\n\n    /// @notice Approve of a specific token ID for spending by spender via signature\n    /// @param spender The account that is being approved\n    /// @param tokenId The ID of the token that is being approved for spending\n    /// @param deadline The deadline timestamp by which the call must be mined for the approve to work\n    /// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\n    /// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\n    /// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`\n    function permit(address spender, uint256 tokenId, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external payable;\n}\n"},"contracts/interfaces/IMulticall.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\npragma abicoder v2;\n\n/// @title Multicall interface\n/// @notice Enables calling multiple methods in a single call to the contract\ninterface IMulticall {\n    /// @notice Call multiple functions in the current contract and return the data from all of them if they all succeed\n    /// @dev The `msg.value` should not be trusted for any method callable from multicall.\n    /// @param data The encoded function data for each of the calls to make to this contract\n    /// @return results The results from each of the calls passed in via data\n    function multicall(bytes[] calldata data) external payable returns (bytes[] memory results);\n}\n"},"contracts/interfaces/INonfungiblePositionManager.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\npragma abicoder v2;\n\nimport '@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol';\nimport '@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol';\n\nimport './IPoolInitializer.sol';\nimport './IERC721Permit.sol';\nimport './IPeripheryPayments.sol';\nimport './IPeripheryImmutableState.sol';\n\n/// @title Non-fungible token for positions\n/// @notice Wraps AstraDEX CL positions in a non-fungible token interface which allows for them to be transferred\n/// and authorized.\ninterface INonfungiblePositionManager is\n    IPoolInitializer,\n    IPeripheryPayments,\n    IPeripheryImmutableState,\n    IERC721Metadata,\n    IERC721Enumerable,\n    IERC721Permit\n{\n    /// @notice Emitted when liquidity is increased for a position NFT\n    /// @dev Also emitted when a token is minted\n    /// @param tokenId The ID of the token for which liquidity was increased\n    /// @param liquidity The amount by which liquidity for the NFT position was increased\n    /// @param amount0 The amount of token0 that was paid for the increase in liquidity\n    /// @param amount1 The amount of token1 that was paid for the increase in liquidity\n    event IncreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1);\n    /// @notice Emitted when liquidity is decreased for a position NFT\n    /// @param tokenId The ID of the token for which liquidity was decreased\n    /// @param liquidity The amount by which liquidity for the NFT position was decreased\n    /// @param amount0 The amount of token0 that was accounted for the decrease in liquidity\n    /// @param amount1 The amount of token1 that was accounted for the decrease in liquidity\n    event DecreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1);\n    /// @notice Emitted when tokens are collected for a position NFT\n    /// @dev The amounts reported may not be exactly equivalent to the amounts transferred, due to rounding behavior\n    /// @param tokenId The ID of the token for which underlying tokens were collected\n    /// @param recipient The address of the account that received the collected tokens\n    /// @param amount0 The amount of token0 owed to the position that was collected\n    /// @param amount1 The amount of token1 owed to the position that was collected\n    event Collect(uint256 indexed tokenId, address recipient, uint256 amount0, uint256 amount1);\n\n    /// @notice Returns the position information associated with a given token ID.\n    /// @dev Throws if the token ID is not valid.\n    /// @param tokenId The ID of the token that represents the position\n    /// @return nonce The nonce for permits\n    /// @return operator The address that is approved for spending\n    /// @return token0 The address of the token0 for a specific pool\n    /// @return token1 The address of the token1 for a specific pool\n    /// @return fee The fee associated with the pool\n    /// @return tickLower The lower end of the tick range for the position\n    /// @return tickUpper The higher end of the tick range for the position\n    /// @return liquidity The liquidity of the position\n    /// @return feeGrowthInside0LastX128 The fee growth of token0 as of the last action on the individual position\n    /// @return feeGrowthInside1LastX128 The fee growth of token1 as of the last action on the individual position\n    /// @return tokensOwed0 The uncollected amount of token0 owed to the position as of the last computation\n    /// @return tokensOwed1 The uncollected amount of token1 owed to the position as of the last computation\n    function positions(\n        uint256 tokenId\n    )\n        external\n        view\n        returns (\n            uint96 nonce,\n            address operator,\n            address token0,\n            address token1,\n            uint24 fee,\n            int24 tickLower,\n            int24 tickUpper,\n            uint128 liquidity,\n            uint256 feeGrowthInside0LastX128,\n            uint256 feeGrowthInside1LastX128,\n            uint128 tokensOwed0,\n            uint128 tokensOwed1\n        );\n\n    struct MintParams {\n        address token0;\n        address token1;\n        uint24 fee;\n        int24 tickLower;\n        int24 tickUpper;\n        uint256 amount0Desired;\n        uint256 amount1Desired;\n        uint256 amount0Min;\n        uint256 amount1Min;\n        address recipient;\n        uint256 deadline;\n    }\n\n    /// @notice Creates a new position wrapped in a NFT\n    /// @dev Call this when the pool does exist and is initialized. Note that if the pool is created but not initialized\n    /// a method does not exist, i.e. the pool is assumed to be initialized.\n    /// @param params The params necessary to mint a position, encoded as `MintParams` in calldata\n    /// @return tokenId The ID of the token that represents the minted position\n    /// @return liquidity The amount of liquidity for this position\n    /// @return amount0 The amount of token0\n    /// @return amount1 The amount of token1\n    function mint(\n        MintParams calldata params\n    ) external payable returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1);\n\n    struct IncreaseLiquidityParams {\n        uint256 tokenId;\n        uint256 amount0Desired;\n        uint256 amount1Desired;\n        uint256 amount0Min;\n        uint256 amount1Min;\n        uint256 deadline;\n    }\n\n    /// @notice Increases the amount of liquidity in a position, with tokens paid by the `msg.sender`\n    /// @param params tokenId The ID of the token for which liquidity is being increased,\n    /// amount0Desired The desired amount of token0 to be spent,\n    /// amount1Desired The desired amount of token1 to be spent,\n    /// amount0Min The minimum amount of token0 to spend, which serves as a slippage check,\n    /// amount1Min The minimum amount of token1 to spend, which serves as a slippage check,\n    /// deadline The time by which the transaction must be included to effect the change\n    /// @return liquidity The new liquidity amount as a result of the increase\n    /// @return amount0 The amount of token0 to acheive resulting liquidity\n    /// @return amount1 The amount of token1 to acheive resulting liquidity\n    function increaseLiquidity(\n        IncreaseLiquidityParams calldata params\n    ) external payable returns (uint128 liquidity, uint256 amount0, uint256 amount1);\n\n    struct DecreaseLiquidityParams {\n        uint256 tokenId;\n        uint128 liquidity;\n        uint256 amount0Min;\n        uint256 amount1Min;\n        uint256 deadline;\n    }\n\n    /// @notice Decreases the amount of liquidity in a position and accounts it to the position\n    /// @param params tokenId The ID of the token for which liquidity is being decreased,\n    /// amount The amount by which liquidity will be decreased,\n    /// amount0Min The minimum amount of token0 that should be accounted for the burned liquidity,\n    /// amount1Min The minimum amount of token1 that should be accounted for the burned liquidity,\n    /// deadline The time by which the transaction must be included to effect the change\n    /// @return amount0 The amount of token0 accounted to the position's tokens owed\n    /// @return amount1 The amount of token1 accounted to the position's tokens owed\n    function decreaseLiquidity(\n        DecreaseLiquidityParams calldata params\n    ) external payable returns (uint256 amount0, uint256 amount1);\n\n    struct CollectParams {\n        uint256 tokenId;\n        address recipient;\n        uint128 amount0Max;\n        uint128 amount1Max;\n    }\n\n    /// @notice Collects up to a maximum amount of fees owed to a specific position to the recipient\n    /// @param params tokenId The ID of the NFT for which tokens are being collected,\n    /// recipient The account that should receive the tokens,\n    /// amount0Max The maximum amount of token0 to collect,\n    /// amount1Max The maximum amount of token1 to collect\n    /// @return amount0 The amount of fees collected in token0\n    /// @return amount1 The amount of fees collected in token1\n    function collect(CollectParams calldata params) external payable returns (uint256 amount0, uint256 amount1);\n\n    /// @notice Burns a token ID, which deletes it from the NFT contract. The token must have 0 liquidity and all tokens\n    /// must be collected first.\n    /// @param tokenId The ID of the token that is being burned\n    function burn(uint256 tokenId) external payable;\n}\n"},"contracts/interfaces/INonfungibleTokenPositionDescriptor.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\nimport './INonfungiblePositionManager.sol';\n\n/// @title Describes position NFT tokens via URI\ninterface INonfungibleTokenPositionDescriptor {\n    /// @notice Produces the URI describing a particular token ID for a position manager\n    /// @dev Note this URI may be a data: URI with the JSON contents directly inlined\n    /// @param positionManager The position manager for which to describe the token\n    /// @param tokenId The ID of the token for which to produce a description, which may not be valid\n    /// @return The URI of the ERC721-compliant metadata\n    function tokenURI(\n        INonfungiblePositionManager positionManager,\n        uint256 tokenId\n    ) external view returns (string memory);\n}\n"},"contracts/interfaces/IPeripheryImmutableState.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Immutable state\n/// @notice Functions that return immutable state of the router\ninterface IPeripheryImmutableState {\n    /// @return Returns the address of the AstraDEX CL factory\n    function factory() external view returns (address);\n\n    /// @return Returns the address of SAMB\n    function SAMB() external view returns (address);\n}\n"},"contracts/interfaces/IPeripheryPayments.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\n\n/// @title Periphery Payments\n/// @notice Functions to ease deposits and withdrawals of AMB\ninterface IPeripheryPayments {\n    /// @notice Unwraps the contract's SAMB balance and sends it to recipient as AMB.\n    /// @dev The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\n    /// @param amountMinimum The minimum amount of SAMB to unwrap\n    /// @param recipient The address receiving AMB\n    function unwrapSAMB(uint256 amountMinimum, address recipient) external payable;\n\n    /// @notice Refunds any AMB balance held by this contract to the `msg.sender`\n    /// @dev Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps\n    /// that use ether for the input amount\n    function refundAMB() external payable;\n\n    /// @notice Transfers the full amount of a token held by this contract to recipient\n    /// @dev The amountMinimum parameter prevents malicious contracts from stealing the token from users\n    /// @param token The contract address of the token which will be transferred to `recipient`\n    /// @param amountMinimum The minimum amount of token required for a transfer\n    /// @param recipient The destination address of the token\n    function sweepToken(address token, uint256 amountMinimum, address recipient) external payable;\n}\n"},"contracts/interfaces/IPeripheryPaymentsWithFee.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\n\nimport './IPeripheryPayments.sol';\n\n/// @title Periphery Payments\n/// @notice Functions to ease deposits and withdrawals of AMB\ninterface IPeripheryPaymentsWithFee is IPeripheryPayments {\n    /// @notice Unwraps the contract's SAMB balance and sends it to recipient as AMB, with a percentage between\n    /// 0 (exclusive), and 1 (inclusive) going to feeRecipient\n    /// @dev The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\n    function unwrapSAMBWithFee(\n        uint256 amountMinimum,\n        address recipient,\n        uint256 feeBips,\n        address feeRecipient\n    ) external payable;\n\n    /// @notice Transfers the full amount of a token held by this contract to recipient, with a percentage between\n    /// 0 (exclusive) and 1 (inclusive) going to feeRecipient\n    /// @dev The amountMinimum parameter prevents malicious contracts from stealing the token from users\n    function sweepTokenWithFee(\n        address token,\n        uint256 amountMinimum,\n        address recipient,\n        uint256 feeBips,\n        address feeRecipient\n    ) external payable;\n}\n"},"contracts/interfaces/IPoolInitializer.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\npragma abicoder v2;\n\n/// @title Creates and initializes CL Pools\n/// @notice Provides a method for creating and initializing a pool, if necessary, for bundling with other methods that\n/// require the pool to exist.\ninterface IPoolInitializer {\n    /// @notice Creates a new pool if it does not exist, then initializes if not initialized\n    /// @dev This method can be bundled with others via IMulticall for the first action (e.g. mint) performed against a pool\n    /// @param token0 The contract address of token0 of the pool\n    /// @param token1 The contract address of token1 of the pool\n    /// @param fee The fee amount of the CL pool for the specified token pair\n    /// @param sqrtPriceX96 The initial square root price of the pool as a Q64.96 value\n    /// @return pool Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary\n    function createAndInitializePoolIfNecessary(\n        address token0,\n        address token1,\n        uint24 fee,\n        uint160 sqrtPriceX96\n    ) external payable returns (address pool);\n}\n"},"contracts/interfaces/IQuoter.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\npragma abicoder v2;\n\n/// @title Quoter Interface\n/// @notice Supports quoting the calculated amounts from exact input or exact output swaps\n/// @dev These functions are not marked view because they rely on calling non-view functions and reverting\n/// to compute the result. They are also not gas efficient and should not be called on-chain.\ninterface IQuoter {\n    /// @notice Returns the amount out received for a given exact input swap without executing the swap\n    /// @param path The path of the swap, i.e. each token pair and the pool fee\n    /// @param amountIn The amount of the first token to swap\n    /// @return amountOut The amount of the last token that would be received\n    function quoteExactInput(bytes memory path, uint256 amountIn) external returns (uint256 amountOut);\n\n    /// @notice Returns the amount out received for a given exact input but for a swap of a single pool\n    /// @param tokenIn The token being swapped in\n    /// @param tokenOut The token being swapped out\n    /// @param fee The fee of the token pool to consider for the pair\n    /// @param amountIn The desired input amount\n    /// @param sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\n    /// @return amountOut The amount of `tokenOut` that would be received\n    function quoteExactInputSingle(\n        address tokenIn,\n        address tokenOut,\n        uint24 fee,\n        uint256 amountIn,\n        uint160 sqrtPriceLimitX96\n    ) external returns (uint256 amountOut);\n\n    /// @notice Returns the amount in required for a given exact output swap without executing the swap\n    /// @param path The path of the swap, i.e. each token pair and the pool fee. Path must be provided in reverse order\n    /// @param amountOut The amount of the last token to receive\n    /// @return amountIn The amount of first token required to be paid\n    function quoteExactOutput(bytes memory path, uint256 amountOut) external returns (uint256 amountIn);\n\n    /// @notice Returns the amount in required to receive the given exact output amount but for a swap of a single pool\n    /// @param tokenIn The token being swapped in\n    /// @param tokenOut The token being swapped out\n    /// @param fee The fee of the token pool to consider for the pair\n    /// @param amountOut The desired output amount\n    /// @param sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\n    /// @return amountIn The amount required as the input for the swap in order to receive `amountOut`\n    function quoteExactOutputSingle(\n        address tokenIn,\n        address tokenOut,\n        uint24 fee,\n        uint256 amountOut,\n        uint160 sqrtPriceLimitX96\n    ) external returns (uint256 amountIn);\n}\n"},"contracts/interfaces/IQuoterV2.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\npragma abicoder v2;\n\n/// @title QuoterV2 Interface\n/// @notice Supports quoting the calculated amounts from exact input or exact output swaps.\n/// @notice For each pool also tells you the number of initialized ticks crossed and the sqrt price of the pool after the swap.\n/// @dev These functions are not marked view because they rely on calling non-view functions and reverting\n/// to compute the result. They are also not gas efficient and should not be called on-chain.\ninterface IQuoterV2 {\n    /// @notice Returns the amount out received for a given exact input swap without executing the swap\n    /// @param path The path of the swap, i.e. each token pair and the pool fee\n    /// @param amountIn The amount of the first token to swap\n    /// @return amountOut The amount of the last token that would be received\n    /// @return sqrtPriceX96AfterList List of the sqrt price after the swap for each pool in the path\n    /// @return initializedTicksCrossedList List of the initialized ticks that the swap crossed for each pool in the path\n    /// @return gasEstimate The estimate of the gas that the swap consumes\n    function quoteExactInput(\n        bytes memory path,\n        uint256 amountIn\n    )\n        external\n        returns (\n            uint256 amountOut,\n            uint160[] memory sqrtPriceX96AfterList,\n            uint32[] memory initializedTicksCrossedList,\n            uint256 gasEstimate\n        );\n\n    struct QuoteExactInputSingleParams {\n        address tokenIn;\n        address tokenOut;\n        uint256 amountIn;\n        uint24 fee;\n        uint160 sqrtPriceLimitX96;\n    }\n\n    /// @notice Returns the amount out received for a given exact input but for a swap of a single pool\n    /// @param params The params for the quote, encoded as `QuoteExactInputSingleParams`\n    /// tokenIn The token being swapped in\n    /// tokenOut The token being swapped out\n    /// fee The fee of the token pool to consider for the pair\n    /// amountIn The desired input amount\n    /// sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\n    /// @return amountOut The amount of `tokenOut` that would be received\n    /// @return sqrtPriceX96After The sqrt price of the pool after the swap\n    /// @return initializedTicksCrossed The number of initialized ticks that the swap crossed\n    /// @return gasEstimate The estimate of the gas that the swap consumes\n    function quoteExactInputSingle(\n        QuoteExactInputSingleParams memory params\n    )\n        external\n        returns (uint256 amountOut, uint160 sqrtPriceX96After, uint32 initializedTicksCrossed, uint256 gasEstimate);\n\n    /// @notice Returns the amount in required for a given exact output swap without executing the swap\n    /// @param path The path of the swap, i.e. each token pair and the pool fee. Path must be provided in reverse order\n    /// @param amountOut The amount of the last token to receive\n    /// @return amountIn The amount of first token required to be paid\n    /// @return sqrtPriceX96AfterList List of the sqrt price after the swap for each pool in the path\n    /// @return initializedTicksCrossedList List of the initialized ticks that the swap crossed for each pool in the path\n    /// @return gasEstimate The estimate of the gas that the swap consumes\n    function quoteExactOutput(\n        bytes memory path,\n        uint256 amountOut\n    )\n        external\n        returns (\n            uint256 amountIn,\n            uint160[] memory sqrtPriceX96AfterList,\n            uint32[] memory initializedTicksCrossedList,\n            uint256 gasEstimate\n        );\n\n    struct QuoteExactOutputSingleParams {\n        address tokenIn;\n        address tokenOut;\n        uint256 amount;\n        uint24 fee;\n        uint160 sqrtPriceLimitX96;\n    }\n\n    /// @notice Returns the amount in required to receive the given exact output amount but for a swap of a single pool\n    /// @param params The params for the quote, encoded as `QuoteExactOutputSingleParams`\n    /// tokenIn The token being swapped in\n    /// tokenOut The token being swapped out\n    /// fee The fee of the token pool to consider for the pair\n    /// amountOut The desired output amount\n    /// sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\n    /// @return amountIn The amount required as the input for the swap in order to receive `amountOut`\n    /// @return sqrtPriceX96After The sqrt price of the pool after the swap\n    /// @return initializedTicksCrossed The number of initialized ticks that the swap crossed\n    /// @return gasEstimate The estimate of the gas that the swap consumes\n    function quoteExactOutputSingle(\n        QuoteExactOutputSingleParams memory params\n    )\n        external\n        returns (uint256 amountIn, uint160 sqrtPriceX96After, uint32 initializedTicksCrossed, uint256 gasEstimate);\n}\n"},"contracts/interfaces/ISelfPermit.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\n\n/// @title Self Permit\n/// @notice Functionality to call permit on any EIP-2612-compliant token for use in the route\ninterface ISelfPermit {\n    /// @notice Permits this contract to spend a given token from `msg.sender`\n    /// @dev The `owner` is always msg.sender and the `spender` is always address(this).\n    /// @param token The address of the token spent\n    /// @param value The amount that can be spent of token\n    /// @param deadline A timestamp, the current blocktime must be less than or equal to this timestamp\n    /// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\n    /// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\n    /// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`\n    function selfPermit(address token, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external payable;\n\n    /// @notice Permits this contract to spend a given token from `msg.sender`\n    /// @dev The `owner` is always msg.sender and the `spender` is always address(this).\n    /// Can be used instead of #selfPermit to prevent calls from failing due to a frontrun of a call to #selfPermit\n    /// @param token The address of the token spent\n    /// @param value The amount that can be spent of token\n    /// @param deadline A timestamp, the current blocktime must be less than or equal to this timestamp\n    /// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\n    /// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\n    /// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`\n    function selfPermitIfNecessary(\n        address token,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external payable;\n\n    /// @notice Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\n    /// @dev The `owner` is always msg.sender and the `spender` is always address(this)\n    /// @param token The address of the token spent\n    /// @param nonce The current nonce of the owner\n    /// @param expiry The timestamp at which the permit is no longer valid\n    /// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\n    /// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\n    /// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`\n    function selfPermitAllowed(\n        address token,\n        uint256 nonce,\n        uint256 expiry,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external payable;\n\n    /// @notice Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\n    /// @dev The `owner` is always msg.sender and the `spender` is always address(this)\n    /// Can be used instead of #selfPermitAllowed to prevent calls from failing due to a frontrun of a call to #selfPermitAllowed.\n    /// @param token The address of the token spent\n    /// @param nonce The current nonce of the owner\n    /// @param expiry The timestamp at which the permit is no longer valid\n    /// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\n    /// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\n    /// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`\n    function selfPermitAllowedIfNecessary(\n        address token,\n        uint256 nonce,\n        uint256 expiry,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external payable;\n}\n"},"contracts/interfaces/ISwapRouter.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\npragma abicoder v2;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol';\n\n/// @title Router token swapping functionality\n/// @notice Functions for swapping tokens via AstraDEX CL\ninterface ISwapRouter is IAstraCLSwapCallback {\n    struct ExactInputSingleParams {\n        address tokenIn;\n        address tokenOut;\n        uint24 fee;\n        address recipient;\n        uint256 deadline;\n        uint256 amountIn;\n        uint256 amountOutMinimum;\n        uint160 sqrtPriceLimitX96;\n    }\n\n    /// @notice Swaps `amountIn` of one token for as much as possible of another token\n    /// @param params The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\n    /// @return amountOut The amount of the received token\n    function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut);\n\n    struct ExactInputParams {\n        bytes path;\n        address recipient;\n        uint256 deadline;\n        uint256 amountIn;\n        uint256 amountOutMinimum;\n    }\n\n    /// @notice Swaps `amountIn` of one token for as much as possible of another along the specified path\n    /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\n    /// @return amountOut The amount of the received token\n    function exactInput(ExactInputParams calldata params) external payable returns (uint256 amountOut);\n\n    struct ExactOutputSingleParams {\n        address tokenIn;\n        address tokenOut;\n        uint24 fee;\n        address recipient;\n        uint256 deadline;\n        uint256 amountOut;\n        uint256 amountInMaximum;\n        uint160 sqrtPriceLimitX96;\n    }\n\n    /// @notice Swaps as little as possible of one token for `amountOut` of another token\n    /// @param params The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\n    /// @return amountIn The amount of the input token\n    function exactOutputSingle(ExactOutputSingleParams calldata params) external payable returns (uint256 amountIn);\n\n    struct ExactOutputParams {\n        bytes path;\n        address recipient;\n        uint256 deadline;\n        uint256 amountOut;\n        uint256 amountInMaximum;\n    }\n\n    /// @notice Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)\n    /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\n    /// @return amountIn The amount of the input token\n    function exactOutput(ExactOutputParams calldata params) external payable returns (uint256 amountIn);\n}\n"},"contracts/interfaces/ITickLens.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\npragma abicoder v2;\n\n/// @title Tick Lens\n/// @notice Provides functions for fetching chunks of tick data for a pool\n/// @dev This avoids the waterfall of fetching the tick bitmap, parsing the bitmap to know which ticks to fetch, and\n/// then sending additional multicalls to fetch the tick data\ninterface ITickLens {\n    struct PopulatedTick {\n        int24 tick;\n        int128 liquidityNet;\n        uint128 liquidityGross;\n    }\n\n    /// @notice Get all the tick data for the populated ticks from a word of the tick bitmap of a pool\n    /// @param pool The address of the pool for which to fetch populated tick data\n    /// @param tickBitmapIndex The index of the word in the tick bitmap for which to parse the bitmap and\n    /// fetch all the populated ticks\n    /// @return populatedTicks An array of tick data for the given word in the tick bitmap\n    function getPopulatedTicksInWord(\n        address pool,\n        int16 tickBitmapIndex\n    ) external view returns (PopulatedTick[] memory populatedTicks);\n}\n"},"contracts/lens/Quoter.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\npragma abicoder v2;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/SafeCast.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/TickMath.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol';\n\nimport '../interfaces/IQuoter.sol';\nimport '../base/PeripheryImmutableState.sol';\nimport '../libraries/Path.sol';\nimport '../libraries/PoolAddress.sol';\nimport '../libraries/CallbackValidation.sol';\n\n/// @title Provides quotes for swaps\n/// @notice Allows getting the expected amount out or amount in for a given swap without executing the swap\n/// @dev These functions are not gas efficient and should _not_ be called on chain. Instead, optimistically execute\n/// the swap and check the amounts in the callback.\ncontract Quoter is IQuoter, IAstraCLSwapCallback, PeripheryImmutableState {\n    using Path for bytes;\n    using SafeCast for uint256;\n\n    /// @dev Transient storage variable used to check a safety condition in exact output swaps.\n    uint256 private amountOutCached;\n\n    constructor(address _factory, address _SAMB) PeripheryImmutableState(_factory, _SAMB) {}\n\n    function getPool(address tokenA, address tokenB, uint24 fee) private view returns (IAstraCLPool) {\n        return IAstraCLPool(PoolAddress.computeAddress(factory, PoolAddress.getPoolKey(tokenA, tokenB, fee)));\n    }\n\n    /// @inheritdoc IAstraCLSwapCallback\n    function astraCLSwapCallback(int256 amount0Delta, int256 amount1Delta, bytes memory path) external view override {\n        require(amount0Delta > 0 || amount1Delta > 0); // swaps entirely within 0-liquidity regions are not supported\n        (address tokenIn, address tokenOut, uint24 fee) = path.decodeFirstPool();\n        CallbackValidation.verifyCallback(factory, tokenIn, tokenOut, fee);\n\n        (bool isExactInput, uint256 amountToPay, uint256 amountReceived) = amount0Delta > 0\n            ? (tokenIn < tokenOut, uint256(amount0Delta), uint256(-amount1Delta))\n            : (tokenOut < tokenIn, uint256(amount1Delta), uint256(-amount0Delta));\n        if (isExactInput) {\n            assembly {\n                let ptr := mload(0x40)\n                mstore(ptr, amountReceived)\n                revert(ptr, 32)\n            }\n        } else {\n            // if the cache has been populated, ensure that the full output amount has been received\n            if (amountOutCached != 0) require(amountReceived == amountOutCached);\n            assembly {\n                let ptr := mload(0x40)\n                mstore(ptr, amountToPay)\n                revert(ptr, 32)\n            }\n        }\n    }\n\n    /// @dev Parses a revert reason that should contain the numeric quote\n    function parseRevertReason(bytes memory reason) private pure returns (uint256) {\n        if (reason.length != 32) {\n            if (reason.length < 68) revert('Unexpected error');\n            assembly {\n                reason := add(reason, 0x04)\n            }\n            revert(abi.decode(reason, (string)));\n        }\n        return abi.decode(reason, (uint256));\n    }\n\n    /// @inheritdoc IQuoter\n    function quoteExactInputSingle(\n        address tokenIn,\n        address tokenOut,\n        uint24 fee,\n        uint256 amountIn,\n        uint160 sqrtPriceLimitX96\n    ) public override returns (uint256 amountOut) {\n        bool zeroForOne = tokenIn < tokenOut;\n\n        try\n            getPool(tokenIn, tokenOut, fee).swap(\n                address(this), // address(0) might cause issues with some tokens\n                zeroForOne,\n                amountIn.toInt256(),\n                sqrtPriceLimitX96 == 0\n                    ? (zeroForOne ? TickMath.MIN_SQRT_RATIO + 1 : TickMath.MAX_SQRT_RATIO - 1)\n                    : sqrtPriceLimitX96,\n                abi.encodePacked(tokenIn, fee, tokenOut)\n            )\n        {} catch (bytes memory reason) {\n            return parseRevertReason(reason);\n        }\n    }\n\n    /// @inheritdoc IQuoter\n    function quoteExactInput(bytes memory path, uint256 amountIn) external override returns (uint256 amountOut) {\n        while (true) {\n            bool hasMultiplePools = path.hasMultiplePools();\n\n            (address tokenIn, address tokenOut, uint24 fee) = path.decodeFirstPool();\n\n            // the outputs of prior swaps become the inputs to subsequent ones\n            amountIn = quoteExactInputSingle(tokenIn, tokenOut, fee, amountIn, 0);\n\n            // decide whether to continue or terminate\n            if (hasMultiplePools) {\n                path = path.skipToken();\n            } else {\n                return amountIn;\n            }\n        }\n    }\n\n    /// @inheritdoc IQuoter\n    function quoteExactOutputSingle(\n        address tokenIn,\n        address tokenOut,\n        uint24 fee,\n        uint256 amountOut,\n        uint160 sqrtPriceLimitX96\n    ) public override returns (uint256 amountIn) {\n        bool zeroForOne = tokenIn < tokenOut;\n\n        // if no price limit has been specified, cache the output amount for comparison in the swap callback\n        if (sqrtPriceLimitX96 == 0) amountOutCached = amountOut;\n        try\n            getPool(tokenIn, tokenOut, fee).swap(\n                address(this), // address(0) might cause issues with some tokens\n                zeroForOne,\n                -amountOut.toInt256(),\n                sqrtPriceLimitX96 == 0\n                    ? (zeroForOne ? TickMath.MIN_SQRT_RATIO + 1 : TickMath.MAX_SQRT_RATIO - 1)\n                    : sqrtPriceLimitX96,\n                abi.encodePacked(tokenOut, fee, tokenIn)\n            )\n        {} catch (bytes memory reason) {\n            if (sqrtPriceLimitX96 == 0) delete amountOutCached; // clear cache\n            return parseRevertReason(reason);\n        }\n    }\n\n    /// @inheritdoc IQuoter\n    function quoteExactOutput(bytes memory path, uint256 amountOut) external override returns (uint256 amountIn) {\n        while (true) {\n            bool hasMultiplePools = path.hasMultiplePools();\n\n            (address tokenOut, address tokenIn, uint24 fee) = path.decodeFirstPool();\n\n            // the inputs of prior swaps become the outputs of subsequent ones\n            amountOut = quoteExactOutputSingle(tokenIn, tokenOut, fee, amountOut, 0);\n\n            // decide whether to continue or terminate\n            if (hasMultiplePools) {\n                path = path.skipToken();\n            } else {\n                return amountOut;\n            }\n        }\n    }\n}\n"},"contracts/lens/QuoterV2.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\npragma abicoder v2;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/SafeCast.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/TickMath.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/TickBitmap.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol';\n\nimport '../interfaces/IQuoterV2.sol';\nimport '../base/PeripheryImmutableState.sol';\nimport '../libraries/Path.sol';\nimport '../libraries/PoolAddress.sol';\nimport '../libraries/CallbackValidation.sol';\nimport '../libraries/PoolTicksCounter.sol';\n\n/// @title Provides quotes for swaps\n/// @notice Allows getting the expected amount out or amount in for a given swap without executing the swap\n/// @dev These functions are not gas efficient and should _not_ be called on chain. Instead, optimistically execute\n/// the swap and check the amounts in the callback.\ncontract QuoterV2 is IQuoterV2, IAstraCLSwapCallback, PeripheryImmutableState {\n    using Path for bytes;\n    using SafeCast for uint256;\n    using PoolTicksCounter for IAstraCLPool;\n\n    /// @dev Transient storage variable used to check a safety condition in exact output swaps.\n    uint256 private amountOutCached;\n\n    constructor(address _factory, address _SAMB) PeripheryImmutableState(_factory, _SAMB) {}\n\n    function getPool(address tokenA, address tokenB, uint24 fee) private view returns (IAstraCLPool) {\n        return IAstraCLPool(PoolAddress.computeAddress(factory, PoolAddress.getPoolKey(tokenA, tokenB, fee)));\n    }\n\n    /// @inheritdoc IAstraCLSwapCallback\n    function astraCLSwapCallback(int256 amount0Delta, int256 amount1Delta, bytes memory path) external view override {\n        require(amount0Delta > 0 || amount1Delta > 0); // swaps entirely within 0-liquidity regions are not supported\n        (address tokenIn, address tokenOut, uint24 fee) = path.decodeFirstPool();\n        CallbackValidation.verifyCallback(factory, tokenIn, tokenOut, fee);\n\n        (bool isExactInput, uint256 amountToPay, uint256 amountReceived) = amount0Delta > 0\n            ? (tokenIn < tokenOut, uint256(amount0Delta), uint256(-amount1Delta))\n            : (tokenOut < tokenIn, uint256(amount1Delta), uint256(-amount0Delta));\n\n        IAstraCLPool pool = getPool(tokenIn, tokenOut, fee);\n        (uint160 sqrtPriceX96After, int24 tickAfter, , , , , ) = pool.slot0();\n\n        if (isExactInput) {\n            assembly {\n                let ptr := mload(0x40)\n                mstore(ptr, amountReceived)\n                mstore(add(ptr, 0x20), sqrtPriceX96After)\n                mstore(add(ptr, 0x40), tickAfter)\n                revert(ptr, 96)\n            }\n        } else {\n            // if the cache has been populated, ensure that the full output amount has been received\n            if (amountOutCached != 0) require(amountReceived == amountOutCached);\n            assembly {\n                let ptr := mload(0x40)\n                mstore(ptr, amountToPay)\n                mstore(add(ptr, 0x20), sqrtPriceX96After)\n                mstore(add(ptr, 0x40), tickAfter)\n                revert(ptr, 96)\n            }\n        }\n    }\n\n    /// @dev Parses a revert reason that should contain the numeric quote\n    function parseRevertReason(\n        bytes memory reason\n    ) private pure returns (uint256 amount, uint160 sqrtPriceX96After, int24 tickAfter) {\n        if (reason.length != 96) {\n            if (reason.length < 68) revert('Unexpected error');\n            assembly {\n                reason := add(reason, 0x04)\n            }\n            revert(abi.decode(reason, (string)));\n        }\n        return abi.decode(reason, (uint256, uint160, int24));\n    }\n\n    function handleRevert(\n        bytes memory reason,\n        IAstraCLPool pool,\n        uint256 gasEstimate\n    ) private view returns (uint256 amount, uint160 sqrtPriceX96After, uint32 initializedTicksCrossed, uint256) {\n        int24 tickBefore;\n        int24 tickAfter;\n        (, tickBefore, , , , , ) = pool.slot0();\n        (amount, sqrtPriceX96After, tickAfter) = parseRevertReason(reason);\n\n        initializedTicksCrossed = pool.countInitializedTicksCrossed(tickBefore, tickAfter);\n\n        return (amount, sqrtPriceX96After, initializedTicksCrossed, gasEstimate);\n    }\n\n    function quoteExactInputSingle(\n        QuoteExactInputSingleParams memory params\n    )\n        public\n        override\n        returns (uint256 amountOut, uint160 sqrtPriceX96After, uint32 initializedTicksCrossed, uint256 gasEstimate)\n    {\n        bool zeroForOne = params.tokenIn < params.tokenOut;\n        IAstraCLPool pool = getPool(params.tokenIn, params.tokenOut, params.fee);\n\n        uint256 gasBefore = gasleft();\n        try\n            pool.swap(\n                address(this), // address(0) might cause issues with some tokens\n                zeroForOne,\n                params.amountIn.toInt256(),\n                params.sqrtPriceLimitX96 == 0\n                    ? (zeroForOne ? TickMath.MIN_SQRT_RATIO + 1 : TickMath.MAX_SQRT_RATIO - 1)\n                    : params.sqrtPriceLimitX96,\n                abi.encodePacked(params.tokenIn, params.fee, params.tokenOut)\n            )\n        {} catch (bytes memory reason) {\n            gasEstimate = gasBefore - gasleft();\n            return handleRevert(reason, pool, gasEstimate);\n        }\n    }\n\n    function quoteExactInput(\n        bytes memory path,\n        uint256 amountIn\n    )\n        public\n        override\n        returns (\n            uint256 amountOut,\n            uint160[] memory sqrtPriceX96AfterList,\n            uint32[] memory initializedTicksCrossedList,\n            uint256 gasEstimate\n        )\n    {\n        sqrtPriceX96AfterList = new uint160[](path.numPools());\n        initializedTicksCrossedList = new uint32[](path.numPools());\n\n        uint256 i = 0;\n        while (true) {\n            (address tokenIn, address tokenOut, uint24 fee) = path.decodeFirstPool();\n\n            // the outputs of prior swaps become the inputs to subsequent ones\n            (\n                uint256 _amountOut,\n                uint160 _sqrtPriceX96After,\n                uint32 _initializedTicksCrossed,\n                uint256 _gasEstimate\n            ) = quoteExactInputSingle(\n                    QuoteExactInputSingleParams({\n                        tokenIn: tokenIn,\n                        tokenOut: tokenOut,\n                        fee: fee,\n                        amountIn: amountIn,\n                        sqrtPriceLimitX96: 0\n                    })\n                );\n\n            sqrtPriceX96AfterList[i] = _sqrtPriceX96After;\n            initializedTicksCrossedList[i] = _initializedTicksCrossed;\n            amountIn = _amountOut;\n            gasEstimate += _gasEstimate;\n            i++;\n\n            // decide whether to continue or terminate\n            if (path.hasMultiplePools()) {\n                path = path.skipToken();\n            } else {\n                return (amountIn, sqrtPriceX96AfterList, initializedTicksCrossedList, gasEstimate);\n            }\n        }\n    }\n\n    function quoteExactOutputSingle(\n        QuoteExactOutputSingleParams memory params\n    )\n        public\n        override\n        returns (uint256 amountIn, uint160 sqrtPriceX96After, uint32 initializedTicksCrossed, uint256 gasEstimate)\n    {\n        bool zeroForOne = params.tokenIn < params.tokenOut;\n        IAstraCLPool pool = getPool(params.tokenIn, params.tokenOut, params.fee);\n\n        // if no price limit has been specified, cache the output amount for comparison in the swap callback\n        if (params.sqrtPriceLimitX96 == 0) amountOutCached = params.amount;\n        uint256 gasBefore = gasleft();\n        try\n            pool.swap(\n                address(this), // address(0) might cause issues with some tokens\n                zeroForOne,\n                -params.amount.toInt256(),\n                params.sqrtPriceLimitX96 == 0\n                    ? (zeroForOne ? TickMath.MIN_SQRT_RATIO + 1 : TickMath.MAX_SQRT_RATIO - 1)\n                    : params.sqrtPriceLimitX96,\n                abi.encodePacked(params.tokenOut, params.fee, params.tokenIn)\n            )\n        {} catch (bytes memory reason) {\n            gasEstimate = gasBefore - gasleft();\n            if (params.sqrtPriceLimitX96 == 0) delete amountOutCached; // clear cache\n            return handleRevert(reason, pool, gasEstimate);\n        }\n    }\n\n    function quoteExactOutput(\n        bytes memory path,\n        uint256 amountOut\n    )\n        public\n        override\n        returns (\n            uint256 amountIn,\n            uint160[] memory sqrtPriceX96AfterList,\n            uint32[] memory initializedTicksCrossedList,\n            uint256 gasEstimate\n        )\n    {\n        sqrtPriceX96AfterList = new uint160[](path.numPools());\n        initializedTicksCrossedList = new uint32[](path.numPools());\n\n        uint256 i = 0;\n        while (true) {\n            (address tokenOut, address tokenIn, uint24 fee) = path.decodeFirstPool();\n\n            // the inputs of prior swaps become the outputs of subsequent ones\n            (\n                uint256 _amountIn,\n                uint160 _sqrtPriceX96After,\n                uint32 _initializedTicksCrossed,\n                uint256 _gasEstimate\n            ) = quoteExactOutputSingle(\n                    QuoteExactOutputSingleParams({\n                        tokenIn: tokenIn,\n                        tokenOut: tokenOut,\n                        amount: amountOut,\n                        fee: fee,\n                        sqrtPriceLimitX96: 0\n                    })\n                );\n\n            sqrtPriceX96AfterList[i] = _sqrtPriceX96After;\n            initializedTicksCrossedList[i] = _initializedTicksCrossed;\n            amountOut = _amountIn;\n            gasEstimate += _gasEstimate;\n            i++;\n\n            // decide whether to continue or terminate\n            if (path.hasMultiplePools()) {\n                path = path.skipToken();\n            } else {\n                return (amountOut, sqrtPriceX96AfterList, initializedTicksCrossedList, gasEstimate);\n            }\n        }\n    }\n}\n"},"contracts/lens/TickLens.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\npragma abicoder v2;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol';\n\nimport '../interfaces/ITickLens.sol';\n\n/// @title Tick Lens contract\ncontract TickLens is ITickLens {\n    /// @inheritdoc ITickLens\n    function getPopulatedTicksInWord(\n        address pool,\n        int16 tickBitmapIndex\n    ) public view override returns (PopulatedTick[] memory populatedTicks) {\n        // fetch bitmap\n        uint256 bitmap = IAstraCLPool(pool).tickBitmap(tickBitmapIndex);\n\n        // calculate the number of populated ticks\n        uint256 numberOfPopulatedTicks;\n        for (uint256 i = 0; i < 256; i++) {\n            if (bitmap & (1 << i) > 0) numberOfPopulatedTicks++;\n        }\n\n        // fetch populated tick data\n        int24 tickSpacing = IAstraCLPool(pool).tickSpacing();\n        populatedTicks = new PopulatedTick[](numberOfPopulatedTicks);\n        for (uint256 i = 0; i < 256; i++) {\n            if (bitmap & (1 << i) > 0) {\n                int24 populatedTick = ((int24(tickBitmapIndex) << 8) + int24(i)) * tickSpacing;\n                (uint128 liquidityGross, int128 liquidityNet, , , , , , ) = IAstraCLPool(pool).ticks(populatedTick);\n                populatedTicks[--numberOfPopulatedTicks] = PopulatedTick({\n                    tick: populatedTick,\n                    liquidityNet: liquidityNet,\n                    liquidityGross: liquidityGross\n                });\n            }\n        }\n    }\n}\n"},"contracts/libraries/AddressStringUtil.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.5.0;\n\nlibrary AddressStringUtil {\n    // converts an address to the uppercase hex string, extracting only len bytes (up to 20, multiple of 2)\n    function toAsciiString(address addr, uint256 len) internal pure returns (string memory) {\n        require(len % 2 == 0 && len > 0 && len <= 40, 'AddressStringUtil: INVALID_LEN');\n\n        bytes memory s = new bytes(len);\n        uint256 addrNum = uint256(addr);\n        for (uint256 i = 0; i < len / 2; i++) {\n            // shift right and truncate all but the least significant byte to extract the byte at position 19-i\n            uint8 b = uint8(addrNum >> (8 * (19 - i)));\n            // first hex character is the most significant 4 bits\n            uint8 hi = b >> 4;\n            // second hex character is the least significant 4 bits\n            uint8 lo = b - (hi << 4);\n            s[2 * i] = char(hi);\n            s[2 * i + 1] = char(lo);\n        }\n        return string(s);\n    }\n\n    // hi and lo are only 4 bits and between 0 and 16\n    // this method converts those values to the unicode/ascii code point for the hex representation\n    // uses upper case for the characters\n    function char(uint8 b) private pure returns (bytes1 c) {\n        if (b < 10) {\n            return bytes1(b + 0x30);\n        } else {\n            return bytes1(b + 0x37);\n        }\n    }\n}\n"},"contracts/libraries/BytesLib.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\n/*\n * @title Solidity Bytes Arrays Utils\n * @author Gonçalo Sá <goncalo.sa@consensys.net>\n *\n * @dev Bytes tightly packed arrays utility library for ethereum contracts written in Solidity.\n *      The library lets you concatenate, slice and type cast bytes arrays both in memory and storage.\n */\npragma solidity >=0.5.0 <0.8.0;\n\nlibrary BytesLib {\n    function slice(bytes memory _bytes, uint256 _start, uint256 _length) internal pure returns (bytes memory) {\n        require(_length + 31 >= _length, 'slice_overflow');\n        require(_start + _length >= _start, 'slice_overflow');\n        require(_bytes.length >= _start + _length, 'slice_outOfBounds');\n\n        bytes memory tempBytes;\n\n        assembly {\n            switch iszero(_length)\n            case 0 {\n                // Get a location of some free memory and store it in tempBytes as\n                // Solidity does for memory variables.\n                tempBytes := mload(0x40)\n\n                // The first word of the slice result is potentially a partial\n                // word read from the original array. To read it, we calculate\n                // the length of that partial word and start copying that many\n                // bytes into the array. The first word we copy will start with\n                // data we don't care about, but the last `lengthmod` bytes will\n                // land at the beginning of the contents of the new array. When\n                // we're done copying, we overwrite the full first word with\n                // the actual length of the slice.\n                let lengthmod := and(_length, 31)\n\n                // The multiplication in the next line is necessary\n                // because when slicing multiples of 32 bytes (lengthmod == 0)\n                // the following copy loop was copying the origin's length\n                // and then ending prematurely not copying everything it should.\n                let mc := add(add(tempBytes, lengthmod), mul(0x20, iszero(lengthmod)))\n                let end := add(mc, _length)\n\n                for {\n                    // The multiplication in the next line has the same exact purpose\n                    // as the one above.\n                    let cc := add(add(add(_bytes, lengthmod), mul(0x20, iszero(lengthmod))), _start)\n                } lt(mc, end) {\n                    mc := add(mc, 0x20)\n                    cc := add(cc, 0x20)\n                } {\n                    mstore(mc, mload(cc))\n                }\n\n                mstore(tempBytes, _length)\n\n                //update free-memory pointer\n                //allocating the array padded to 32 bytes like the compiler does now\n                mstore(0x40, and(add(mc, 31), not(31)))\n            }\n            //if we want a zero-length slice let's just return a zero-length array\n            default {\n                tempBytes := mload(0x40)\n                //zero out the 32 bytes slice we are about to return\n                //we need to do it because Solidity does not garbage collect\n                mstore(tempBytes, 0)\n\n                mstore(0x40, add(tempBytes, 0x20))\n            }\n        }\n\n        return tempBytes;\n    }\n\n    function toAddress(bytes memory _bytes, uint256 _start) internal pure returns (address) {\n        require(_start + 20 >= _start, 'toAddress_overflow');\n        require(_bytes.length >= _start + 20, 'toAddress_outOfBounds');\n        address tempAddress;\n\n        assembly {\n            tempAddress := div(mload(add(add(_bytes, 0x20), _start)), 0x1000000000000000000000000)\n        }\n\n        return tempAddress;\n    }\n\n    function toUint24(bytes memory _bytes, uint256 _start) internal pure returns (uint24) {\n        require(_start + 3 >= _start, 'toUint24_overflow');\n        require(_bytes.length >= _start + 3, 'toUint24_outOfBounds');\n        uint24 tempUint;\n\n        assembly {\n            tempUint := mload(add(add(_bytes, 0x3), _start))\n        }\n\n        return tempUint;\n    }\n}\n"},"contracts/libraries/CallbackValidation.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol';\nimport './PoolAddress.sol';\n\n/// @notice Provides validation for callbacks from AstraDEX CL Pools\nlibrary CallbackValidation {\n    /// @notice Returns the address of a valid AstraDEX CL Pool\n    /// @param factory The contract address of the AstraDEX CL factory\n    /// @param tokenA The contract address of either token0 or token1\n    /// @param tokenB The contract address of the other token\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n    /// @return pool The CL pool contract address\n    function verifyCallback(\n        address factory,\n        address tokenA,\n        address tokenB,\n        uint24 fee\n    ) internal view returns (IAstraCLPool pool) {\n        return verifyCallback(factory, PoolAddress.getPoolKey(tokenA, tokenB, fee));\n    }\n\n    /// @notice Returns the address of a valid AstraDEX CL Pool\n    /// @param factory The contract address of the AstraDEX CL factory\n    /// @param poolKey The identifying key of the CL pool\n    /// @return pool The CL pool contract address\n    function verifyCallback(\n        address factory,\n        PoolAddress.PoolKey memory poolKey\n    ) internal view returns (IAstraCLPool pool) {\n        pool = IAstraCLPool(PoolAddress.computeAddress(factory, poolKey));\n        require(msg.sender == address(pool));\n    }\n}\n"},"contracts/libraries/ChainId.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.0;\n\n/// @title Function for getting the current chain ID\nlibrary ChainId {\n    /// @dev Gets the current chain ID\n    /// @return chainId The current chain ID\n    function get() internal pure returns (uint256 chainId) {\n        assembly {\n            chainId := chainid()\n        }\n    }\n}\n"},"contracts/libraries/HexStrings.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity =0.7.6;\n\nlibrary HexStrings {\n    bytes16 internal constant ALPHABET = '0123456789abcdef';\n\n    /// @notice Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n    /// @dev Credit to Open Zeppelin under MIT license https://github.com/OpenZeppelin/openzeppelin-contracts/blob/243adff49ce1700e0ecb99fe522fb16cff1d1ddc/contracts/utils/Strings.sol#L55\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n        bytes memory buffer = new bytes(2 * length + 2);\n        buffer[0] = '0';\n        buffer[1] = 'x';\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\n            buffer[i] = ALPHABET[value & 0xf];\n            value >>= 4;\n        }\n        require(value == 0, 'Strings: hex length insufficient');\n        return string(buffer);\n    }\n\n    function toHexStringNoPrefix(uint256 value, uint256 length) internal pure returns (string memory) {\n        bytes memory buffer = new bytes(2 * length);\n        for (uint256 i = buffer.length; i > 0; i--) {\n            buffer[i - 1] = ALPHABET[value & 0xf];\n            value >>= 4;\n        }\n        return string(buffer);\n    }\n}\n"},"contracts/libraries/LiquidityAmounts.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/FullMath.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol';\n\n/// @title Liquidity amount functions\n/// @notice Provides functions for computing liquidity amounts from token amounts and prices\nlibrary LiquidityAmounts {\n    /// @notice Downcasts uint256 to uint128\n    /// @param x The uint258 to be downcasted\n    /// @return y The passed value, downcasted to uint128\n    function toUint128(uint256 x) private pure returns (uint128 y) {\n        require((y = uint128(x)) == x);\n    }\n\n    /// @notice Computes the amount of liquidity received for a given amount of token0 and price range\n    /// @dev Calculates amount0 * (sqrt(upper) * sqrt(lower)) / (sqrt(upper) - sqrt(lower))\n    /// @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n    /// @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n    /// @param amount0 The amount0 being sent in\n    /// @return liquidity The amount of returned liquidity\n    function getLiquidityForAmount0(\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint256 amount0\n    ) internal pure returns (uint128 liquidity) {\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\n        uint256 intermediate = FullMath.mulDiv(sqrtRatioAX96, sqrtRatioBX96, FixedPoint96.Q96);\n        return toUint128(FullMath.mulDiv(amount0, intermediate, sqrtRatioBX96 - sqrtRatioAX96));\n    }\n\n    /// @notice Computes the amount of liquidity received for a given amount of token1 and price range\n    /// @dev Calculates amount1 / (sqrt(upper) - sqrt(lower)).\n    /// @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n    /// @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n    /// @param amount1 The amount1 being sent in\n    /// @return liquidity The amount of returned liquidity\n    function getLiquidityForAmount1(\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint256 amount1\n    ) internal pure returns (uint128 liquidity) {\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\n        return toUint128(FullMath.mulDiv(amount1, FixedPoint96.Q96, sqrtRatioBX96 - sqrtRatioAX96));\n    }\n\n    /// @notice Computes the maximum amount of liquidity received for a given amount of token0, token1, the current\n    /// pool prices and the prices at the tick boundaries\n    /// @param sqrtRatioX96 A sqrt price representing the current pool prices\n    /// @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n    /// @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n    /// @param amount0 The amount of token0 being sent in\n    /// @param amount1 The amount of token1 being sent in\n    /// @return liquidity The maximum amount of liquidity received\n    function getLiquidityForAmounts(\n        uint160 sqrtRatioX96,\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint256 amount0,\n        uint256 amount1\n    ) internal pure returns (uint128 liquidity) {\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\n\n        if (sqrtRatioX96 <= sqrtRatioAX96) {\n            liquidity = getLiquidityForAmount0(sqrtRatioAX96, sqrtRatioBX96, amount0);\n        } else if (sqrtRatioX96 < sqrtRatioBX96) {\n            uint128 liquidity0 = getLiquidityForAmount0(sqrtRatioX96, sqrtRatioBX96, amount0);\n            uint128 liquidity1 = getLiquidityForAmount1(sqrtRatioAX96, sqrtRatioX96, amount1);\n\n            liquidity = liquidity0 < liquidity1 ? liquidity0 : liquidity1;\n        } else {\n            liquidity = getLiquidityForAmount1(sqrtRatioAX96, sqrtRatioBX96, amount1);\n        }\n    }\n\n    /// @notice Computes the amount of token0 for a given amount of liquidity and a price range\n    /// @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n    /// @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n    /// @param liquidity The liquidity being valued\n    /// @return amount0 The amount of token0\n    function getAmount0ForLiquidity(\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint128 liquidity\n    ) internal pure returns (uint256 amount0) {\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\n\n        return\n            FullMath.mulDiv(\n                uint256(liquidity) << FixedPoint96.RESOLUTION,\n                sqrtRatioBX96 - sqrtRatioAX96,\n                sqrtRatioBX96\n            ) / sqrtRatioAX96;\n    }\n\n    /// @notice Computes the amount of token1 for a given amount of liquidity and a price range\n    /// @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n    /// @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n    /// @param liquidity The liquidity being valued\n    /// @return amount1 The amount of token1\n    function getAmount1ForLiquidity(\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint128 liquidity\n    ) internal pure returns (uint256 amount1) {\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\n\n        return FullMath.mulDiv(liquidity, sqrtRatioBX96 - sqrtRatioAX96, FixedPoint96.Q96);\n    }\n\n    /// @notice Computes the token0 and token1 value for a given amount of liquidity, the current\n    /// pool prices and the prices at the tick boundaries\n    /// @param sqrtRatioX96 A sqrt price representing the current pool prices\n    /// @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n    /// @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n    /// @param liquidity The liquidity being valued\n    /// @return amount0 The amount of token0\n    /// @return amount1 The amount of token1\n    function getAmountsForLiquidity(\n        uint160 sqrtRatioX96,\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint128 liquidity\n    ) internal pure returns (uint256 amount0, uint256 amount1) {\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\n\n        if (sqrtRatioX96 <= sqrtRatioAX96) {\n            amount0 = getAmount0ForLiquidity(sqrtRatioAX96, sqrtRatioBX96, liquidity);\n        } else if (sqrtRatioX96 < sqrtRatioBX96) {\n            amount0 = getAmount0ForLiquidity(sqrtRatioX96, sqrtRatioBX96, liquidity);\n            amount1 = getAmount1ForLiquidity(sqrtRatioAX96, sqrtRatioX96, liquidity);\n        } else {\n            amount1 = getAmount1ForLiquidity(sqrtRatioAX96, sqrtRatioBX96, liquidity);\n        }\n    }\n}\n"},"contracts/libraries/NFTSVG.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.6;\n\nimport '@openzeppelin/contracts/utils/Strings.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/BitMath.sol';\nimport 'base64-sol/base64.sol';\n\n/// @title NFTSVG\n/// @notice Provides a function for generating an SVG associated with a AstraDEX NFT\nlibrary NFTSVG {\n    using Strings for uint256;\n\n    string constant curve1 = 'M1 1C41 41 105 105 145 145';\n    string constant curve2 = 'M1 1C33 49 97 113 145 145';\n    string constant curve3 = 'M1 1C33 57 89 113 145 145';\n    string constant curve4 = 'M1 1C25 65 81 121 145 145';\n    string constant curve5 = 'M1 1C17 73 73 129 145 145';\n    string constant curve6 = 'M1 1C9 81 65 137 145 145';\n    string constant curve7 = 'M1 1C1 89 57.5 145 145 145';\n    string constant curve8 = 'M1 1C1 97 49 145 145 145';\n\n    struct SVGParams {\n        string quoteToken;\n        string baseToken;\n        address poolAddress;\n        string quoteTokenSymbol;\n        string baseTokenSymbol;\n        string feeTier;\n        int24 tickLower;\n        int24 tickUpper;\n        int24 tickSpacing;\n        int8 overRange;\n        uint256 tokenId;\n        string color0;\n        string color1;\n        string color2;\n        string color3;\n        string x1;\n        string y1;\n        string x2;\n        string y2;\n        string x3;\n        string y3;\n    }\n\n    function generateSVG(SVGParams memory params) internal pure returns (string memory svg) {\n        /*\n        address: \"0xe8ab59d3bcde16a29912de83a90eb39628cfc163\",\n        msg: \"Forged in SVG for Astra in 2024 by 0xe8ab59d3bcde16a29912de83a90eb39628cfc163\",\n        sig: \"0x2df0e99d9cbfec33a705d83f75666d98b22dea7c1af412c584f7d626d83f02875993df740dc87563b9c73378f8462426da572d7989de88079a382ad96c57b68d1b\",\n        version: \"2\"\n        */\n        return\n            string(\n                abi.encodePacked(\n                    generateSVGDefs(params),\n                    generateSVGBorderText(\n                        params.quoteToken,\n                        params.baseToken,\n                        params.quoteTokenSymbol,\n                        params.baseTokenSymbol\n                    ),\n                    generateSVGCardMantle(params.quoteTokenSymbol, params.baseTokenSymbol, params.feeTier),\n                    generageSvgCurve(params.tickLower, params.tickUpper, params.tickSpacing, params.overRange),\n                    generateSVGPositionDataAndLocationCurve(\n                        params.tokenId.toString(),\n                        params.tickLower,\n                        params.tickUpper\n                    ),\n                    generateSVGRareSparkle(params.tokenId, params.poolAddress),\n                    '</svg>'\n                )\n            );\n    }\n\n    function generateSVGDefs(SVGParams memory params) private pure returns (string memory svg) {\n        svg = string(\n            abi.encodePacked(\n                '<svg width=\"290\" height=\"500\" viewBox=\"0 0 290 500\" xmlns=\"http://www.w3.org/2000/svg\"',\n                \" xmlns:xlink='http://www.w3.org/1999/xlink'>\",\n                '<defs>',\n                '<filter id=\"f1\"><feImage result=\"p0\" xlink:href=\"data:image/svg+xml;base64,',\n                Base64.encode(\n                    bytes(\n                        abi.encodePacked(\n                            \"<svg width='290' height='500' viewBox='0 0 290 500' xmlns='http://www.w3.org/2000/svg'><rect width='290px' height='500px' fill='#\",\n                            params.color0,\n                            \"'/></svg>\"\n                        )\n                    )\n                ),\n                '\"/><feImage result=\"p1\" xlink:href=\"data:image/svg+xml;base64,',\n                Base64.encode(\n                    bytes(\n                        abi.encodePacked(\n                            \"<svg width='290' height='500' viewBox='0 0 290 500' xmlns='http://www.w3.org/2000/svg'><circle cx='\",\n                            params.x1,\n                            \"' cy='\",\n                            params.y1,\n                            \"' r='120px' fill='#\",\n                            params.color1,\n                            \"'/></svg>\"\n                        )\n                    )\n                ),\n                '\"/><feImage result=\"p2\" xlink:href=\"data:image/svg+xml;base64,',\n                Base64.encode(\n                    bytes(\n                        abi.encodePacked(\n                            \"<svg width='290' height='500' viewBox='0 0 290 500' xmlns='http://www.w3.org/2000/svg'><circle cx='\",\n                            params.x2,\n                            \"' cy='\",\n                            params.y2,\n                            \"' r='120px' fill='#\",\n                            params.color2,\n                            \"'/></svg>\"\n                        )\n                    )\n                ),\n                '\" />',\n                '<feImage result=\"p3\" xlink:href=\"data:image/svg+xml;base64,',\n                Base64.encode(\n                    bytes(\n                        abi.encodePacked(\n                            \"<svg width='290' height='500' viewBox='0 0 290 500' xmlns='http://www.w3.org/2000/svg'><circle cx='\",\n                            params.x3,\n                            \"' cy='\",\n                            params.y3,\n                            \"' r='100px' fill='#\",\n                            params.color3,\n                            \"'/></svg>\"\n                        )\n                    )\n                ),\n                '\" /><feBlend mode=\"overlay\" in=\"p0\" in2=\"p1\" /><feBlend mode=\"exclusion\" in2=\"p2\" /><feBlend mode=\"overlay\" in2=\"p3\" result=\"blendOut\" /><feGaussianBlur ',\n                'in=\"blendOut\" stdDeviation=\"42\" /></filter> <clipPath id=\"corners\"><rect width=\"290\" height=\"500\" rx=\"42\" ry=\"42\" /></clipPath>',\n                '<path id=\"text-path-a\" d=\"M40 12 H250 A28 28 0 0 1 278 40 V460 A28 28 0 0 1 250 488 H40 A28 28 0 0 1 12 460 V40 A28 28 0 0 1 40 12 z\" />',\n                '<path id=\"minimap\" d=\"M234 444C234 457.949 242.21 463 253 463\" />',\n                '<filter id=\"top-region-blur\"><feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"24\" /></filter>',\n                '<linearGradient id=\"grad-up\" x1=\"1\" x2=\"0\" y1=\"1\" y2=\"0\"><stop offset=\"0.0\" stop-color=\"white\" stop-opacity=\"1\" />',\n                '<stop offset=\".9\" stop-color=\"white\" stop-opacity=\"0\" /></linearGradient>',\n                '<linearGradient id=\"grad-down\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"1\"><stop offset=\"0.0\" stop-color=\"white\" stop-opacity=\"1\" /><stop offset=\"0.9\" stop-color=\"white\" stop-opacity=\"0\" /></linearGradient>',\n                '<mask id=\"fade-up\" maskContentUnits=\"objectBoundingBox\"><rect width=\"1\" height=\"1\" fill=\"url(#grad-up)\" /></mask>',\n                '<mask id=\"fade-down\" maskContentUnits=\"objectBoundingBox\"><rect width=\"1\" height=\"1\" fill=\"url(#grad-down)\" /></mask>',\n                '<mask id=\"none\" maskContentUnits=\"objectBoundingBox\"><rect width=\"1\" height=\"1\" fill=\"white\" /></mask>',\n                '<linearGradient id=\"grad-symbol\"><stop offset=\"0.7\" stop-color=\"white\" stop-opacity=\"1\" /><stop offset=\".95\" stop-color=\"white\" stop-opacity=\"0\" /></linearGradient>',\n                '<mask id=\"fade-symbol\" maskContentUnits=\"userSpaceOnUse\"><rect width=\"290px\" height=\"200px\" fill=\"url(#grad-symbol)\" /></mask></defs>',\n                '<g clip-path=\"url(#corners)\">',\n                '<rect fill=\"',\n                params.color0,\n                '\" x=\"0px\" y=\"0px\" width=\"290px\" height=\"500px\" />',\n                '<rect style=\"filter: url(#f1)\" x=\"0px\" y=\"0px\" width=\"290px\" height=\"500px\" />',\n                ' <g style=\"filter:url(#top-region-blur); transform:scale(1.5); transform-origin:center top;\">',\n                '<rect fill=\"none\" x=\"0px\" y=\"0px\" width=\"290px\" height=\"500px\" />',\n                '<ellipse cx=\"50%\" cy=\"0px\" rx=\"180px\" ry=\"120px\" fill=\"#000\" opacity=\"0.85\" /></g>',\n                '<rect x=\"0\" y=\"0\" width=\"290\" height=\"500\" rx=\"42\" ry=\"42\" fill=\"rgba(0,0,0,0)\" stroke=\"rgba(255,255,255,0.2)\" /></g>'\n            )\n        );\n    }\n\n    function generateSVGBorderText(\n        string memory quoteToken,\n        string memory baseToken,\n        string memory quoteTokenSymbol,\n        string memory baseTokenSymbol\n    ) private pure returns (string memory svg) {\n        svg = string(\n            abi.encodePacked(\n                '<text text-rendering=\"optimizeSpeed\">',\n                '<textPath startOffset=\"-100%\" fill=\"white\" font-family=\"\\'Courier New\\', monospace\" font-size=\"10px\" xlink:href=\"#text-path-a\">',\n                baseToken,\n                unicode' • ',\n                baseTokenSymbol,\n                ' <animate additive=\"sum\" attributeName=\"startOffset\" from=\"0%\" to=\"100%\" begin=\"0s\" dur=\"30s\" repeatCount=\"indefinite\" />',\n                '</textPath> <textPath startOffset=\"0%\" fill=\"white\" font-family=\"\\'Courier New\\', monospace\" font-size=\"10px\" xlink:href=\"#text-path-a\">',\n                baseToken,\n                unicode' • ',\n                baseTokenSymbol,\n                ' <animate additive=\"sum\" attributeName=\"startOffset\" from=\"0%\" to=\"100%\" begin=\"0s\" dur=\"30s\" repeatCount=\"indefinite\" /> </textPath>',\n                '<textPath startOffset=\"50%\" fill=\"white\" font-family=\"\\'Courier New\\', monospace\" font-size=\"10px\" xlink:href=\"#text-path-a\">',\n                quoteToken,\n                unicode' • ',\n                quoteTokenSymbol,\n                ' <animate additive=\"sum\" attributeName=\"startOffset\" from=\"0%\" to=\"100%\" begin=\"0s\" dur=\"30s\"',\n                ' repeatCount=\"indefinite\" /></textPath><textPath startOffset=\"-50%\" fill=\"white\" font-family=\"\\'Courier New\\', monospace\" font-size=\"10px\" xlink:href=\"#text-path-a\">',\n                quoteToken,\n                unicode' • ',\n                quoteTokenSymbol,\n                ' <animate additive=\"sum\" attributeName=\"startOffset\" from=\"0%\" to=\"100%\" begin=\"0s\" dur=\"30s\" repeatCount=\"indefinite\" /></textPath></text>'\n            )\n        );\n    }\n\n    function generateSVGCardMantle(\n        string memory quoteTokenSymbol,\n        string memory baseTokenSymbol,\n        string memory feeTier\n    ) private pure returns (string memory svg) {\n        svg = string(\n            abi.encodePacked(\n                '<g mask=\"url(#fade-symbol)\"><rect fill=\"none\" x=\"0px\" y=\"0px\" width=\"290px\" height=\"200px\" /> <text y=\"70px\" x=\"32px\" fill=\"white\" font-family=\"\\'Courier New\\', monospace\" font-weight=\"200\" font-size=\"36px\">',\n                quoteTokenSymbol,\n                '/',\n                baseTokenSymbol,\n                '</text><text y=\"115px\" x=\"32px\" fill=\"white\" font-family=\"\\'Courier New\\', monospace\" font-weight=\"200\" font-size=\"36px\">',\n                feeTier,\n                '</text></g>',\n                '<rect x=\"16\" y=\"16\" width=\"258\" height=\"468\" rx=\"26\" ry=\"26\" fill=\"rgba(0,0,0,0)\" stroke=\"rgba(255,255,255,0.2)\" />'\n            )\n        );\n    }\n\n    function generageSvgCurve(\n        int24 tickLower,\n        int24 tickUpper,\n        int24 tickSpacing,\n        int8 overRange\n    ) private pure returns (string memory svg) {\n        string memory fade = overRange == 1\n            ? '#fade-up'\n            : overRange == -1\n                ? '#fade-down'\n                : '#none';\n        string memory curve = getCurve(tickLower, tickUpper, tickSpacing);\n        svg = string(\n            abi.encodePacked(\n                '<g mask=\"url(',\n                fade,\n                ')\"',\n                ' style=\"transform:translate(72px,189px)\">'\n                '<rect x=\"-16px\" y=\"-16px\" width=\"180px\" height=\"180px\" fill=\"none\" />'\n                '<path d=\"',\n                curve,\n                '\" stroke=\"rgba(0,0,0,0.3)\" stroke-width=\"32px\" fill=\"none\" stroke-linecap=\"round\" />',\n                '</g><g mask=\"url(',\n                fade,\n                ')\"',\n                ' style=\"transform:translate(72px,189px)\">',\n                '<rect x=\"-16px\" y=\"-16px\" width=\"180px\" height=\"180px\" fill=\"none\" />',\n                '<path d=\"',\n                curve,\n                '\" stroke=\"rgba(255,255,255,1)\" fill=\"none\" stroke-linecap=\"round\" /></g>',\n                generateSVGCurveCircle(overRange)\n            )\n        );\n    }\n\n    function getCurve(int24 tickLower, int24 tickUpper, int24 tickSpacing) internal pure returns (string memory curve) {\n        int24 tickRange = (tickUpper - tickLower) / tickSpacing;\n        if (tickRange <= 4) {\n            curve = curve1;\n        } else if (tickRange <= 8) {\n            curve = curve2;\n        } else if (tickRange <= 16) {\n            curve = curve3;\n        } else if (tickRange <= 32) {\n            curve = curve4;\n        } else if (tickRange <= 64) {\n            curve = curve5;\n        } else if (tickRange <= 128) {\n            curve = curve6;\n        } else if (tickRange <= 256) {\n            curve = curve7;\n        } else {\n            curve = curve8;\n        }\n    }\n\n    function generateSVGCurveCircle(int8 overRange) internal pure returns (string memory svg) {\n        string memory curvex1 = '73';\n        string memory curvey1 = '190';\n        string memory curvex2 = '217';\n        string memory curvey2 = '334';\n        if (overRange == 1 || overRange == -1) {\n            svg = string(\n                abi.encodePacked(\n                    '<circle cx=\"',\n                    overRange == -1 ? curvex1 : curvex2,\n                    'px\" cy=\"',\n                    overRange == -1 ? curvey1 : curvey2,\n                    'px\" r=\"4px\" fill=\"white\" /><circle cx=\"',\n                    overRange == -1 ? curvex1 : curvex2,\n                    'px\" cy=\"',\n                    overRange == -1 ? curvey1 : curvey2,\n                    'px\" r=\"24px\" fill=\"none\" stroke=\"white\" />'\n                )\n            );\n        } else {\n            svg = string(\n                abi.encodePacked(\n                    '<circle cx=\"',\n                    curvex1,\n                    'px\" cy=\"',\n                    curvey1,\n                    'px\" r=\"4px\" fill=\"white\" />',\n                    '<circle cx=\"',\n                    curvex2,\n                    'px\" cy=\"',\n                    curvey2,\n                    'px\" r=\"4px\" fill=\"white\" />'\n                )\n            );\n        }\n    }\n\n    function generateSVGPositionDataAndLocationCurve(\n        string memory tokenId,\n        int24 tickLower,\n        int24 tickUpper\n    ) private pure returns (string memory svg) {\n        string memory tickLowerStr = tickToString(tickLower);\n        string memory tickUpperStr = tickToString(tickUpper);\n        uint256 str1length = bytes(tokenId).length + 4;\n        uint256 str2length = bytes(tickLowerStr).length + 10;\n        uint256 str3length = bytes(tickUpperStr).length + 10;\n        (string memory xCoord, string memory yCoord) = rangeLocation(tickLower, tickUpper);\n        svg = string(\n            abi.encodePacked(\n                ' <g style=\"transform:translate(29px, 384px)\">',\n                '<rect width=\"',\n                uint256(7 * (str1length + 4)).toString(),\n                'px\" height=\"26px\" rx=\"8px\" ry=\"8px\" fill=\"rgba(0,0,0,0.6)\" />',\n                '<text x=\"12px\" y=\"17px\" font-family=\"\\'Courier New\\', monospace\" font-size=\"12px\" fill=\"white\"><tspan fill=\"rgba(255,255,255,0.6)\">ID: </tspan>',\n                tokenId,\n                '</text></g>',\n                ' <g style=\"transform:translate(29px, 414px)\">',\n                '<rect width=\"',\n                uint256(7 * (str2length + 4)).toString(),\n                'px\" height=\"26px\" rx=\"8px\" ry=\"8px\" fill=\"rgba(0,0,0,0.6)\" />',\n                '<text x=\"12px\" y=\"17px\" font-family=\"\\'Courier New\\', monospace\" font-size=\"12px\" fill=\"white\"><tspan fill=\"rgba(255,255,255,0.6)\">Min Tick: </tspan>',\n                tickLowerStr,\n                '</text></g>',\n                ' <g style=\"transform:translate(29px, 444px)\">',\n                '<rect width=\"',\n                uint256(7 * (str3length + 4)).toString(),\n                'px\" height=\"26px\" rx=\"8px\" ry=\"8px\" fill=\"rgba(0,0,0,0.6)\" />',\n                '<text x=\"12px\" y=\"17px\" font-family=\"\\'Courier New\\', monospace\" font-size=\"12px\" fill=\"white\"><tspan fill=\"rgba(255,255,255,0.6)\">Max Tick: </tspan>',\n                tickUpperStr,\n                '</text></g>'\n                '<g style=\"transform:translate(226px, 433px)\">',\n                '<rect width=\"36px\" height=\"36px\" rx=\"8px\" ry=\"8px\" fill=\"none\" stroke=\"rgba(255,255,255,0.2)\" />',\n                '<path stroke-linecap=\"round\" d=\"M8 9C8.00004 22.9494 16.2099 28 27 28\" fill=\"none\" stroke=\"white\" />',\n                '<circle style=\"transform:translate3d(',\n                xCoord,\n                'px, ',\n                yCoord,\n                'px, 0px)\" cx=\"0px\" cy=\"0px\" r=\"4px\" fill=\"white\"/></g>'\n            )\n        );\n    }\n\n    function tickToString(int24 tick) private pure returns (string memory) {\n        string memory sign = '';\n        if (tick < 0) {\n            tick = tick * -1;\n            sign = '-';\n        }\n        return string(abi.encodePacked(sign, uint256(tick).toString()));\n    }\n\n    function rangeLocation(int24 tickLower, int24 tickUpper) internal pure returns (string memory, string memory) {\n        int24 midPoint = (tickLower + tickUpper) / 2;\n        if (midPoint < -125_000) {\n            return ('8', '7');\n        } else if (midPoint < -75_000) {\n            return ('8', '10.5');\n        } else if (midPoint < -25_000) {\n            return ('8', '14.25');\n        } else if (midPoint < -5_000) {\n            return ('10', '18');\n        } else if (midPoint < 0) {\n            return ('11', '21');\n        } else if (midPoint < 5_000) {\n            return ('13', '23');\n        } else if (midPoint < 25_000) {\n            return ('15', '25');\n        } else if (midPoint < 75_000) {\n            return ('18', '26');\n        } else if (midPoint < 125_000) {\n            return ('21', '27');\n        } else {\n            return ('24', '27');\n        }\n    }\n\n    function generateSVGRareSparkle(uint256 tokenId, address poolAddress) private pure returns (string memory svg) {\n        if (isRare(tokenId, poolAddress)) {\n            svg = string(\n                abi.encodePacked(\n                    '<g style=\"transform:translate(226px, 392px)\"><rect width=\"36px\" height=\"36px\" rx=\"8px\" ry=\"8px\" fill=\"none\" stroke=\"rgba(255,255,255,0.2)\" />',\n                    '<g><path style=\"transform:translate(6px,6px)\" d=\"M12 0L12.6522 9.56587L18 1.6077L13.7819 10.2181L22.3923 6L14.4341 ',\n                    '11.3478L24 12L14.4341 12.6522L22.3923 18L13.7819 13.7819L18 22.3923L12.6522 14.4341L12 24L11.3478 14.4341L6 22.39',\n                    '23L10.2181 13.7819L1.6077 18L9.56587 12.6522L0 12L9.56587 11.3478L1.6077 6L10.2181 10.2181L6 1.6077L11.3478 9.56587L12 0Z\" fill=\"white\" />',\n                    '<animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 18 18\" to=\"360 18 18\" dur=\"10s\" repeatCount=\"indefinite\"/></g></g>'\n                )\n            );\n        } else {\n            svg = '';\n        }\n    }\n\n    function isRare(uint256 tokenId, address poolAddress) internal pure returns (bool) {\n        bytes32 h = keccak256(abi.encodePacked(tokenId, poolAddress));\n        return uint256(h) < type(uint256).max / (1 + BitMath.mostSignificantBit(tokenId) * 2);\n    }\n}\n"},"contracts/libraries/OracleLibrary.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0 <0.8.0;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/FullMath.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/TickMath.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol';\n\n/// @title Oracle library\n/// @notice Provides functions to integrate with CL pool oracle\nlibrary OracleLibrary {\n    /// @notice Calculates time-weighted means of tick and liquidity for a given AstraDEX CL pool\n    /// @param pool Address of the pool that we want to observe\n    /// @param secondsAgo Number of seconds in the past from which to calculate the time-weighted means\n    /// @return arithmeticMeanTick The arithmetic mean tick from (block.timestamp - secondsAgo) to block.timestamp\n    /// @return harmonicMeanLiquidity The harmonic mean liquidity from (block.timestamp - secondsAgo) to block.timestamp\n    function consult(\n        address pool,\n        uint32 secondsAgo\n    ) internal view returns (int24 arithmeticMeanTick, uint128 harmonicMeanLiquidity) {\n        require(secondsAgo != 0, 'BP');\n\n        uint32[] memory secondsAgos = new uint32[](2);\n        secondsAgos[0] = secondsAgo;\n        secondsAgos[1] = 0;\n\n        (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s) = IAstraCLPool(pool)\n            .observe(secondsAgos);\n\n        int56 tickCumulativesDelta = tickCumulatives[1] - tickCumulatives[0];\n        uint160 secondsPerLiquidityCumulativesDelta = secondsPerLiquidityCumulativeX128s[1] -\n            secondsPerLiquidityCumulativeX128s[0];\n\n        arithmeticMeanTick = int24(tickCumulativesDelta / secondsAgo);\n        // Always round to negative infinity\n        if (tickCumulativesDelta < 0 && (tickCumulativesDelta % secondsAgo != 0)) arithmeticMeanTick--;\n\n        // We are multiplying here instead of shifting to ensure that harmonicMeanLiquidity doesn't overflow uint128\n        uint192 secondsAgoX160 = uint192(secondsAgo) * type(uint160).max;\n        harmonicMeanLiquidity = uint128(secondsAgoX160 / (uint192(secondsPerLiquidityCumulativesDelta) << 32));\n    }\n\n    /// @notice Given a tick and a token amount, calculates the amount of token received in exchange\n    /// @param tick Tick value used to calculate the quote\n    /// @param baseAmount Amount of token to be converted\n    /// @param baseToken Address of an ERC20 token contract used as the baseAmount denomination\n    /// @param quoteToken Address of an ERC20 token contract used as the quoteAmount denomination\n    /// @return quoteAmount Amount of quoteToken received for baseAmount of baseToken\n    function getQuoteAtTick(\n        int24 tick,\n        uint128 baseAmount,\n        address baseToken,\n        address quoteToken\n    ) internal pure returns (uint256 quoteAmount) {\n        uint160 sqrtRatioX96 = TickMath.getSqrtRatioAtTick(tick);\n\n        // Calculate quoteAmount with better precision if it doesn't overflow when multiplied by itself\n        if (sqrtRatioX96 <= type(uint128).max) {\n            uint256 ratioX192 = uint256(sqrtRatioX96) * sqrtRatioX96;\n            quoteAmount = baseToken < quoteToken\n                ? FullMath.mulDiv(ratioX192, baseAmount, 1 << 192)\n                : FullMath.mulDiv(1 << 192, baseAmount, ratioX192);\n        } else {\n            uint256 ratioX128 = FullMath.mulDiv(sqrtRatioX96, sqrtRatioX96, 1 << 64);\n            quoteAmount = baseToken < quoteToken\n                ? FullMath.mulDiv(ratioX128, baseAmount, 1 << 128)\n                : FullMath.mulDiv(1 << 128, baseAmount, ratioX128);\n        }\n    }\n\n    /// @notice Given a pool, it returns the number of seconds ago of the oldest stored observation\n    /// @param pool Address of AstraDEX CL pool that we want to observe\n    /// @return secondsAgo The number of seconds ago of the oldest observation stored for the pool\n    function getOldestObservationSecondsAgo(address pool) internal view returns (uint32 secondsAgo) {\n        (, , uint16 observationIndex, uint16 observationCardinality, , , ) = IAstraCLPool(pool).slot0();\n        require(observationCardinality > 0, 'NI');\n\n        (uint32 observationTimestamp, , , bool initialized) = IAstraCLPool(pool).observations(\n            (observationIndex + 1) % observationCardinality\n        );\n\n        // The next index might not be initialized if the cardinality is in the process of increasing\n        // In this case the oldest observation is always in index 0\n        if (!initialized) {\n            (observationTimestamp, , , ) = IAstraCLPool(pool).observations(0);\n        }\n\n        secondsAgo = uint32(block.timestamp) - observationTimestamp;\n    }\n\n    /// @notice Given a pool, it returns the tick value as of the start of the current block\n    /// @param pool Address of AstraDEX CL pool\n    /// @return The tick that the pool was in at the start of the current block\n    function getBlockStartingTickAndLiquidity(address pool) internal view returns (int24, uint128) {\n        (, int24 tick, uint16 observationIndex, uint16 observationCardinality, , , ) = IAstraCLPool(pool).slot0();\n\n        // 2 observations are needed to reliably calculate the block starting tick\n        require(observationCardinality > 1, 'NEO');\n\n        // If the latest observation occurred in the past, then no tick-changing trades have happened in this block\n        // therefore the tick in `slot0` is the same as at the beginning of the current block.\n        // We don't need to check if this observation is initialized - it is guaranteed to be.\n        (uint32 observationTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, ) = IAstraCLPool(\n            pool\n        ).observations(observationIndex);\n        if (observationTimestamp != uint32(block.timestamp)) {\n            return (tick, IAstraCLPool(pool).liquidity());\n        }\n\n        uint256 prevIndex = (uint256(observationIndex) + observationCardinality - 1) % observationCardinality;\n        (\n            uint32 prevObservationTimestamp,\n            int56 prevTickCumulative,\n            uint160 prevSecondsPerLiquidityCumulativeX128,\n            bool prevInitialized\n        ) = IAstraCLPool(pool).observations(prevIndex);\n\n        require(prevInitialized, 'ONI');\n\n        uint32 delta = observationTimestamp - prevObservationTimestamp;\n        tick = int24((tickCumulative - prevTickCumulative) / delta);\n        uint128 liquidity = uint128(\n            (uint192(delta) * type(uint160).max) /\n                (uint192(secondsPerLiquidityCumulativeX128 - prevSecondsPerLiquidityCumulativeX128) << 32)\n        );\n        return (tick, liquidity);\n    }\n\n    /// @notice Information for calculating a weighted arithmetic mean tick\n    struct WeightedTickData {\n        int24 tick;\n        uint128 weight;\n    }\n\n    /// @notice Given an array of ticks and weights, calculates the weighted arithmetic mean tick\n    /// @param weightedTickData An array of ticks and weights\n    /// @return weightedArithmeticMeanTick The weighted arithmetic mean tick\n    /// @dev Each entry of `weightedTickData` should represents ticks from pools with the same underlying pool tokens. If they do not,\n    /// extreme care must be taken to ensure that ticks are comparable (including decimal differences).\n    /// @dev Note that the weighted arithmetic mean tick corresponds to the weighted geometric mean price.\n    function getWeightedArithmeticMeanTick(\n        WeightedTickData[] memory weightedTickData\n    ) internal pure returns (int24 weightedArithmeticMeanTick) {\n        // Accumulates the sum of products between each tick and its weight\n        int256 numerator;\n\n        // Accumulates the sum of the weights\n        uint256 denominator;\n\n        // Products fit in 152 bits, so it would take an array of length ~2**104 to overflow this logic\n        for (uint256 i; i < weightedTickData.length; i++) {\n            numerator += weightedTickData[i].tick * int256(weightedTickData[i].weight);\n            denominator += weightedTickData[i].weight;\n        }\n\n        weightedArithmeticMeanTick = int24(numerator / int256(denominator));\n        // Always round to negative infinity\n        if (numerator < 0 && (numerator % int256(denominator) != 0)) weightedArithmeticMeanTick--;\n    }\n\n    /// @notice Returns the \"synthetic\" tick which represents the price of the first entry in `tokens` in terms of the last\n    /// @dev Useful for calculating relative prices along routes.\n    /// @dev There must be one tick for each pairwise set of tokens.\n    /// @param tokens The token contract addresses\n    /// @param ticks The ticks, representing the price of each token pair in `tokens`\n    /// @return syntheticTick The synthetic tick, representing the relative price of the outermost tokens in `tokens`\n    function getChainedPrice(\n        address[] memory tokens,\n        int24[] memory ticks\n    ) internal pure returns (int256 syntheticTick) {\n        require(tokens.length - 1 == ticks.length, 'DL');\n        for (uint256 i = 1; i <= ticks.length; i++) {\n            // check the tokens for address sort order, then accumulate the\n            // ticks into the running synthetic tick, ensuring that intermediate tokens \"cancel out\"\n            tokens[i - 1] < tokens[i] ? syntheticTick += ticks[i - 1] : syntheticTick -= ticks[i - 1];\n        }\n    }\n}\n"},"contracts/libraries/Path.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.6.0;\n\nimport './BytesLib.sol';\n\n/// @title Functions for manipulating path data for multihop swaps\nlibrary Path {\n    using BytesLib for bytes;\n\n    /// @dev The length of the bytes encoded address\n    uint256 private constant ADDR_SIZE = 20;\n    /// @dev The length of the bytes encoded fee\n    uint256 private constant FEE_SIZE = 3;\n\n    /// @dev The offset of a single token address and pool fee\n    uint256 private constant NEXT_OFFSET = ADDR_SIZE + FEE_SIZE;\n    /// @dev The offset of an encoded pool key\n    uint256 private constant POP_OFFSET = NEXT_OFFSET + ADDR_SIZE;\n    /// @dev The minimum length of an encoding that contains 2 or more pools\n    uint256 private constant MULTIPLE_POOLS_MIN_LENGTH = POP_OFFSET + NEXT_OFFSET;\n\n    /// @notice Returns true iff the path contains two or more pools\n    /// @param path The encoded swap path\n    /// @return True if path contains two or more pools, otherwise false\n    function hasMultiplePools(bytes memory path) internal pure returns (bool) {\n        return path.length >= MULTIPLE_POOLS_MIN_LENGTH;\n    }\n\n    /// @notice Returns the number of pools in the path\n    /// @param path The encoded swap path\n    /// @return The number of pools in the path\n    function numPools(bytes memory path) internal pure returns (uint256) {\n        // Ignore the first token address. From then on every fee and token offset indicates a pool.\n        return ((path.length - ADDR_SIZE) / NEXT_OFFSET);\n    }\n\n    /// @notice Decodes the first pool in path\n    /// @param path The bytes encoded swap path\n    /// @return tokenA The first token of the given pool\n    /// @return tokenB The second token of the given pool\n    /// @return fee The fee level of the pool\n    function decodeFirstPool(bytes memory path) internal pure returns (address tokenA, address tokenB, uint24 fee) {\n        tokenA = path.toAddress(0);\n        fee = path.toUint24(ADDR_SIZE);\n        tokenB = path.toAddress(NEXT_OFFSET);\n    }\n\n    /// @notice Gets the segment corresponding to the first pool in the path\n    /// @param path The bytes encoded swap path\n    /// @return The segment containing all data necessary to target the first pool in the path\n    function getFirstPool(bytes memory path) internal pure returns (bytes memory) {\n        return path.slice(0, POP_OFFSET);\n    }\n\n    /// @notice Skips a token + fee element from the buffer and returns the remainder\n    /// @param path The swap path\n    /// @return The remaining token + fee elements in the path\n    function skipToken(bytes memory path) internal pure returns (bytes memory) {\n        return path.slice(NEXT_OFFSET, path.length - NEXT_OFFSET);\n    }\n}\n"},"contracts/libraries/PoolAddress.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Provides functions for deriving a pool address from the factory, tokens, and the fee\nlibrary PoolAddress {\n    bytes32 internal constant POOL_INIT_CODE_HASH = 0x203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c04;\n\n    /// @notice The identifying key of the pool\n    struct PoolKey {\n        address token0;\n        address token1;\n        uint24 fee;\n    }\n\n    /// @notice Returns PoolKey: the ordered tokens with the matched fee levels\n    /// @param tokenA The first token of a pool, unsorted\n    /// @param tokenB The second token of a pool, unsorted\n    /// @param fee The fee level of the pool\n    /// @return Poolkey The pool details with ordered token0 and token1 assignments\n    function getPoolKey(address tokenA, address tokenB, uint24 fee) internal pure returns (PoolKey memory) {\n        if (tokenA > tokenB) (tokenA, tokenB) = (tokenB, tokenA);\n        return PoolKey({token0: tokenA, token1: tokenB, fee: fee});\n    }\n\n    /// @notice Deterministically computes the pool address given the factory and PoolKey\n    /// @param factory The AstraDEX CL factory contract address\n    /// @param key The PoolKey\n    /// @return pool The contract address of the CL pool\n    function computeAddress(address factory, PoolKey memory key) internal pure returns (address pool) {\n        require(key.token0 < key.token1);\n        pool = address(\n            uint256(\n                keccak256(\n                    abi.encodePacked(\n                        hex'ff',\n                        factory,\n                        keccak256(abi.encode(key.token0, key.token1, key.fee)),\n                        POOL_INIT_CODE_HASH\n                    )\n                )\n            )\n        );\n    }\n}\n"},"contracts/libraries/PoolTicksCounter.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.6.0;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol';\n\nlibrary PoolTicksCounter {\n    /// @dev This function counts the number of initialized ticks that would incur a gas cost between tickBefore and tickAfter.\n    /// When tickBefore and/or tickAfter themselves are initialized, the logic over whether we should count them depends on the\n    /// direction of the swap. If we are swapping upwards (tickAfter > tickBefore) we don't want to count tickBefore but we do\n    /// want to count tickAfter. The opposite is true if we are swapping downwards.\n    function countInitializedTicksCrossed(\n        IAstraCLPool self,\n        int24 tickBefore,\n        int24 tickAfter\n    ) internal view returns (uint32 initializedTicksCrossed) {\n        int16 wordPosLower;\n        int16 wordPosHigher;\n        uint8 bitPosLower;\n        uint8 bitPosHigher;\n        bool tickBeforeInitialized;\n        bool tickAfterInitialized;\n\n        {\n            // Get the key and offset in the tick bitmap of the active tick before and after the swap.\n            int16 wordPos = int16((tickBefore / self.tickSpacing()) >> 8);\n            uint8 bitPos = uint8((tickBefore / self.tickSpacing()) % 256);\n\n            int16 wordPosAfter = int16((tickAfter / self.tickSpacing()) >> 8);\n            uint8 bitPosAfter = uint8((tickAfter / self.tickSpacing()) % 256);\n\n            // In the case where tickAfter is initialized, we only want to count it if we are swapping downwards.\n            // If the initializable tick after the swap is initialized, our original tickAfter is a\n            // multiple of tick spacing, and we are swapping downwards we know that tickAfter is initialized\n            // and we shouldn't count it.\n            tickAfterInitialized =\n                ((self.tickBitmap(wordPosAfter) & (1 << bitPosAfter)) > 0) &&\n                ((tickAfter % self.tickSpacing()) == 0) &&\n                (tickBefore > tickAfter);\n\n            // In the case where tickBefore is initialized, we only want to count it if we are swapping upwards.\n            // Use the same logic as above to decide whether we should count tickBefore or not.\n            tickBeforeInitialized =\n                ((self.tickBitmap(wordPos) & (1 << bitPos)) > 0) &&\n                ((tickBefore % self.tickSpacing()) == 0) &&\n                (tickBefore < tickAfter);\n\n            if (wordPos < wordPosAfter || (wordPos == wordPosAfter && bitPos <= bitPosAfter)) {\n                wordPosLower = wordPos;\n                bitPosLower = bitPos;\n                wordPosHigher = wordPosAfter;\n                bitPosHigher = bitPosAfter;\n            } else {\n                wordPosLower = wordPosAfter;\n                bitPosLower = bitPosAfter;\n                wordPosHigher = wordPos;\n                bitPosHigher = bitPos;\n            }\n        }\n\n        // Count the number of initialized ticks crossed by iterating through the tick bitmap.\n        // Our first mask should include the lower tick and everything to its left.\n        uint256 mask = type(uint256).max << bitPosLower;\n        while (wordPosLower <= wordPosHigher) {\n            // If we're on the final tick bitmap page, ensure we only count up to our\n            // ending tick.\n            if (wordPosLower == wordPosHigher) {\n                mask = mask & (type(uint256).max >> (255 - bitPosHigher));\n            }\n\n            uint256 masked = self.tickBitmap(wordPosLower) & mask;\n            initializedTicksCrossed += countOneBits(masked);\n            wordPosLower++;\n            // Reset our mask so we consider all bits on the next iteration.\n            mask = type(uint256).max;\n        }\n\n        if (tickAfterInitialized) {\n            initializedTicksCrossed -= 1;\n        }\n\n        if (tickBeforeInitialized) {\n            initializedTicksCrossed -= 1;\n        }\n\n        return initializedTicksCrossed;\n    }\n\n    function countOneBits(uint256 x) private pure returns (uint16) {\n        uint16 bits = 0;\n        while (x != 0) {\n            bits++;\n            x &= (x - 1);\n        }\n        return bits;\n    }\n}\n"},"contracts/libraries/PositionKey.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\nlibrary PositionKey {\n    /// @dev Returns the key of the position in the core library\n    function compute(address owner, int24 tickLower, int24 tickUpper) internal pure returns (bytes32) {\n        return keccak256(abi.encodePacked(owner, tickLower, tickUpper));\n    }\n}\n"},"contracts/libraries/PositionValue.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.6.8 <0.8.0;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/TickMath.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/Tick.sol';\nimport '../interfaces/INonfungiblePositionManager.sol';\nimport './LiquidityAmounts.sol';\nimport './PoolAddress.sol';\nimport './PositionKey.sol';\n\n/// @title Returns information about the token value held in a AstraDEX CL NFT\nlibrary PositionValue {\n    /// @notice Returns the total amounts of token0 and token1, i.e. the sum of fees and principal\n    /// that a given nonfungible position manager token is worth\n    /// @param positionManager The AstraDEX CL NonfungiblePositionManager\n    /// @param tokenId The tokenId of the token for which to get the total value\n    /// @param sqrtRatioX96 The square root price X96 for which to calculate the principal amounts\n    /// @return amount0 The total amount of token0 including principal and fees\n    /// @return amount1 The total amount of token1 including principal and fees\n    function total(\n        INonfungiblePositionManager positionManager,\n        uint256 tokenId,\n        uint160 sqrtRatioX96\n    ) internal view returns (uint256 amount0, uint256 amount1) {\n        (uint256 amount0Principal, uint256 amount1Principal) = principal(positionManager, tokenId, sqrtRatioX96);\n        (uint256 amount0Fee, uint256 amount1Fee) = fees(positionManager, tokenId);\n        return (amount0Principal + amount0Fee, amount1Principal + amount1Fee);\n    }\n\n    /// @notice Calculates the principal (currently acting as liquidity) owed to the token owner in the event\n    /// that the position is burned\n    /// @param positionManager The AstraDEX CL NonfungiblePositionManager\n    /// @param tokenId The tokenId of the token for which to get the total principal owed\n    /// @param sqrtRatioX96 The square root price X96 for which to calculate the principal amounts\n    /// @return amount0 The principal amount of token0\n    /// @return amount1 The principal amount of token1\n    function principal(\n        INonfungiblePositionManager positionManager,\n        uint256 tokenId,\n        uint160 sqrtRatioX96\n    ) internal view returns (uint256 amount0, uint256 amount1) {\n        (, , , , , int24 tickLower, int24 tickUpper, uint128 liquidity, , , , ) = positionManager.positions(tokenId);\n\n        return\n            LiquidityAmounts.getAmountsForLiquidity(\n                sqrtRatioX96,\n                TickMath.getSqrtRatioAtTick(tickLower),\n                TickMath.getSqrtRatioAtTick(tickUpper),\n                liquidity\n            );\n    }\n\n    struct FeeParams {\n        address token0;\n        address token1;\n        uint24 fee;\n        int24 tickLower;\n        int24 tickUpper;\n        uint128 liquidity;\n        uint256 positionFeeGrowthInside0LastX128;\n        uint256 positionFeeGrowthInside1LastX128;\n        uint256 tokensOwed0;\n        uint256 tokensOwed1;\n    }\n\n    /// @notice Calculates the total fees owed to the token owner\n    /// @param positionManager The AstraDEX CL NonfungiblePositionManager\n    /// @param tokenId The tokenId of the token for which to get the total fees owed\n    /// @return amount0 The amount of fees owed in token0\n    /// @return amount1 The amount of fees owed in token1\n    function fees(\n        INonfungiblePositionManager positionManager,\n        uint256 tokenId\n    ) internal view returns (uint256 amount0, uint256 amount1) {\n        (\n            ,\n            ,\n            address token0,\n            address token1,\n            uint24 fee,\n            int24 tickLower,\n            int24 tickUpper,\n            uint128 liquidity,\n            uint256 positionFeeGrowthInside0LastX128,\n            uint256 positionFeeGrowthInside1LastX128,\n            uint256 tokensOwed0,\n            uint256 tokensOwed1\n        ) = positionManager.positions(tokenId);\n\n        return\n            _fees(\n                positionManager,\n                FeeParams({\n                    token0: token0,\n                    token1: token1,\n                    fee: fee,\n                    tickLower: tickLower,\n                    tickUpper: tickUpper,\n                    liquidity: liquidity,\n                    positionFeeGrowthInside0LastX128: positionFeeGrowthInside0LastX128,\n                    positionFeeGrowthInside1LastX128: positionFeeGrowthInside1LastX128,\n                    tokensOwed0: tokensOwed0,\n                    tokensOwed1: tokensOwed1\n                })\n            );\n    }\n\n    function _fees(\n        INonfungiblePositionManager positionManager,\n        FeeParams memory feeParams\n    ) private view returns (uint256 amount0, uint256 amount1) {\n        (uint256 poolFeeGrowthInside0LastX128, uint256 poolFeeGrowthInside1LastX128) = _getFeeGrowthInside(\n            IAstraCLPool(\n                PoolAddress.computeAddress(\n                    positionManager.factory(),\n                    PoolAddress.PoolKey({token0: feeParams.token0, token1: feeParams.token1, fee: feeParams.fee})\n                )\n            ),\n            feeParams.tickLower,\n            feeParams.tickUpper\n        );\n\n        amount0 =\n            FullMath.mulDiv(\n                poolFeeGrowthInside0LastX128 - feeParams.positionFeeGrowthInside0LastX128,\n                feeParams.liquidity,\n                FixedPoint128.Q128\n            ) +\n            feeParams.tokensOwed0;\n\n        amount1 =\n            FullMath.mulDiv(\n                poolFeeGrowthInside1LastX128 - feeParams.positionFeeGrowthInside1LastX128,\n                feeParams.liquidity,\n                FixedPoint128.Q128\n            ) +\n            feeParams.tokensOwed1;\n    }\n\n    function _getFeeGrowthInside(\n        IAstraCLPool pool,\n        int24 tickLower,\n        int24 tickUpper\n    ) private view returns (uint256 feeGrowthInside0X128, uint256 feeGrowthInside1X128) {\n        (, int24 tickCurrent, , , , , ) = pool.slot0();\n        (, , uint256 lowerFeeGrowthOutside0X128, uint256 lowerFeeGrowthOutside1X128, , , , ) = pool.ticks(tickLower);\n        (, , uint256 upperFeeGrowthOutside0X128, uint256 upperFeeGrowthOutside1X128, , , , ) = pool.ticks(tickUpper);\n\n        if (tickCurrent < tickLower) {\n            feeGrowthInside0X128 = lowerFeeGrowthOutside0X128 - upperFeeGrowthOutside0X128;\n            feeGrowthInside1X128 = lowerFeeGrowthOutside1X128 - upperFeeGrowthOutside1X128;\n        } else if (tickCurrent < tickUpper) {\n            uint256 feeGrowthGlobal0X128 = pool.feeGrowthGlobal0X128();\n            uint256 feeGrowthGlobal1X128 = pool.feeGrowthGlobal1X128();\n            feeGrowthInside0X128 = feeGrowthGlobal0X128 - lowerFeeGrowthOutside0X128 - upperFeeGrowthOutside0X128;\n            feeGrowthInside1X128 = feeGrowthGlobal1X128 - lowerFeeGrowthOutside1X128 - upperFeeGrowthOutside1X128;\n        } else {\n            feeGrowthInside0X128 = upperFeeGrowthOutside0X128 - lowerFeeGrowthOutside0X128;\n            feeGrowthInside1X128 = upperFeeGrowthOutside1X128 - lowerFeeGrowthOutside1X128;\n        }\n    }\n}\n"},"contracts/libraries/SafeERC20Namer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.5.0;\n\nimport './AddressStringUtil.sol';\n\n// produces token descriptors from inconsistent or absent ERC20 symbol implementations that can return string or bytes32\n// this library will always produce a string symbol to represent the token\nlibrary SafeERC20Namer {\n    function bytes32ToString(bytes32 x) private pure returns (string memory) {\n        bytes memory bytesString = new bytes(32);\n        uint256 charCount = 0;\n        for (uint256 j = 0; j < 32; j++) {\n            bytes1 char = x[j];\n            if (char != 0) {\n                bytesString[charCount] = char;\n                charCount++;\n            }\n        }\n        bytes memory bytesStringTrimmed = new bytes(charCount);\n        for (uint256 j = 0; j < charCount; j++) {\n            bytesStringTrimmed[j] = bytesString[j];\n        }\n        return string(bytesStringTrimmed);\n    }\n\n    // assumes the data is in position 2\n    function parseStringData(bytes memory b) private pure returns (string memory) {\n        uint256 charCount = 0;\n        // first parse the charCount out of the data\n        for (uint256 i = 32; i < 64; i++) {\n            charCount <<= 8;\n            charCount += uint8(b[i]);\n        }\n\n        bytes memory bytesStringTrimmed = new bytes(charCount);\n        for (uint256 i = 0; i < charCount; i++) {\n            bytesStringTrimmed[i] = b[i + 64];\n        }\n\n        return string(bytesStringTrimmed);\n    }\n\n    // uses a heuristic to produce a token name from the address\n    // the heuristic returns the full hex of the address string in upper case\n    function addressToName(address token) private pure returns (string memory) {\n        return AddressStringUtil.toAsciiString(token, 40);\n    }\n\n    // uses a heuristic to produce a token symbol from the address\n    // the heuristic returns the first 6 hex of the address string in upper case\n    function addressToSymbol(address token) private pure returns (string memory) {\n        return AddressStringUtil.toAsciiString(token, 6);\n    }\n\n    // calls an external view token contract method that returns a symbol or name, and parses the output into a string\n    function callAndParseStringReturn(address token, bytes4 selector) private view returns (string memory) {\n        (bool success, bytes memory data) = token.staticcall(abi.encodeWithSelector(selector));\n        // if not implemented, or returns empty data, return empty string\n        if (!success || data.length == 0) {\n            return '';\n        }\n        // bytes32 data always has length 32\n        if (data.length == 32) {\n            bytes32 decoded = abi.decode(data, (bytes32));\n            return bytes32ToString(decoded);\n        } else if (data.length > 64) {\n            return abi.decode(data, (string));\n        }\n        return '';\n    }\n\n    // attempts to extract the token symbol. if it does not implement symbol, returns a symbol derived from the address\n    function tokenSymbol(address token) internal view returns (string memory) {\n        // 0x95d89b41 = bytes4(keccak256(\"symbol()\"))\n        string memory symbol = callAndParseStringReturn(token, 0x95d89b41);\n        if (bytes(symbol).length == 0) {\n            // fallback to 6 uppercase hex of address\n            return addressToSymbol(token);\n        }\n        return symbol;\n    }\n\n    // attempts to extract the token name. if it does not implement name, returns a name derived from the address\n    function tokenName(address token) internal view returns (string memory) {\n        // 0x06fdde03 = bytes4(keccak256(\"name()\"))\n        string memory name = callAndParseStringReturn(token, 0x06fdde03);\n        if (bytes(name).length == 0) {\n            // fallback to full hex of address\n            return addressToName(token);\n        }\n        return name;\n    }\n}\n"},"contracts/libraries/SqrtPriceMathPartial.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/FullMath.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/UnsafeMath.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol';\n\n/// @title Functions based on Q64.96 sqrt price and liquidity\n/// @notice Exposes two functions from @airdao/astra-cl-core SqrtPriceMath\n/// that use square root of price as a Q64.96 and liquidity to compute deltas\nlibrary SqrtPriceMathPartial {\n    /// @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 sqrtRatioAX96 A sqrt price\n    /// @param sqrtRatioBX96 Another sqrt price\n    /// @param liquidity The amount of usable liquidity\n    /// @param roundUp Whether to round the amount up or down\n    /// @return amount0 Amount of token0 required to cover a position of size liquidity between the two passed prices\n    function getAmount0Delta(\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint128 liquidity,\n        bool roundUp\n    ) internal pure returns (uint256 amount0) {\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\n\n        uint256 numerator1 = uint256(liquidity) << FixedPoint96.RESOLUTION;\n        uint256 numerator2 = sqrtRatioBX96 - sqrtRatioAX96;\n\n        require(sqrtRatioAX96 > 0);\n\n        return\n            roundUp\n                ? UnsafeMath.divRoundingUp(\n                    FullMath.mulDivRoundingUp(numerator1, numerator2, sqrtRatioBX96),\n                    sqrtRatioAX96\n                )\n                : FullMath.mulDiv(numerator1, numerator2, sqrtRatioBX96) / sqrtRatioAX96;\n    }\n\n    /// @notice Gets the amount1 delta between two prices\n    /// @dev Calculates liquidity * (sqrt(upper) - sqrt(lower))\n    /// @param sqrtRatioAX96 A sqrt price\n    /// @param sqrtRatioBX96 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 token1 required to cover a position of size liquidity between the two passed prices\n    function getAmount1Delta(\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint128 liquidity,\n        bool roundUp\n    ) internal pure returns (uint256 amount1) {\n        if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\n\n        return\n            roundUp\n                ? FullMath.mulDivRoundingUp(liquidity, sqrtRatioBX96 - sqrtRatioAX96, FixedPoint96.Q96)\n                : FullMath.mulDiv(liquidity, sqrtRatioBX96 - sqrtRatioAX96, FixedPoint96.Q96);\n    }\n}\n"},"contracts/libraries/TokenRatioSortOrder.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity =0.7.6;\n\nlibrary TokenRatioSortOrder {\n    int256 constant NUMERATOR_MOST = 300;\n    int256 constant NUMERATOR_MORE = 200;\n    int256 constant NUMERATOR = 100;\n\n    int256 constant DENOMINATOR_MOST = -300;\n    int256 constant DENOMINATOR_MORE = -200;\n    int256 constant DENOMINATOR = -100;\n}\n"},"contracts/libraries/TransferHelper.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.6.0;\n\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\n\nlibrary TransferHelper {\n    /// @notice Transfers tokens from the targeted address to the given destination\n    /// @notice Errors with 'STF' if transfer fails\n    /// @param token The contract address of the token to be transferred\n    /// @param from The originating address from which the tokens will be transferred\n    /// @param to The destination address of the transfer\n    /// @param value The amount to be transferred\n    function safeTransferFrom(address token, address from, address to, uint256 value) internal {\n        (bool success, bytes memory data) = token.call(\n            abi.encodeWithSelector(IERC20.transferFrom.selector, from, to, value)\n        );\n        require(success && (data.length == 0 || abi.decode(data, (bool))), 'STF');\n    }\n\n    /// @notice Transfers tokens from msg.sender to a recipient\n    /// @dev Errors with ST if transfer fails\n    /// @param token The contract address of the token which will be transferred\n    /// @param to The recipient of the transfer\n    /// @param value The value of the transfer\n    function safeTransfer(address token, address to, uint256 value) internal {\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector, to, value));\n        require(success && (data.length == 0 || abi.decode(data, (bool))), 'ST');\n    }\n\n    /// @notice Approves the stipulated contract to spend the given allowance in the given token\n    /// @dev Errors with 'SA' if transfer fails\n    /// @param token The contract address of the token to be approved\n    /// @param to The target of the approval\n    /// @param value The amount of the given token the target will be allowed to spend\n    function safeApprove(address token, address to, uint256 value) internal {\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.approve.selector, to, value));\n        require(success && (data.length == 0 || abi.decode(data, (bool))), 'SA');\n    }\n\n    /// @notice Transfers AMB to the recipient address\n    /// @dev Fails with `STE`\n    /// @param to The destination of the transfer\n    /// @param value The value to be transferred\n    function safeTransferAMB(address to, uint256 value) internal {\n        (bool success, ) = to.call{value: value}(new bytes(0));\n        require(success, 'STE');\n    }\n}\n"},"contracts/SwapRouter.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\npragma abicoder v2;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/SafeCast.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/TickMath.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol';\n\nimport './interfaces/ISwapRouter.sol';\nimport './base/PeripheryImmutableState.sol';\nimport './base/PeripheryValidation.sol';\nimport './base/PeripheryPaymentsWithFee.sol';\nimport './base/Multicall.sol';\nimport './base/SelfPermit.sol';\nimport './libraries/Path.sol';\nimport './libraries/PoolAddress.sol';\nimport './libraries/CallbackValidation.sol';\nimport './interfaces/external/ISAMB.sol';\n\n/// @title AstraDEX CL Swap Router\n/// @notice Router for stateless execution of swaps against AstraDEX CL\ncontract SwapRouter is\n    ISwapRouter,\n    PeripheryImmutableState,\n    PeripheryValidation,\n    PeripheryPaymentsWithFee,\n    Multicall,\n    SelfPermit\n{\n    using Path for bytes;\n    using SafeCast for uint256;\n\n    /// @dev Used as the placeholder value for amountInCached, because the computed amount in for an exact output swap\n    /// can never actually be this value\n    uint256 private constant DEFAULT_AMOUNT_IN_CACHED = type(uint256).max;\n\n    /// @dev Transient storage variable used for returning the computed amount in for an exact output swap.\n    uint256 private amountInCached = DEFAULT_AMOUNT_IN_CACHED;\n\n    constructor(address _factory, address _SAMB) PeripheryImmutableState(_factory, _SAMB) {}\n\n    /// @dev Returns the pool for the given token pair and fee. The pool contract may or may not exist.\n    function getPool(address tokenA, address tokenB, uint24 fee) private view returns (IAstraCLPool) {\n        return IAstraCLPool(PoolAddress.computeAddress(factory, PoolAddress.getPoolKey(tokenA, tokenB, fee)));\n    }\n\n    struct SwapCallbackData {\n        bytes path;\n        address payer;\n    }\n\n    /// @inheritdoc IAstraCLSwapCallback\n    function astraCLSwapCallback(int256 amount0Delta, int256 amount1Delta, bytes calldata _data) external override {\n        require(amount0Delta > 0 || amount1Delta > 0); // swaps entirely within 0-liquidity regions are not supported\n        SwapCallbackData memory data = abi.decode(_data, (SwapCallbackData));\n        (address tokenIn, address tokenOut, uint24 fee) = data.path.decodeFirstPool();\n        CallbackValidation.verifyCallback(factory, tokenIn, tokenOut, fee);\n\n        (bool isExactInput, uint256 amountToPay) = amount0Delta > 0\n            ? (tokenIn < tokenOut, uint256(amount0Delta))\n            : (tokenOut < tokenIn, uint256(amount1Delta));\n        if (isExactInput) {\n            pay(tokenIn, data.payer, msg.sender, amountToPay);\n        } else {\n            // either initiate the next swap or pay\n            if (data.path.hasMultiplePools()) {\n                data.path = data.path.skipToken();\n                exactOutputInternal(amountToPay, msg.sender, 0, data);\n            } else {\n                amountInCached = amountToPay;\n                tokenIn = tokenOut; // swap in/out because exact output swaps are reversed\n                pay(tokenIn, data.payer, msg.sender, amountToPay);\n            }\n        }\n    }\n\n    /// @dev Performs a single exact input swap\n    function exactInputInternal(\n        uint256 amountIn,\n        address recipient,\n        uint160 sqrtPriceLimitX96,\n        SwapCallbackData memory data\n    ) private returns (uint256 amountOut) {\n        // allow swapping to the router address with address 0\n        if (recipient == address(0)) recipient = address(this);\n\n        (address tokenIn, address tokenOut, uint24 fee) = data.path.decodeFirstPool();\n\n        bool zeroForOne = tokenIn < tokenOut;\n\n        (int256 amount0, int256 amount1) = getPool(tokenIn, tokenOut, fee).swap(\n            recipient,\n            zeroForOne,\n            amountIn.toInt256(),\n            sqrtPriceLimitX96 == 0\n                ? (zeroForOne ? TickMath.MIN_SQRT_RATIO + 1 : TickMath.MAX_SQRT_RATIO - 1)\n                : sqrtPriceLimitX96,\n            abi.encode(data)\n        );\n\n        return uint256(-(zeroForOne ? amount1 : amount0));\n    }\n\n    /// @inheritdoc ISwapRouter\n    function exactInputSingle(\n        ExactInputSingleParams calldata params\n    ) external payable override checkDeadline(params.deadline) returns (uint256 amountOut) {\n        amountOut = exactInputInternal(\n            params.amountIn,\n            params.recipient,\n            params.sqrtPriceLimitX96,\n            SwapCallbackData({path: abi.encodePacked(params.tokenIn, params.fee, params.tokenOut), payer: msg.sender})\n        );\n        require(amountOut >= params.amountOutMinimum, 'Too little received');\n    }\n\n    /// @inheritdoc ISwapRouter\n    function exactInput(\n        ExactInputParams memory params\n    ) external payable override checkDeadline(params.deadline) returns (uint256 amountOut) {\n        address payer = msg.sender; // msg.sender pays for the first hop\n\n        while (true) {\n            bool hasMultiplePools = params.path.hasMultiplePools();\n\n            // the outputs of prior swaps become the inputs to subsequent ones\n            params.amountIn = exactInputInternal(\n                params.amountIn,\n                hasMultiplePools ? address(this) : params.recipient, // for intermediate swaps, this contract custodies\n                0,\n                SwapCallbackData({\n                    path: params.path.getFirstPool(), // only the first pool in the path is necessary\n                    payer: payer\n                })\n            );\n\n            // decide whether to continue or terminate\n            if (hasMultiplePools) {\n                payer = address(this); // at this point, the caller has paid\n                params.path = params.path.skipToken();\n            } else {\n                amountOut = params.amountIn;\n                break;\n            }\n        }\n\n        require(amountOut >= params.amountOutMinimum, 'Too little received');\n    }\n\n    /// @dev Performs a single exact output swap\n    function exactOutputInternal(\n        uint256 amountOut,\n        address recipient,\n        uint160 sqrtPriceLimitX96,\n        SwapCallbackData memory data\n    ) private returns (uint256 amountIn) {\n        // allow swapping to the router address with address 0\n        if (recipient == address(0)) recipient = address(this);\n\n        (address tokenOut, address tokenIn, uint24 fee) = data.path.decodeFirstPool();\n\n        bool zeroForOne = tokenIn < tokenOut;\n\n        (int256 amount0Delta, int256 amount1Delta) = getPool(tokenIn, tokenOut, fee).swap(\n            recipient,\n            zeroForOne,\n            -amountOut.toInt256(),\n            sqrtPriceLimitX96 == 0\n                ? (zeroForOne ? TickMath.MIN_SQRT_RATIO + 1 : TickMath.MAX_SQRT_RATIO - 1)\n                : sqrtPriceLimitX96,\n            abi.encode(data)\n        );\n\n        uint256 amountOutReceived;\n        (amountIn, amountOutReceived) = zeroForOne\n            ? (uint256(amount0Delta), uint256(-amount1Delta))\n            : (uint256(amount1Delta), uint256(-amount0Delta));\n        // it's technically possible to not receive the full output amount,\n        // so if no price limit has been specified, require this possibility away\n        if (sqrtPriceLimitX96 == 0) require(amountOutReceived == amountOut);\n    }\n\n    /// @inheritdoc ISwapRouter\n    function exactOutputSingle(\n        ExactOutputSingleParams calldata params\n    ) external payable override checkDeadline(params.deadline) returns (uint256 amountIn) {\n        // avoid an SLOAD by using the swap return data\n        amountIn = exactOutputInternal(\n            params.amountOut,\n            params.recipient,\n            params.sqrtPriceLimitX96,\n            SwapCallbackData({path: abi.encodePacked(params.tokenOut, params.fee, params.tokenIn), payer: msg.sender})\n        );\n\n        require(amountIn <= params.amountInMaximum, 'Too much requested');\n        // has to be reset even though we don't use it in the single hop case\n        amountInCached = DEFAULT_AMOUNT_IN_CACHED;\n    }\n\n    /// @inheritdoc ISwapRouter\n    function exactOutput(\n        ExactOutputParams calldata params\n    ) external payable override checkDeadline(params.deadline) returns (uint256 amountIn) {\n        // it's okay that the payer is fixed to msg.sender here, as they're only paying for the \"final\" exact output\n        // swap, which happens first, and subsequent swaps are paid for within nested callback frames\n        exactOutputInternal(\n            params.amountOut,\n            params.recipient,\n            0,\n            SwapCallbackData({path: params.path, payer: msg.sender})\n        );\n\n        amountIn = amountInCached;\n        require(amountIn <= params.amountInMaximum, 'Too much requested');\n        amountInCached = DEFAULT_AMOUNT_IN_CACHED;\n    }\n}\n"},"contracts/test/Base64Test.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity =0.7.6;\n\nimport 'base64-sol/base64.sol';\n\ncontract Base64Test {\n    function encode(bytes memory data) external pure returns (string memory) {\n        return Base64.encode(data);\n    }\n\n    function getGasCostOfEncode(bytes memory data) external view returns (uint256) {\n        uint256 gasBefore = gasleft();\n        Base64.encode(data);\n        return gasBefore - gasleft();\n    }\n}\n"},"contracts/test/LiquidityAmountsTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity =0.7.6;\n\nimport '../libraries/LiquidityAmounts.sol';\n\ncontract LiquidityAmountsTest {\n    function getLiquidityForAmount0(\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint256 amount0\n    ) external pure returns (uint128 liquidity) {\n        return LiquidityAmounts.getLiquidityForAmount0(sqrtRatioAX96, sqrtRatioBX96, amount0);\n    }\n\n    function getGasCostOfGetLiquidityForAmount0(\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint256 amount0\n    ) external view returns (uint256) {\n        uint256 gasBefore = gasleft();\n        LiquidityAmounts.getLiquidityForAmount0(sqrtRatioAX96, sqrtRatioBX96, amount0);\n        return gasBefore - gasleft();\n    }\n\n    function getLiquidityForAmount1(\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint256 amount1\n    ) external pure returns (uint128 liquidity) {\n        return LiquidityAmounts.getLiquidityForAmount1(sqrtRatioAX96, sqrtRatioBX96, amount1);\n    }\n\n    function getGasCostOfGetLiquidityForAmount1(\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint256 amount1\n    ) external view returns (uint256) {\n        uint256 gasBefore = gasleft();\n        LiquidityAmounts.getLiquidityForAmount1(sqrtRatioAX96, sqrtRatioBX96, amount1);\n        return gasBefore - gasleft();\n    }\n\n    function getLiquidityForAmounts(\n        uint160 sqrtRatioX96,\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint256 amount0,\n        uint256 amount1\n    ) external pure returns (uint128 liquidity) {\n        return LiquidityAmounts.getLiquidityForAmounts(sqrtRatioX96, sqrtRatioAX96, sqrtRatioBX96, amount0, amount1);\n    }\n\n    function getGasCostOfGetLiquidityForAmounts(\n        uint160 sqrtRatioX96,\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint256 amount0,\n        uint256 amount1\n    ) external view returns (uint256) {\n        uint256 gasBefore = gasleft();\n        LiquidityAmounts.getLiquidityForAmounts(sqrtRatioX96, sqrtRatioAX96, sqrtRatioBX96, amount0, amount1);\n        return gasBefore - gasleft();\n    }\n\n    function getAmount0ForLiquidity(\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint128 liquidity\n    ) external pure returns (uint256 amount0) {\n        return LiquidityAmounts.getAmount0ForLiquidity(sqrtRatioAX96, sqrtRatioBX96, liquidity);\n    }\n\n    function getGasCostOfGetAmount0ForLiquidity(\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint128 liquidity\n    ) external view returns (uint256) {\n        uint256 gasBefore = gasleft();\n        LiquidityAmounts.getAmount0ForLiquidity(sqrtRatioAX96, sqrtRatioBX96, liquidity);\n        return gasBefore - gasleft();\n    }\n\n    function getAmount1ForLiquidity(\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint128 liquidity\n    ) external pure returns (uint256 amount1) {\n        return LiquidityAmounts.getAmount1ForLiquidity(sqrtRatioAX96, sqrtRatioBX96, liquidity);\n    }\n\n    function getGasCostOfGetAmount1ForLiquidity(\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint128 liquidity\n    ) external view returns (uint256) {\n        uint256 gasBefore = gasleft();\n        LiquidityAmounts.getLiquidityForAmount1(sqrtRatioAX96, sqrtRatioBX96, liquidity);\n        return gasBefore - gasleft();\n    }\n\n    function getAmountsForLiquidity(\n        uint160 sqrtRatioX96,\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint128 liquidity\n    ) external pure returns (uint256 amount0, uint256 amount1) {\n        return LiquidityAmounts.getAmountsForLiquidity(sqrtRatioX96, sqrtRatioAX96, sqrtRatioBX96, liquidity);\n    }\n\n    function getGasCostOfGetAmountsForLiquidity(\n        uint160 sqrtRatioX96,\n        uint160 sqrtRatioAX96,\n        uint160 sqrtRatioBX96,\n        uint128 liquidity\n    ) external view returns (uint256) {\n        uint256 gasBefore = gasleft();\n        LiquidityAmounts.getAmountsForLiquidity(sqrtRatioX96, sqrtRatioAX96, sqrtRatioBX96, liquidity);\n        return gasBefore - gasleft();\n    }\n}\n"},"contracts/test/MockTimeSwapRouter.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity =0.7.6;\npragma abicoder v2;\n\nimport '../SwapRouter.sol';\n\ncontract MockTimeSwapRouter is SwapRouter {\n    uint256 time;\n\n    constructor(address _factory, address _SAMB) SwapRouter(_factory, _SAMB) {}\n\n    function _blockTimestamp() internal view override returns (uint256) {\n        return time;\n    }\n\n    function setTime(uint256 _time) external {\n        time = _time;\n    }\n}\n"},"contracts/test/NonfungiblePositionManagerPositionsGasTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity =0.7.6;\n\nimport '../interfaces/INonfungiblePositionManager.sol';\n\ncontract NonfungiblePositionManagerPositionsGasTest {\n    INonfungiblePositionManager immutable nonfungiblePositionManager;\n\n    constructor(INonfungiblePositionManager _nonfungiblePositionManager) {\n        nonfungiblePositionManager = _nonfungiblePositionManager;\n    }\n\n    function getGasCostOfPositions(uint256 tokenId) external view returns (uint256) {\n        uint256 gasBefore = gasleft();\n        nonfungiblePositionManager.positions(tokenId);\n        return gasBefore - gasleft();\n    }\n}\n"},"contracts/test/OracleTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity =0.7.6;\npragma abicoder v2;\n\nimport '../libraries/OracleLibrary.sol';\n\ncontract OracleTest {\n    function consult(\n        address pool,\n        uint32 secondsAgo\n    ) public view returns (int24 arithmeticMeanTick, uint128 harmonicMeanLiquidity) {\n        return OracleLibrary.consult(pool, secondsAgo);\n    }\n\n    function getQuoteAtTick(\n        int24 tick,\n        uint128 baseAmount,\n        address baseToken,\n        address quoteToken\n    ) public pure returns (uint256 quoteAmount) {\n        quoteAmount = OracleLibrary.getQuoteAtTick(tick, baseAmount, baseToken, quoteToken);\n    }\n\n    // For gas snapshot test\n    function getGasCostOfConsult(address pool, uint32 period) public view returns (uint256) {\n        uint256 gasBefore = gasleft();\n        OracleLibrary.consult(pool, period);\n        return gasBefore - gasleft();\n    }\n\n    function getGasCostOfGetQuoteAtTick(\n        int24 tick,\n        uint128 baseAmount,\n        address baseToken,\n        address quoteToken\n    ) public view returns (uint256) {\n        uint256 gasBefore = gasleft();\n        OracleLibrary.getQuoteAtTick(tick, baseAmount, baseToken, quoteToken);\n        return gasBefore - gasleft();\n    }\n\n    function getOldestObservationSecondsAgo(\n        address pool\n    ) public view returns (uint32 secondsAgo, uint32 currentTimestamp) {\n        secondsAgo = OracleLibrary.getOldestObservationSecondsAgo(pool);\n        currentTimestamp = uint32(block.timestamp);\n    }\n\n    function getBlockStartingTickAndLiquidity(address pool) public view returns (int24, uint128) {\n        return OracleLibrary.getBlockStartingTickAndLiquidity(pool);\n    }\n\n    function getWeightedArithmeticMeanTick(\n        OracleLibrary.WeightedTickData[] memory observations\n    ) public pure returns (int24 arithmeticMeanWeightedTick) {\n        return OracleLibrary.getWeightedArithmeticMeanTick(observations);\n    }\n\n    function getChainedPrice(address[] memory tokens, int24[] memory ticks) public view returns (int256 syntheticTick) {\n        return OracleLibrary.getChainedPrice(tokens, ticks);\n    }\n}\n"},"contracts/test/PathTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity =0.7.6;\n\nimport '../libraries/Path.sol';\n\ncontract PathTest {\n    function hasMultiplePools(bytes memory path) public pure returns (bool) {\n        return Path.hasMultiplePools(path);\n    }\n\n    function decodeFirstPool(bytes memory path) public pure returns (address tokenA, address tokenB, uint24 fee) {\n        return Path.decodeFirstPool(path);\n    }\n\n    function getFirstPool(bytes memory path) public pure returns (bytes memory) {\n        return Path.getFirstPool(path);\n    }\n\n    function skipToken(bytes memory path) public pure returns (bytes memory) {\n        return Path.skipToken(path);\n    }\n\n    // gas funcs\n    function getGasCostOfDecodeFirstPool(bytes memory path) public view returns (uint256) {\n        uint256 gasBefore = gasleft();\n        Path.decodeFirstPool(path);\n        return gasBefore - gasleft();\n    }\n}\n"},"contracts/test/PeripheryImmutableStateTest.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.7.6;\n\nimport '../base/PeripheryImmutableState.sol';\n\ncontract PeripheryImmutableStateTest is PeripheryImmutableState {\n    constructor(address _factory, address _SAMB) PeripheryImmutableState(_factory, _SAMB) {}\n}\n"},"contracts/test/PoolAddressTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity =0.7.6;\n\nimport '../libraries/PoolAddress.sol';\n\ncontract PoolAddressTest {\n    function POOL_INIT_CODE_HASH() external pure returns (bytes32) {\n        return PoolAddress.POOL_INIT_CODE_HASH;\n    }\n\n    function computeAddress(\n        address factory,\n        address token0,\n        address token1,\n        uint24 fee\n    ) external pure returns (address) {\n        return PoolAddress.computeAddress(factory, PoolAddress.PoolKey({token0: token0, token1: token1, fee: fee}));\n    }\n\n    function getGasCostOfComputeAddress(\n        address factory,\n        address token0,\n        address token1,\n        uint24 fee\n    ) external view returns (uint256) {\n        uint256 gasBefore = gasleft();\n        PoolAddress.computeAddress(factory, PoolAddress.PoolKey({token0: token0, token1: token1, fee: fee}));\n        return gasBefore - gasleft();\n    }\n}\n"},"contracts/test/PoolTicksCounterTest.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol';\n\npragma solidity >=0.6.0;\n\nimport '../libraries/PoolTicksCounter.sol';\n\ncontract PoolTicksCounterTest {\n    using PoolTicksCounter for IAstraCLPool;\n\n    function countInitializedTicksCrossed(\n        IAstraCLPool pool,\n        int24 tickBefore,\n        int24 tickAfter\n    ) external view returns (uint32 initializedTicksCrossed) {\n        return pool.countInitializedTicksCrossed(tickBefore, tickAfter);\n    }\n}\n"},"contracts/test/PositionValueTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity =0.7.6;\n\nimport '../libraries/PositionValue.sol';\nimport '../interfaces/INonfungiblePositionManager.sol';\n\ncontract PositionValueTest {\n    function total(\n        INonfungiblePositionManager nft,\n        uint256 tokenId,\n        uint160 sqrtRatioX96\n    ) external view returns (uint256 amount0, uint256 amount1) {\n        return PositionValue.total(nft, tokenId, sqrtRatioX96);\n    }\n\n    function principal(\n        INonfungiblePositionManager nft,\n        uint256 tokenId,\n        uint160 sqrtRatioX96\n    ) external view returns (uint256 amount0, uint256 amount1) {\n        return PositionValue.principal(nft, tokenId, sqrtRatioX96);\n    }\n\n    function fees(\n        INonfungiblePositionManager nft,\n        uint256 tokenId\n    ) external view returns (uint256 amount0, uint256 amount1) {\n        return PositionValue.fees(nft, tokenId);\n    }\n\n    function totalGas(\n        INonfungiblePositionManager nft,\n        uint256 tokenId,\n        uint160 sqrtRatioX96\n    ) external view returns (uint256) {\n        uint256 gasBefore = gasleft();\n        PositionValue.total(nft, tokenId, sqrtRatioX96);\n        return gasBefore - gasleft();\n    }\n\n    function principalGas(\n        INonfungiblePositionManager nft,\n        uint256 tokenId,\n        uint160 sqrtRatioX96\n    ) external view returns (uint256) {\n        uint256 gasBefore = gasleft();\n        PositionValue.principal(nft, tokenId, sqrtRatioX96);\n        return gasBefore - gasleft();\n    }\n\n    function feesGas(INonfungiblePositionManager nft, uint256 tokenId) external view returns (uint256) {\n        uint256 gasBefore = gasleft();\n        PositionValue.fees(nft, tokenId);\n        return gasBefore - gasleft();\n    }\n}\n"},"contracts/test/SelfPermitTest.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity =0.7.6;\n\nimport '../base/SelfPermit.sol';\n\n/// @dev Same as SelfPermit but not abstract\ncontract SelfPermitTest is SelfPermit {}\n"},"contracts/test/TestCallbackValidation.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity =0.7.6;\n\nimport '../libraries/CallbackValidation.sol';\n\ncontract TestCallbackValidation {\n    function verifyCallback(\n        address factory,\n        address tokenA,\n        address tokenB,\n        uint24 fee\n    ) external view returns (IAstraCLPool pool) {\n        return CallbackValidation.verifyCallback(factory, tokenA, tokenB, fee);\n    }\n}\n"},"contracts/test/TestERC20.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity =0.7.6;\n\nimport '@openzeppelin/contracts/drafts/ERC20Permit.sol';\n\ncontract TestERC20 is ERC20Permit {\n    constructor(uint256 amountToMint) ERC20('Test ERC20', 'TEST') ERC20Permit('Test ERC20') {\n        _mint(msg.sender, amountToMint);\n    }\n}\n"},"contracts/test/TestERC20Metadata.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity =0.7.6;\n\nimport '@openzeppelin/contracts/drafts/ERC20Permit.sol';\n\ncontract TestERC20Metadata is ERC20Permit {\n    constructor(uint256 amountToMint, string memory name, string memory symbol) ERC20(name, symbol) ERC20Permit(name) {\n        _mint(msg.sender, amountToMint);\n    }\n}\n"},"contracts/test/TestERC20PermitAllowed.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity =0.7.6;\n\nimport './TestERC20.sol';\nimport '../interfaces/external/IERC20PermitAllowed.sol';\n\n// has a fake permit that just uses the other signature type for type(uint256).max\ncontract TestERC20PermitAllowed is TestERC20, IERC20PermitAllowed {\n    constructor(uint256 amountToMint) TestERC20(amountToMint) {}\n\n    function permit(\n        address holder,\n        address spender,\n        uint256 nonce,\n        uint256 expiry,\n        bool allowed,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external override {\n        require(this.nonces(holder) == nonce, 'TestERC20PermitAllowed::permit: wrong nonce');\n        permit(holder, spender, allowed ? type(uint256).max : 0, expiry, v, r, s);\n    }\n}\n"},"contracts/test/TestMulticall.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity =0.7.6;\npragma abicoder v2;\n\nimport '../base/Multicall.sol';\n\ncontract TestMulticall is Multicall {\n    function functionThatRevertsWithError(string memory error) external pure {\n        revert(error);\n    }\n\n    struct Tuple {\n        uint256 a;\n        uint256 b;\n    }\n\n    function functionThatReturnsTuple(uint256 a, uint256 b) external pure returns (Tuple memory tuple) {\n        tuple = Tuple({b: a, a: b});\n    }\n\n    uint256 public paid;\n\n    function pays() external payable {\n        paid += msg.value;\n    }\n\n    function returnSender() external view returns (address) {\n        return msg.sender;\n    }\n}\n"},"contracts/test/TestPositionNFTOwner.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity =0.7.6;\n\nimport '../interfaces/external/IERC1271.sol';\n\ncontract TestPositionNFTOwner is IERC1271 {\n    address public owner;\n\n    function setOwner(address _owner) external {\n        owner = _owner;\n    }\n\n    function isValidSignature(bytes32 hash, bytes memory signature) external view override returns (bytes4 magicValue) {\n        bytes32 r;\n        bytes32 s;\n        uint8 v;\n        assembly {\n            r := mload(add(signature, 0x20))\n            s := mload(add(signature, 0x40))\n            v := byte(0, mload(add(signature, 0x60)))\n        }\n        if (ecrecover(hash, v, r, s) == owner) {\n            return bytes4(0x1626ba7e);\n        } else {\n            return bytes4(0);\n        }\n    }\n}\n"},"contracts/test/TestUniswapV3Callee.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity =0.7.6;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/libraries/SafeCast.sol';\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol';\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\n\ncontract TestAstraCLCallee is IAstraCLSwapCallback {\n    using SafeCast for uint256;\n\n    function swapExact0For1(address pool, uint256 amount0In, address recipient, uint160 sqrtPriceLimitX96) external {\n        IAstraCLPool(pool).swap(recipient, true, amount0In.toInt256(), sqrtPriceLimitX96, abi.encode(msg.sender));\n    }\n\n    function swap0ForExact1(address pool, uint256 amount1Out, address recipient, uint160 sqrtPriceLimitX96) external {\n        IAstraCLPool(pool).swap(recipient, true, -amount1Out.toInt256(), sqrtPriceLimitX96, abi.encode(msg.sender));\n    }\n\n    function swapExact1For0(address pool, uint256 amount1In, address recipient, uint160 sqrtPriceLimitX96) external {\n        IAstraCLPool(pool).swap(recipient, false, amount1In.toInt256(), sqrtPriceLimitX96, abi.encode(msg.sender));\n    }\n\n    function swap1ForExact0(address pool, uint256 amount0Out, address recipient, uint160 sqrtPriceLimitX96) external {\n        IAstraCLPool(pool).swap(recipient, false, -amount0Out.toInt256(), sqrtPriceLimitX96, abi.encode(msg.sender));\n    }\n\n    function astraCLSwapCallback(int256 amount0Delta, int256 amount1Delta, bytes calldata data) external override {\n        address sender = abi.decode(data, (address));\n\n        if (amount0Delta > 0) {\n            IERC20(IAstraCLPool(msg.sender).token0()).transferFrom(sender, msg.sender, uint256(amount0Delta));\n        } else {\n            assert(amount1Delta > 0);\n            IERC20(IAstraCLPool(msg.sender).token1()).transferFrom(sender, msg.sender, uint256(amount1Delta));\n        }\n    }\n}\n"},"contracts/test/TickLensTest.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\npragma abicoder v2;\n\n// TODO: change to import from @airdao/astra-cl-core\nimport '@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol';\nimport '../lens/TickLens.sol';\n\n/// @title Tick Lens contract\ncontract TickLensTest is TickLens {\n    function getGasCostOfGetPopulatedTicksInWord(address pool, int16 tickBitmapIndex) external view returns (uint256) {\n        uint256 gasBefore = gasleft();\n        getPopulatedTicksInWord(pool, tickBitmapIndex);\n        return gasBefore - gasleft();\n    }\n}\n"}},"settings":{"evmVersion":"istanbul","optimizer":{"enabled":true,"runs":1000000},"metadata":{"bytecodeHash":"none"},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"errors":[{"component":"general","errorCode":"1878","formattedMessage":"contracts/interfaces/classic/IAstraPair.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n","message":"SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.","severity":"warning","sourceLocation":{"end":-1,"file":"contracts/interfaces/classic/IAstraPair.sol","start":-1},"type":"Warning"},{"component":"general","errorCode":"3420","formattedMessage":"base64-sol/base64.sol: Warning: Source file does not specify required compiler version! Consider adding \"pragma solidity ^0.7.6;\"\n","message":"Source file does not specify required compiler version! Consider adding \"pragma solidity ^0.7.6;\"","severity":"warning","sourceLocation":{"end":-1,"file":"base64-sol/base64.sol","start":-1},"type":"Warning"},{"component":"general","errorCode":"2018","formattedMessage":"contracts/test/OracleTest.sol:59:5: Warning: Function state mutability can be restricted to pure\n    function getChainedPrice(address[] memory tokens, int24[] memory ticks) public view returns (int256 syntheticTick) {\n    ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Function state mutability can be restricted to pure","severity":"warning","sourceLocation":{"end":2126,"file":"contracts/test/OracleTest.sol","start":1943},"type":"Warning"}],"sources":{"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol","exportedSymbols":{"IAstraCLFactory":[82]},"id":83,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:0"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"71:157:0","text":"@title The interface for the Astra CL Factory\n @notice The Astra CL Factory facilitates creation of Astra CL pools and control over the protocol fees"},"fullyImplemented":false,"id":82,"linearizedBaseContracts":[82],"name":"IAstraCLFactory","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"260:185:0","text":"@notice Emitted when the owner of the factory is changed\n @param oldOwner The owner before the owner was changed\n @param newOwner The owner after the owner was changed"},"id":9,"name":"OwnerChanged","nodeType":"EventDefinition","parameters":{"id":8,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"indexed":true,"mutability":"mutable","name":"oldOwner","nodeType":"VariableDeclaration","scope":9,"src":"469:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"469:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"indexed":true,"mutability":"mutable","name":"newOwner","nodeType":"VariableDeclaration","scope":9,"src":"495:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6,"name":"address","nodeType":"ElementaryTypeName","src":"495:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"468:52:0"},"src":"450:71:0"},{"anonymous":false,"documentation":{"id":10,"nodeType":"StructuredDocumentation","src":"527:421:0","text":"@notice Emitted when a pool is created\n @param token0 The first token of the pool by address sort order\n @param token1 The second token 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 pool The address of the created pool"},"id":22,"name":"PoolCreated","nodeType":"EventDefinition","parameters":{"id":21,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12,"indexed":true,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":22,"src":"980:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11,"name":"address","nodeType":"ElementaryTypeName","src":"980:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14,"indexed":true,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":22,"src":"1012:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"1012:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16,"indexed":true,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":22,"src":"1044:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":15,"name":"uint24","nodeType":"ElementaryTypeName","src":"1044:6:0","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":18,"indexed":false,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":22,"src":"1072:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":17,"name":"int24","nodeType":"ElementaryTypeName","src":"1072:5:0","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":20,"indexed":false,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":22,"src":"1099:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19,"name":"address","nodeType":"ElementaryTypeName","src":"1099:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"970:147:0"},"src":"953:165:0"},{"anonymous":false,"documentation":{"id":23,"nodeType":"StructuredDocumentation","src":"1124:275:0","text":"@notice Emitted when a new fee amount is enabled for pool creation via the factory\n @param fee The enabled fee, denominated in hundredths of a bip\n @param tickSpacing The minimum number of ticks between initialized ticks for pools created with the given fee"},"id":29,"name":"FeeAmountEnabled","nodeType":"EventDefinition","parameters":{"id":28,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25,"indexed":true,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":29,"src":"1427:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":24,"name":"uint24","nodeType":"ElementaryTypeName","src":"1427:6:0","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":27,"indexed":true,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":29,"src":"1447:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":26,"name":"int24","nodeType":"ElementaryTypeName","src":"1447:5:0","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1426:47:0"},"src":"1404:70:0"},{"documentation":{"id":30,"nodeType":"StructuredDocumentation","src":"1480:163:0","text":"@notice Returns the current owner of the factory\n @dev Can be changed by the current owner via setOwner\n @return The address of the factory owner"},"functionSelector":"8da5cb5b","id":35,"implemented":false,"kind":"function","modifiers":[],"name":"owner","nodeType":"FunctionDefinition","parameters":{"id":31,"nodeType":"ParameterList","parameters":[],"src":"1662:2:0"},"returnParameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":35,"src":"1688:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1688:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1687:9:0"},"scope":82,"src":"1648:49:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1703:348:0","text":"@notice Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled\n @dev A fee amount can never be removed, so this value should be hard coded or cached in the calling context\n @param fee The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee\n @return The tick spacing"},"functionSelector":"22afcccb","id":43,"implemented":false,"kind":"function","modifiers":[],"name":"feeAmountTickSpacing","nodeType":"FunctionDefinition","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":43,"src":"2086:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":37,"name":"uint24","nodeType":"ElementaryTypeName","src":"2086:6:0","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"2085:12:0"},"returnParameters":{"id":42,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":43,"src":"2121:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":40,"name":"int24","nodeType":"ElementaryTypeName","src":"2121:5:0","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2120:7:0"},"scope":82,"src":"2056:72:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":44,"nodeType":"StructuredDocumentation","src":"2134:471:0","text":"@notice Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist\n @dev tokenA and tokenB may be passed in either token0/token1 or token1/token0 order\n @param tokenA The contract address of either token0 or token1\n @param tokenB The contract address of the other token\n @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n @return pool The pool address"},"functionSelector":"1698ee82","id":55,"implemented":false,"kind":"function","modifiers":[],"name":"getPool","nodeType":"FunctionDefinition","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":55,"src":"2627:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45,"name":"address","nodeType":"ElementaryTypeName","src":"2627:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":48,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":55,"src":"2643:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":47,"name":"address","nodeType":"ElementaryTypeName","src":"2643:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":50,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":55,"src":"2659:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":49,"name":"uint24","nodeType":"ElementaryTypeName","src":"2659:6:0","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"2626:44:0"},"returnParameters":{"id":54,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":55,"src":"2694:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52,"name":"address","nodeType":"ElementaryTypeName","src":"2694:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2693:14:0"},"scope":82,"src":"2610:98:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":56,"nodeType":"StructuredDocumentation","src":"2714:554:0","text":"@notice Creates a pool for the given two tokens and fee\n @param tokenA One of the two tokens in the desired pool\n @param tokenB The other of the two tokens in the desired pool\n @param fee The desired fee for the pool\n @dev tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved\n from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments\n are invalid.\n @return pool The address of the newly created pool"},"functionSelector":"a1671295","id":67,"implemented":false,"kind":"function","modifiers":[],"name":"createPool","nodeType":"FunctionDefinition","parameters":{"id":63,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":67,"src":"3293:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":57,"name":"address","nodeType":"ElementaryTypeName","src":"3293:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":67,"src":"3309:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59,"name":"address","nodeType":"ElementaryTypeName","src":"3309:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":62,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":67,"src":"3325:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":61,"name":"uint24","nodeType":"ElementaryTypeName","src":"3325:6:0","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"3292:44:0"},"returnParameters":{"id":66,"nodeType":"ParameterList","parameters":[{"constant":false,"id":65,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":67,"src":"3355:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":64,"name":"address","nodeType":"ElementaryTypeName","src":"3355:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3354:14:0"},"scope":82,"src":"3273:96:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":68,"nodeType":"StructuredDocumentation","src":"3375:144:0","text":"@notice Updates the owner of the factory\n @dev Must be called by the current owner\n @param _owner The new owner of the factory"},"functionSelector":"13af4035","id":73,"implemented":false,"kind":"function","modifiers":[],"name":"setOwner","nodeType":"FunctionDefinition","parameters":{"id":71,"nodeType":"ParameterList","parameters":[{"constant":false,"id":70,"mutability":"mutable","name":"_owner","nodeType":"VariableDeclaration","scope":73,"src":"3542:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69,"name":"address","nodeType":"ElementaryTypeName","src":"3542:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3541:16:0"},"returnParameters":{"id":72,"nodeType":"ParameterList","parameters":[],"src":"3566:0:0"},"scope":82,"src":"3524:43:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":74,"nodeType":"StructuredDocumentation","src":"3573:326:0","text":"@notice Enables a fee amount with the given tickSpacing\n @dev Fee amounts may never be removed once enabled\n @param fee The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)\n @param tickSpacing The spacing between ticks to be enforced for all pools created with the given fee amount"},"functionSelector":"8a7c195f","id":81,"implemented":false,"kind":"function","modifiers":[],"name":"enableFeeAmount","nodeType":"FunctionDefinition","parameters":{"id":79,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":81,"src":"3929:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":75,"name":"uint24","nodeType":"ElementaryTypeName","src":"3929:6:0","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":78,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":81,"src":"3941:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":77,"name":"int24","nodeType":"ElementaryTypeName","src":"3941:5:0","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"3928:31:0"},"returnParameters":{"id":80,"nodeType":"ParameterList","parameters":[],"src":"3968:0:0"},"scope":82,"src":"3904:65:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":83,"src":"228:3743:0"}],"src":"45:3927:0"},"id":0},"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","exportedSymbols":{"IAstraCLPool":[110],"IAstraCLPoolActions":[248],"IAstraCLPoolDerivedState":[279],"IAstraCLPoolEvents":[398],"IAstraCLPoolImmutables":[438],"IAstraCLPoolOwnerActions":[464],"IAstraCLPoolState":[572]},"id":111,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":84,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:1"},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol","file":"./pool/IAstraCLPoolActions.sol","id":86,"nodeType":"ImportDirective","scope":111,"sourceUnit":249,"src":"71:67:1","symbolAliases":[{"foreign":{"id":85,"name":"IAstraCLPoolActions","nodeType":"Identifier","overloadedDeclarations":[],"src":"79:19:1","typeDescriptions":{}}}],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol","file":"./pool/IAstraCLPoolDerivedState.sol","id":88,"nodeType":"ImportDirective","scope":111,"sourceUnit":280,"src":"139:77:1","symbolAliases":[{"foreign":{"id":87,"name":"IAstraCLPoolDerivedState","nodeType":"Identifier","overloadedDeclarations":[],"src":"147:24:1","typeDescriptions":{}}}],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol","file":"./pool/IAstraCLPoolEvents.sol","id":90,"nodeType":"ImportDirective","scope":111,"sourceUnit":399,"src":"217:65:1","symbolAliases":[{"foreign":{"id":89,"name":"IAstraCLPoolEvents","nodeType":"Identifier","overloadedDeclarations":[],"src":"225:18:1","typeDescriptions":{}}}],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol","file":"./pool/IAstraCLPoolImmutables.sol","id":92,"nodeType":"ImportDirective","scope":111,"sourceUnit":439,"src":"283:73:1","symbolAliases":[{"foreign":{"id":91,"name":"IAstraCLPoolImmutables","nodeType":"Identifier","overloadedDeclarations":[],"src":"291:22:1","typeDescriptions":{}}}],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol","file":"./pool/IAstraCLPoolOwnerActions.sol","id":94,"nodeType":"ImportDirective","scope":111,"sourceUnit":465,"src":"357:77:1","symbolAliases":[{"foreign":{"id":93,"name":"IAstraCLPoolOwnerActions","nodeType":"Identifier","overloadedDeclarations":[],"src":"365:24:1","typeDescriptions":{}}}],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol","file":"./pool/IAstraCLPoolState.sol","id":96,"nodeType":"ImportDirective","scope":111,"sourceUnit":573,"src":"435:63:1","symbolAliases":[{"foreign":{"id":95,"name":"IAstraCLPoolState","nodeType":"Identifier","overloadedDeclarations":[],"src":"443:17:1","typeDescriptions":{}}}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":98,"name":"IAstraCLPoolImmutables","nodeType":"UserDefinedTypeName","referencedDeclaration":438,"src":"792:22:1","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPoolImmutables_$438","typeString":"contract IAstraCLPoolImmutables"}},"id":99,"nodeType":"InheritanceSpecifier","src":"792:22:1"},{"baseName":{"id":100,"name":"IAstraCLPoolState","nodeType":"UserDefinedTypeName","referencedDeclaration":572,"src":"820:17:1","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPoolState_$572","typeString":"contract IAstraCLPoolState"}},"id":101,"nodeType":"InheritanceSpecifier","src":"820:17:1"},{"baseName":{"id":102,"name":"IAstraCLPoolDerivedState","nodeType":"UserDefinedTypeName","referencedDeclaration":279,"src":"843:24:1","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPoolDerivedState_$279","typeString":"contract IAstraCLPoolDerivedState"}},"id":103,"nodeType":"InheritanceSpecifier","src":"843:24:1"},{"baseName":{"id":104,"name":"IAstraCLPoolActions","nodeType":"UserDefinedTypeName","referencedDeclaration":248,"src":"873:19:1","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPoolActions_$248","typeString":"contract IAstraCLPoolActions"}},"id":105,"nodeType":"InheritanceSpecifier","src":"873:19:1"},{"baseName":{"id":106,"name":"IAstraCLPoolOwnerActions","nodeType":"UserDefinedTypeName","referencedDeclaration":464,"src":"898:24:1","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPoolOwnerActions_$464","typeString":"contract IAstraCLPoolOwnerActions"}},"id":107,"nodeType":"InheritanceSpecifier","src":"898:24:1"},{"baseName":{"id":108,"name":"IAstraCLPoolEvents","nodeType":"UserDefinedTypeName","referencedDeclaration":398,"src":"928:18:1","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPoolEvents_$398","typeString":"contract IAstraCLPoolEvents"}},"id":109,"nodeType":"InheritanceSpecifier","src":"928:18:1"}],"contractDependencies":[248,279,398,438,464,572],"contractKind":"interface","documentation":{"id":97,"nodeType":"StructuredDocumentation","src":"500:262:1","text":"@title The interface for a Astra CL Pool\n @notice An Astra pool facilitates swapping and automated market making between any two assets that strictly conform\n to the ERC20 specification\n @dev The pool interface is broken up into many smaller pieces"},"fullyImplemented":false,"id":110,"linearizedBaseContracts":[110,398,464,248,279,572,438],"name":"IAstraCLPool","nodeType":"ContractDefinition","nodes":[],"scope":111,"src":"762:187:1"}],"src":"45:905:1"},"id":1},"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLFlashCallback.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLFlashCallback.sol","exportedSymbols":{"IAstraCLFlashCallback":[124]},"id":125,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":112,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:2"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":113,"nodeType":"StructuredDocumentation","src":"71:142:2","text":"@title Callback for IAstraCLPoolActions#flash\n @notice Any contract that calls IAstraCLPoolActions#flash must implement this interface"},"fullyImplemented":false,"id":124,"linearizedBaseContracts":[124],"name":"IAstraCLFlashCallback","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":114,"nodeType":"StructuredDocumentation","src":"251:589:2","text":"@notice Called to `msg.sender` after transferring to the recipient from IAstraCLPool#flash.\n @dev In the implementation you must repay the pool the tokens sent by flash plus the computed fee amounts.\n The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory.\n @param fee0 The fee amount in token0 due to the pool by the end of the flash\n @param fee1 The fee amount in token1 due to the pool by the end of the flash\n @param data Any data passed through by the caller via the IAstraCLPoolActions#flash call"},"functionSelector":"e5a389c1","id":123,"implemented":false,"kind":"function","modifiers":[],"name":"astraCLFlashCallback","nodeType":"FunctionDefinition","parameters":{"id":121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116,"mutability":"mutable","name":"fee0","nodeType":"VariableDeclaration","scope":123,"src":"875:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":115,"name":"uint256","nodeType":"ElementaryTypeName","src":"875:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":118,"mutability":"mutable","name":"fee1","nodeType":"VariableDeclaration","scope":123,"src":"889:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":117,"name":"uint256","nodeType":"ElementaryTypeName","src":"889:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":123,"src":"903:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":119,"name":"bytes","nodeType":"ElementaryTypeName","src":"903:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"874:49:2"},"returnParameters":{"id":122,"nodeType":"ParameterList","parameters":[],"src":"932:0:2"},"scope":124,"src":"845:88:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":125,"src":"213:722:2"}],"src":"45:891:2"},"id":2},"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol","exportedSymbols":{"IAstraCLMintCallback":[138]},"id":139,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":126,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:3"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":127,"nodeType":"StructuredDocumentation","src":"71:140:3","text":"@title Callback for IAstraCLPoolActions#mint\n @notice Any contract that calls IAstraCLPoolActions#mint must implement this interface"},"fullyImplemented":false,"id":138,"linearizedBaseContracts":[138],"name":"IAstraCLMintCallback","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":128,"nodeType":"StructuredDocumentation","src":"248:577:3","text":"@notice Called to `msg.sender` after minting liquidity to a position from IAstraCLPool#mint.\n @dev In the implementation you must pay the pool tokens owed for the minted liquidity.\n The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory.\n @param amount0Owed The amount of token0 due to the pool for the minted liquidity\n @param amount1Owed The amount of token1 due to the pool for the minted liquidity\n @param data Any data passed through by the caller via the IAstraCLPoolActions#mint call"},"functionSelector":"4cb42d2d","id":137,"implemented":false,"kind":"function","modifiers":[],"name":"astraCLMintCallback","nodeType":"FunctionDefinition","parameters":{"id":135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":130,"mutability":"mutable","name":"amount0Owed","nodeType":"VariableDeclaration","scope":137,"src":"859:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":129,"name":"uint256","nodeType":"ElementaryTypeName","src":"859:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":132,"mutability":"mutable","name":"amount1Owed","nodeType":"VariableDeclaration","scope":137,"src":"880:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":131,"name":"uint256","nodeType":"ElementaryTypeName","src":"880:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":134,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":137,"src":"901:19:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":133,"name":"bytes","nodeType":"ElementaryTypeName","src":"901:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"858:63:3"},"returnParameters":{"id":136,"nodeType":"ParameterList","parameters":[],"src":"930:0:3"},"scope":138,"src":"830:101:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":139,"src":"211:722:3"}],"src":"45:889:3"},"id":3},"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol","exportedSymbols":{"IAstraCLSwapCallback":[152]},"id":153,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":140,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:4"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":141,"nodeType":"StructuredDocumentation","src":"71:140:4","text":"@title Callback for IAstraCLPoolActions#swap\n @notice Any contract that calls IAstraCLPoolActions#swap must implement this interface"},"fullyImplemented":false,"id":152,"linearizedBaseContracts":[152],"name":"IAstraCLSwapCallback","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":142,"nodeType":"StructuredDocumentation","src":"248:890:4","text":"@notice Called to `msg.sender` after executing a swap via IAstraCLPool#swap.\n @dev In the implementation you must pay the pool tokens owed for the swap.\n The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory.\n amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\n @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by\n the end of the swap. If positive, the callback must send that amount of token0 to the pool.\n @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by\n the end of the swap. If positive, the callback must send that amount of token1 to the pool.\n @param data Any data passed through by the caller via the IAstraCLPoolActions#swap call"},"functionSelector":"11c17848","id":151,"implemented":false,"kind":"function","modifiers":[],"name":"astraCLSwapCallback","nodeType":"FunctionDefinition","parameters":{"id":149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":144,"mutability":"mutable","name":"amount0Delta","nodeType":"VariableDeclaration","scope":151,"src":"1172:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":143,"name":"int256","nodeType":"ElementaryTypeName","src":"1172:6:4","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":146,"mutability":"mutable","name":"amount1Delta","nodeType":"VariableDeclaration","scope":151,"src":"1193:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"1193:6:4","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":148,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":151,"src":"1214:19:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":147,"name":"bytes","nodeType":"ElementaryTypeName","src":"1214:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1171:63:4"},"returnParameters":{"id":150,"nodeType":"ParameterList","parameters":[],"src":"1243:0:4"},"scope":152,"src":"1143:101:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":153,"src":"211:1035:4"}],"src":"45:1202:4"},"id":4},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol","exportedSymbols":{"IAstraCLPoolActions":[248]},"id":249,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":154,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:5"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":155,"nodeType":"StructuredDocumentation","src":"71:102:5","text":"@title Permissionless pool actions\n @notice Contains pool methods that can be called by anyone"},"fullyImplemented":false,"id":248,"linearizedBaseContracts":[248],"name":"IAstraCLPoolActions","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":156,"nodeType":"StructuredDocumentation","src":"209:206:5","text":"@notice Sets the initial price for the pool\n @dev Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\n @param sqrtPriceX96 the initial sqrt price of the pool as a Q64.96"},"functionSelector":"f637731d","id":161,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":158,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":161,"src":"440:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":157,"name":"uint160","nodeType":"ElementaryTypeName","src":"440:7:5","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"439:22:5"},"returnParameters":{"id":160,"nodeType":"ParameterList","parameters":[],"src":"470:0:5"},"scope":248,"src":"420:51:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":162,"nodeType":"StructuredDocumentation","src":"477:1029:5","text":"@notice Adds liquidity for the given recipient/tickLower/tickUpper position\n @dev The caller of this method receives a callback in the form of IAstraCLMintCallback.sol#astraCLMintCallback\n in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends\n on tickLower, tickUpper, the amount of liquidity, and the current price.\n @param recipient The address for which the liquidity will be created\n @param tickLower The lower tick of the position in which to add liquidity\n @param tickUpper The upper tick of the position in which to add liquidity\n @param amount The amount of liquidity to mint\n @param data Any data that should be passed through to the callback\n @return amount0 The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\n @return amount1 The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback"},"functionSelector":"3c8a7d8d","id":179,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":179,"src":"1534:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":163,"name":"address","nodeType":"ElementaryTypeName","src":"1534:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":166,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":179,"src":"1561:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":165,"name":"int24","nodeType":"ElementaryTypeName","src":"1561:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":168,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":179,"src":"1586:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":167,"name":"int24","nodeType":"ElementaryTypeName","src":"1586:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":170,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":179,"src":"1611:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":169,"name":"uint128","nodeType":"ElementaryTypeName","src":"1611:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":172,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":179,"src":"1635:19:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":171,"name":"bytes","nodeType":"ElementaryTypeName","src":"1635:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1524:136:5"},"returnParameters":{"id":178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":175,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":179,"src":"1679:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":174,"name":"uint256","nodeType":"ElementaryTypeName","src":"1679:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":177,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":179,"src":"1696:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":176,"name":"uint256","nodeType":"ElementaryTypeName","src":"1696:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1678:34:5"},"scope":248,"src":"1511:202:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":180,"nodeType":"StructuredDocumentation","src":"1719:1053:5","text":"@notice Collects tokens owed to a position\n @dev Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity.\n Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or\n amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the\n actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\n @param recipient The address which should receive the fees collected\n @param tickLower The lower tick of the position for which to collect fees\n @param tickUpper The upper tick of the position for which to collect fees\n @param amount0Requested How much token0 should be withdrawn from the fees owed\n @param amount1Requested How much token1 should be withdrawn from the fees owed\n @return amount0 The amount of fees collected in token0\n @return amount1 The amount of fees collected in token1"},"functionSelector":"4f1eb3d8","id":197,"implemented":false,"kind":"function","modifiers":[],"name":"collect","nodeType":"FunctionDefinition","parameters":{"id":191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":197,"src":"2803:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":181,"name":"address","nodeType":"ElementaryTypeName","src":"2803:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":184,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":197,"src":"2830:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":183,"name":"int24","nodeType":"ElementaryTypeName","src":"2830:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":186,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":197,"src":"2855:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":185,"name":"int24","nodeType":"ElementaryTypeName","src":"2855:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":188,"mutability":"mutable","name":"amount0Requested","nodeType":"VariableDeclaration","scope":197,"src":"2880:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":187,"name":"uint128","nodeType":"ElementaryTypeName","src":"2880:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":190,"mutability":"mutable","name":"amount1Requested","nodeType":"VariableDeclaration","scope":197,"src":"2914:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":189,"name":"uint128","nodeType":"ElementaryTypeName","src":"2914:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2793:151:5"},"returnParameters":{"id":196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":193,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":197,"src":"2963:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":192,"name":"uint128","nodeType":"ElementaryTypeName","src":"2963:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":195,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":197,"src":"2980:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":194,"name":"uint128","nodeType":"ElementaryTypeName","src":"2980:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2962:34:5"},"scope":248,"src":"2777:220:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":198,"nodeType":"StructuredDocumentation","src":"3003:631:5","text":"@notice Burn liquidity from the sender and account tokens owed for the liquidity to the position\n @dev Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0\n @dev Fees must be collected separately via a call to #collect\n @param tickLower The lower tick of the position for which to burn liquidity\n @param tickUpper The upper tick of the position for which to burn liquidity\n @param amount How much liquidity to burn\n @return amount0 The amount of token0 sent to the recipient\n @return amount1 The amount of token1 sent to the recipient"},"functionSelector":"a34123a7","id":211,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":200,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":211,"src":"3653:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":199,"name":"int24","nodeType":"ElementaryTypeName","src":"3653:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":202,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":211,"src":"3670:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":201,"name":"int24","nodeType":"ElementaryTypeName","src":"3670:5:5","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":204,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":211,"src":"3687:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":203,"name":"uint128","nodeType":"ElementaryTypeName","src":"3687:7:5","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3652:50:5"},"returnParameters":{"id":210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":207,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":211,"src":"3721:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":206,"name":"uint256","nodeType":"ElementaryTypeName","src":"3721:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":209,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":211,"src":"3738:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":208,"name":"uint256","nodeType":"ElementaryTypeName","src":"3738:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3720:34:5"},"scope":248,"src":"3639:116:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":212,"nodeType":"StructuredDocumentation","src":"3761:1015:5","text":"@notice Swap token0 for token1, or token1 for token0\n @dev The caller of this method receives a callback in the form of IAstraCLSwapCallback.sol#astraCLSwapCallback\n @param recipient The address to receive the output of the swap\n @param zeroForOne The direction of the swap, true for token0 to token1, false for token1 to token0\n @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\n @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this\n value after the swap. If one for zero, the price cannot be greater than this value after the swap\n @param data Any data to be passed through to the callback\n @return amount0 The delta of the balance of token0 of the pool, exact when negative, minimum when positive\n @return amount1 The delta of the balance of token1 of the pool, exact when negative, minimum when positive"},"functionSelector":"128acb08","id":229,"implemented":false,"kind":"function","modifiers":[],"name":"swap","nodeType":"FunctionDefinition","parameters":{"id":223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":214,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":229,"src":"4804:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":213,"name":"address","nodeType":"ElementaryTypeName","src":"4804:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":216,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":229,"src":"4831:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":215,"name":"bool","nodeType":"ElementaryTypeName","src":"4831:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":218,"mutability":"mutable","name":"amountSpecified","nodeType":"VariableDeclaration","scope":229,"src":"4856:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":217,"name":"int256","nodeType":"ElementaryTypeName","src":"4856:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":220,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":229,"src":"4888:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":219,"name":"uint160","nodeType":"ElementaryTypeName","src":"4888:7:5","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":222,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":229,"src":"4923:19:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":221,"name":"bytes","nodeType":"ElementaryTypeName","src":"4923:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4794:154:5"},"returnParameters":{"id":228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":225,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":229,"src":"4967:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":224,"name":"int256","nodeType":"ElementaryTypeName","src":"4967:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":227,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":229,"src":"4983:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":226,"name":"int256","nodeType":"ElementaryTypeName","src":"4983:6:5","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"4966:32:5"},"scope":248,"src":"4781:218:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":230,"nodeType":"StructuredDocumentation","src":"5005:657:5","text":"@notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback\n @dev The caller of this method receives a callback in the form of IAstraCLFlashCallback.sol#astraCLFlashCallback\n @dev Can be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling\n with 0 amount{0,1} and sending the donation amount(s) from the callback\n @param recipient The address which will receive the token0 and token1 amounts\n @param amount0 The amount of token0 to send\n @param amount1 The amount of token1 to send\n @param data Any data to be passed through to the callback"},"functionSelector":"490e6cbc","id":241,"implemented":false,"kind":"function","modifiers":[],"name":"flash","nodeType":"FunctionDefinition","parameters":{"id":239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":232,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":241,"src":"5682:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":231,"name":"address","nodeType":"ElementaryTypeName","src":"5682:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":234,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":241,"src":"5701:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":233,"name":"uint256","nodeType":"ElementaryTypeName","src":"5701:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":236,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":241,"src":"5718:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":235,"name":"uint256","nodeType":"ElementaryTypeName","src":"5718:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":238,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":241,"src":"5735:19:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":237,"name":"bytes","nodeType":"ElementaryTypeName","src":"5735:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5681:74:5"},"returnParameters":{"id":240,"nodeType":"ParameterList","parameters":[],"src":"5764:0:5"},"scope":248,"src":"5667:98:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"5771:367:5","text":"@notice Increase the maximum number of price and liquidity observations that this pool will store\n @dev This method is no-op if the pool already has an observationCardinalityNext greater than or equal to\n the input observationCardinalityNext.\n @param observationCardinalityNext The desired minimum number of observations for the pool to store"},"functionSelector":"32148f67","id":247,"implemented":false,"kind":"function","modifiers":[],"name":"increaseObservationCardinalityNext","nodeType":"FunctionDefinition","parameters":{"id":245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":244,"mutability":"mutable","name":"observationCardinalityNext","nodeType":"VariableDeclaration","scope":247,"src":"6187:33:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":243,"name":"uint16","nodeType":"ElementaryTypeName","src":"6187:6:5","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"6186:35:5"},"returnParameters":{"id":246,"nodeType":"ParameterList","parameters":[],"src":"6230:0:5"},"scope":248,"src":"6143:88:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":249,"src":"173:6060:5"}],"src":"45:6189:5"},"id":5},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol","exportedSymbols":{"IAstraCLPoolDerivedState":[279]},"id":280,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":250,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:6"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"71:222:6","text":"@title Pool state that is not stored\n @notice Contains view functions to provide information about the pool that is computed rather than stored on the\n blockchain. The functions here may have variable gas costs."},"fullyImplemented":false,"id":279,"linearizedBaseContracts":[279],"name":"IAstraCLPoolDerivedState","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":252,"nodeType":"StructuredDocumentation","src":"334:1045:6","text":"@notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\n @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing\n the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,\n you must call it with secondsAgos = [3600, 0].\n @dev The time weighted average tick represents the geometric time weighted average price of the pool, in\n log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\n @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned\n @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp\n @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block\n timestamp"},"functionSelector":"883bdbfd","id":264,"implemented":false,"kind":"function","modifiers":[],"name":"observe","nodeType":"FunctionDefinition","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":255,"mutability":"mutable","name":"secondsAgos","nodeType":"VariableDeclaration","scope":264,"src":"1410:29:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_calldata_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":253,"name":"uint32","nodeType":"ElementaryTypeName","src":"1410:6:6","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":254,"nodeType":"ArrayTypeName","src":"1410:8:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"}],"src":"1400:45:6"},"returnParameters":{"id":263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":259,"mutability":"mutable","name":"tickCumulatives","nodeType":"VariableDeclaration","scope":264,"src":"1469:30:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[]"},"typeName":{"baseType":{"id":257,"name":"int56","nodeType":"ElementaryTypeName","src":"1469:5:6","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":258,"nodeType":"ArrayTypeName","src":"1469:7:6","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_storage_ptr","typeString":"int56[]"}},"visibility":"internal"},{"constant":false,"id":262,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128s","nodeType":"VariableDeclaration","scope":264,"src":"1501:51:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[]"},"typeName":{"baseType":{"id":260,"name":"uint160","nodeType":"ElementaryTypeName","src":"1501:7:6","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":261,"nodeType":"ArrayTypeName","src":"1501:9:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}},"visibility":"internal"}],"src":"1468:85:6"},"scope":279,"src":"1384:170:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":265,"nodeType":"StructuredDocumentation","src":"1560:771:6","text":"@notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\n @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed.\n I.e., snapshots cannot be compared if a position is not held for the entire period between when the first\n snapshot is taken and the second snapshot is taken.\n @param tickLower The lower tick of the range\n @param tickUpper The upper tick of the range\n @return tickCumulativeInside The snapshot of the tick accumulator for the range\n @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range\n @return secondsInside The snapshot of seconds per liquidity for the range"},"functionSelector":"a38807f2","id":278,"implemented":false,"kind":"function","modifiers":[],"name":"snapshotCumulativesInside","nodeType":"FunctionDefinition","parameters":{"id":270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":267,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":278,"src":"2380:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":266,"name":"int24","nodeType":"ElementaryTypeName","src":"2380:5:6","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":269,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":278,"src":"2405:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":268,"name":"int24","nodeType":"ElementaryTypeName","src":"2405:5:6","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2370:56:6"},"returnParameters":{"id":277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":272,"mutability":"mutable","name":"tickCumulativeInside","nodeType":"VariableDeclaration","scope":278,"src":"2450:26:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":271,"name":"int56","nodeType":"ElementaryTypeName","src":"2450:5:6","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":274,"mutability":"mutable","name":"secondsPerLiquidityInsideX128","nodeType":"VariableDeclaration","scope":278,"src":"2478:37:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":273,"name":"uint160","nodeType":"ElementaryTypeName","src":"2478:7:6","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":276,"mutability":"mutable","name":"secondsInside","nodeType":"VariableDeclaration","scope":278,"src":"2517:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":275,"name":"uint32","nodeType":"ElementaryTypeName","src":"2517:6:6","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2449:89:6"},"scope":279,"src":"2336:203:6","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":280,"src":"293:2248:6"}],"src":"45:2497:6"},"id":6},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol","exportedSymbols":{"IAstraCLPoolEvents":[398]},"id":399,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":281,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:7"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":282,"nodeType":"StructuredDocumentation","src":"71:88:7","text":"@title Events emitted by a pool\n @notice Contains all events emitted by the pool"},"fullyImplemented":true,"id":398,"linearizedBaseContracts":[398],"name":"IAstraCLPoolEvents","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"194:344:7","text":"@notice Emitted exactly once by a pool when #initialize is first called on the pool\n @dev Mint/Burn/Swap cannot be emitted by the pool before Initialize\n @param sqrtPriceX96 The initial sqrt price of the pool, as a Q64.96\n @param tick The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool"},"id":289,"name":"Initialize","nodeType":"EventDefinition","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"indexed":false,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":289,"src":"560:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":284,"name":"uint160","nodeType":"ElementaryTypeName","src":"560:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":287,"indexed":false,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":289,"src":"582:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":286,"name":"int24","nodeType":"ElementaryTypeName","src":"582:5:7","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"559:34:7"},"src":"543:51:7"},{"anonymous":false,"documentation":{"id":290,"nodeType":"StructuredDocumentation","src":"600:551:7","text":"@notice Emitted when liquidity is minted for a given position\n @param sender The address that minted the liquidity\n @param owner The owner of the position and recipient of any minted liquidity\n @param tickLower The lower tick of the position\n @param tickUpper The upper tick of the position\n @param amount The amount of liquidity minted to the position range\n @param amount0 How much token0 was required for the minted liquidity\n @param amount1 How much token1 was required for the minted liquidity"},"id":306,"name":"Mint","nodeType":"EventDefinition","parameters":{"id":305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":292,"indexed":false,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":306,"src":"1176:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":291,"name":"address","nodeType":"ElementaryTypeName","src":"1176:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":294,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":306,"src":"1200:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":293,"name":"address","nodeType":"ElementaryTypeName","src":"1200:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":296,"indexed":true,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":306,"src":"1231:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":295,"name":"int24","nodeType":"ElementaryTypeName","src":"1231:5:7","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":298,"indexed":true,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":306,"src":"1264:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":297,"name":"int24","nodeType":"ElementaryTypeName","src":"1264:5:7","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":300,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":306,"src":"1297:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":299,"name":"uint128","nodeType":"ElementaryTypeName","src":"1297:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":302,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":306,"src":"1321:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":301,"name":"uint256","nodeType":"ElementaryTypeName","src":"1321:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":304,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":306,"src":"1346:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":303,"name":"uint256","nodeType":"ElementaryTypeName","src":"1346:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1166:201:7"},"src":"1156:212:7"},{"anonymous":false,"documentation":{"id":307,"nodeType":"StructuredDocumentation","src":"1374:493:7","text":"@notice Emitted when fees are collected by the owner of a position\n @dev Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\n @param owner The owner of the position for which fees are collected\n @param tickLower The lower tick of the position\n @param tickUpper The upper tick of the position\n @param amount0 The amount of token0 fees collected\n @param amount1 The amount of token1 fees collected"},"id":321,"name":"Collect","nodeType":"EventDefinition","parameters":{"id":320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":309,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":321,"src":"1895:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":308,"name":"address","nodeType":"ElementaryTypeName","src":"1895:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":311,"indexed":false,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":321,"src":"1926:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":310,"name":"address","nodeType":"ElementaryTypeName","src":"1926:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":313,"indexed":true,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":321,"src":"1953:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":312,"name":"int24","nodeType":"ElementaryTypeName","src":"1953:5:7","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":315,"indexed":true,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":321,"src":"1986:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":314,"name":"int24","nodeType":"ElementaryTypeName","src":"1986:5:7","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":317,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":321,"src":"2019:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":316,"name":"uint128","nodeType":"ElementaryTypeName","src":"2019:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":319,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":321,"src":"2044:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":318,"name":"uint128","nodeType":"ElementaryTypeName","src":"2044:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1885:180:7"},"src":"1872:194:7"},{"anonymous":false,"documentation":{"id":322,"nodeType":"StructuredDocumentation","src":"2072:523:7","text":"@notice Emitted when a position's liquidity is removed\n @dev Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\n @param owner The owner of the position for which liquidity is removed\n @param tickLower The lower tick of the position\n @param tickUpper The upper tick of the position\n @param amount The amount of liquidity to remove\n @param amount0 The amount of token0 withdrawn\n @param amount1 The amount of token1 withdrawn"},"id":336,"name":"Burn","nodeType":"EventDefinition","parameters":{"id":335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":324,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":336,"src":"2620:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":323,"name":"address","nodeType":"ElementaryTypeName","src":"2620:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":326,"indexed":true,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":336,"src":"2651:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":325,"name":"int24","nodeType":"ElementaryTypeName","src":"2651:5:7","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":328,"indexed":true,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":336,"src":"2684:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":327,"name":"int24","nodeType":"ElementaryTypeName","src":"2684:5:7","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":330,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":336,"src":"2717:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":329,"name":"uint128","nodeType":"ElementaryTypeName","src":"2717:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":332,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":336,"src":"2741:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":331,"name":"uint256","nodeType":"ElementaryTypeName","src":"2741:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":334,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":336,"src":"2766:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":333,"name":"uint256","nodeType":"ElementaryTypeName","src":"2766:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2610:177:7"},"src":"2600:188:7"},{"anonymous":false,"documentation":{"id":337,"nodeType":"StructuredDocumentation","src":"2794:600:7","text":"@notice Emitted by the pool for any swaps between token0 and token1\n @param sender The address that initiated the swap call, and that received the callback\n @param recipient The address that received the output of the swap\n @param amount0 The delta of the token0 balance of the pool\n @param amount1 The delta of the token1 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 price of the pool after the swap"},"id":353,"name":"Swap","nodeType":"EventDefinition","parameters":{"id":352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":339,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":353,"src":"3419:22:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":338,"name":"address","nodeType":"ElementaryTypeName","src":"3419:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":341,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":353,"src":"3451:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":340,"name":"address","nodeType":"ElementaryTypeName","src":"3451:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":343,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":353,"src":"3486:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":342,"name":"int256","nodeType":"ElementaryTypeName","src":"3486:6:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":345,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":353,"src":"3510:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":344,"name":"int256","nodeType":"ElementaryTypeName","src":"3510:6:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":347,"indexed":false,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":353,"src":"3534:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":346,"name":"uint160","nodeType":"ElementaryTypeName","src":"3534:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":349,"indexed":false,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":353,"src":"3564:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":348,"name":"uint128","nodeType":"ElementaryTypeName","src":"3564:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":351,"indexed":false,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":353,"src":"3591:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":350,"name":"int24","nodeType":"ElementaryTypeName","src":"3591:5:7","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"3409:198:7"},"src":"3399:209:7"},{"anonymous":false,"documentation":{"id":354,"nodeType":"StructuredDocumentation","src":"3614:562:7","text":"@notice Emitted by the pool for any flashes of token0/token1\n @param sender The address that initiated the swap call, and that received the callback\n @param recipient The address that received the tokens from flash\n @param amount0 The amount of token0 that was flashed\n @param amount1 The amount of token1 that was flashed\n @param paid0 The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\n @param paid1 The amount of token1 paid for the flash, which can exceed the amount1 plus the fee"},"id":368,"name":"Flash","nodeType":"EventDefinition","parameters":{"id":367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":356,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":368,"src":"4202:22:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":355,"name":"address","nodeType":"ElementaryTypeName","src":"4202:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":358,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":368,"src":"4234:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":357,"name":"address","nodeType":"ElementaryTypeName","src":"4234:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":360,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":368,"src":"4269:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":359,"name":"uint256","nodeType":"ElementaryTypeName","src":"4269:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":362,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":368,"src":"4294:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"4294:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":364,"indexed":false,"mutability":"mutable","name":"paid0","nodeType":"VariableDeclaration","scope":368,"src":"4319:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":363,"name":"uint256","nodeType":"ElementaryTypeName","src":"4319:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":366,"indexed":false,"mutability":"mutable","name":"paid1","nodeType":"VariableDeclaration","scope":368,"src":"4342:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":365,"name":"uint256","nodeType":"ElementaryTypeName","src":"4342:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4192:169:7"},"src":"4181:181:7"},{"anonymous":false,"documentation":{"id":369,"nodeType":"StructuredDocumentation","src":"4368:451:7","text":"@notice Emitted by the pool for increases to the number of observations that can be stored\n @dev observationCardinalityNext is not the observation cardinality until an observation is written at the index\n just before a mint/swap/burn.\n @param observationCardinalityNextOld The previous value of the next observation cardinality\n @param observationCardinalityNextNew The updated value of the next observation cardinality"},"id":375,"name":"IncreaseObservationCardinalityNext","nodeType":"EventDefinition","parameters":{"id":374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":371,"indexed":false,"mutability":"mutable","name":"observationCardinalityNextOld","nodeType":"VariableDeclaration","scope":375,"src":"4874:36:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":370,"name":"uint16","nodeType":"ElementaryTypeName","src":"4874:6:7","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":373,"indexed":false,"mutability":"mutable","name":"observationCardinalityNextNew","nodeType":"VariableDeclaration","scope":375,"src":"4920:36:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":372,"name":"uint16","nodeType":"ElementaryTypeName","src":"4920:6:7","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"4864:98:7"},"src":"4824:139:7"},{"anonymous":false,"documentation":{"id":376,"nodeType":"StructuredDocumentation","src":"4969:370:7","text":"@notice Emitted when the protocol fee is changed by the pool\n @param feeProtocol0Old The previous value of the token0 protocol fee\n @param feeProtocol1Old The previous value of the token1 protocol fee\n @param feeProtocol0New The updated value of the token0 protocol fee\n @param feeProtocol1New The updated value of the token1 protocol fee"},"id":386,"name":"SetFeeProtocol","nodeType":"EventDefinition","parameters":{"id":385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":378,"indexed":false,"mutability":"mutable","name":"feeProtocol0Old","nodeType":"VariableDeclaration","scope":386,"src":"5365:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":377,"name":"uint8","nodeType":"ElementaryTypeName","src":"5365:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":380,"indexed":false,"mutability":"mutable","name":"feeProtocol1Old","nodeType":"VariableDeclaration","scope":386,"src":"5388:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":379,"name":"uint8","nodeType":"ElementaryTypeName","src":"5388:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":382,"indexed":false,"mutability":"mutable","name":"feeProtocol0New","nodeType":"VariableDeclaration","scope":386,"src":"5411:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":381,"name":"uint8","nodeType":"ElementaryTypeName","src":"5411:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":384,"indexed":false,"mutability":"mutable","name":"feeProtocol1New","nodeType":"VariableDeclaration","scope":386,"src":"5434:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":383,"name":"uint8","nodeType":"ElementaryTypeName","src":"5434:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"5364:92:7"},"src":"5344:113:7"},{"anonymous":false,"documentation":{"id":387,"nodeType":"StructuredDocumentation","src":"5463:384:7","text":"@notice Emitted when the collected protocol fees are withdrawn by the factory owner\n @param sender The address that collects the protocol fees\n @param recipient The address that receives the collected protocol fees\n @param amount0 The amount of token0 protocol fees that is withdrawn\n @param amount0 The amount of token1 protocol fees that is withdrawn"},"id":397,"name":"CollectProtocol","nodeType":"EventDefinition","parameters":{"id":396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":389,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":397,"src":"5874:22:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":388,"name":"address","nodeType":"ElementaryTypeName","src":"5874:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":391,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":397,"src":"5898:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":390,"name":"address","nodeType":"ElementaryTypeName","src":"5898:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":393,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":397,"src":"5925:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":392,"name":"uint128","nodeType":"ElementaryTypeName","src":"5925:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":395,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":397,"src":"5942:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":394,"name":"uint128","nodeType":"ElementaryTypeName","src":"5942:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5873:85:7"},"src":"5852:107:7"}],"scope":399,"src":"159:5802:7"}],"src":"45:5917:7"},"id":7},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol","exportedSymbols":{"IAstraCLPoolImmutables":[438]},"id":439,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":400,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:8"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":401,"nodeType":"StructuredDocumentation","src":"71:153:8","text":"@title Pool state that never changes\n @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same values"},"fullyImplemented":false,"id":438,"linearizedBaseContracts":[438],"name":"IAstraCLPoolImmutables","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":402,"nodeType":"StructuredDocumentation","src":"263:136:8","text":"@notice The contract that deployed the pool, which must adhere to the IAstraCLFactory interface\n @return The contract address"},"functionSelector":"c45a0155","id":407,"implemented":false,"kind":"function","modifiers":[],"name":"factory","nodeType":"FunctionDefinition","parameters":{"id":403,"nodeType":"ParameterList","parameters":[],"src":"420:2:8"},"returnParameters":{"id":406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":405,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":407,"src":"446:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":404,"name":"address","nodeType":"ElementaryTypeName","src":"446:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"445:9:8"},"scope":438,"src":"404:51:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":408,"nodeType":"StructuredDocumentation","src":"461:113:8","text":"@notice The first of the two tokens of the pool, sorted by address\n @return The token contract address"},"functionSelector":"0dfe1681","id":413,"implemented":false,"kind":"function","modifiers":[],"name":"token0","nodeType":"FunctionDefinition","parameters":{"id":409,"nodeType":"ParameterList","parameters":[],"src":"594:2:8"},"returnParameters":{"id":412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":413,"src":"620:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":410,"name":"address","nodeType":"ElementaryTypeName","src":"620:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"619:9:8"},"scope":438,"src":"579:50:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":414,"nodeType":"StructuredDocumentation","src":"635:114:8","text":"@notice The second of the two tokens of the pool, sorted by address\n @return The token contract address"},"functionSelector":"d21220a7","id":419,"implemented":false,"kind":"function","modifiers":[],"name":"token1","nodeType":"FunctionDefinition","parameters":{"id":415,"nodeType":"ParameterList","parameters":[],"src":"769:2:8"},"returnParameters":{"id":418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":417,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":419,"src":"795:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":416,"name":"address","nodeType":"ElementaryTypeName","src":"795:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"794:9:8"},"scope":438,"src":"754:50:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":420,"nodeType":"StructuredDocumentation","src":"810:84:8","text":"@notice The pool's fee in hundredths of a bip, i.e. 1e-6\n @return The fee"},"functionSelector":"ddca3f43","id":425,"implemented":false,"kind":"function","modifiers":[],"name":"fee","nodeType":"FunctionDefinition","parameters":{"id":421,"nodeType":"ParameterList","parameters":[],"src":"911:2:8"},"returnParameters":{"id":424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":423,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":425,"src":"937:6:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":422,"name":"uint24","nodeType":"ElementaryTypeName","src":"937:6:8","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"936:8:8"},"scope":438,"src":"899:46:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":426,"nodeType":"StructuredDocumentation","src":"951:358:8","text":"@notice The pool tick spacing\n @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive\n e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...\n This value is an int24 to avoid casting even though it is always positive.\n @return The tick spacing"},"functionSelector":"d0c93a7c","id":431,"implemented":false,"kind":"function","modifiers":[],"name":"tickSpacing","nodeType":"FunctionDefinition","parameters":{"id":427,"nodeType":"ParameterList","parameters":[],"src":"1334:2:8"},"returnParameters":{"id":430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":431,"src":"1360:5:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":428,"name":"int24","nodeType":"ElementaryTypeName","src":"1360:5:8","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1359:7:8"},"scope":438,"src":"1314:53:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":432,"nodeType":"StructuredDocumentation","src":"1373:363:8","text":"@notice The maximum amount of position liquidity that can use any tick in the range\n @dev This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and\n also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\n @return The max amount of liquidity per tick"},"functionSelector":"70cf754a","id":437,"implemented":false,"kind":"function","modifiers":[],"name":"maxLiquidityPerTick","nodeType":"FunctionDefinition","parameters":{"id":433,"nodeType":"ParameterList","parameters":[],"src":"1769:2:8"},"returnParameters":{"id":436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":435,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":437,"src":"1795:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":434,"name":"uint128","nodeType":"ElementaryTypeName","src":"1795:7:8","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1794:9:8"},"scope":438,"src":"1741:63:8","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":439,"src":"224:1582:8"}],"src":"45:1762:8"},"id":8},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol","exportedSymbols":{"IAstraCLPoolOwnerActions":[464]},"id":465,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":440,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:9"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":441,"nodeType":"StructuredDocumentation","src":"71:116:9","text":"@title Permissioned pool actions\n @notice Contains pool methods that may only be called by the factory owner"},"fullyImplemented":false,"id":464,"linearizedBaseContracts":[464],"name":"IAstraCLPoolOwnerActions","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":442,"nodeType":"StructuredDocumentation","src":"228:205:9","text":"@notice Set the denominator of the protocol's % share of the fees\n @param feeProtocol0 new protocol fee for token0 of the pool\n @param feeProtocol1 new protocol fee for token1 of the pool"},"functionSelector":"8206a4d1","id":449,"implemented":false,"kind":"function","modifiers":[],"name":"setFeeProtocol","nodeType":"FunctionDefinition","parameters":{"id":447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":444,"mutability":"mutable","name":"feeProtocol0","nodeType":"VariableDeclaration","scope":449,"src":"462:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":443,"name":"uint8","nodeType":"ElementaryTypeName","src":"462:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":446,"mutability":"mutable","name":"feeProtocol1","nodeType":"VariableDeclaration","scope":449,"src":"482:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":445,"name":"uint8","nodeType":"ElementaryTypeName","src":"482:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"461:40:9"},"returnParameters":{"id":448,"nodeType":"ParameterList","parameters":[],"src":"510:0:9"},"scope":464,"src":"438:73:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":450,"nodeType":"StructuredDocumentation","src":"517:483:9","text":"@notice Collect the protocol fee accrued to the pool\n @param recipient The address to which collected protocol fees should be sent\n @param amount0Requested The maximum amount of token0 to send, can be 0 to collect fees in only token1\n @param amount1Requested The maximum amount of token1 to send, can be 0 to collect fees in only token0\n @return amount0 The protocol fee collected in token0\n @return amount1 The protocol fee collected in token1"},"functionSelector":"85b66729","id":463,"implemented":false,"kind":"function","modifiers":[],"name":"collectProtocol","nodeType":"FunctionDefinition","parameters":{"id":457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":463,"src":"1039:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":451,"name":"address","nodeType":"ElementaryTypeName","src":"1039:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":454,"mutability":"mutable","name":"amount0Requested","nodeType":"VariableDeclaration","scope":463,"src":"1066:24:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":453,"name":"uint128","nodeType":"ElementaryTypeName","src":"1066:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":456,"mutability":"mutable","name":"amount1Requested","nodeType":"VariableDeclaration","scope":463,"src":"1100:24:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":455,"name":"uint128","nodeType":"ElementaryTypeName","src":"1100:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1029:101:9"},"returnParameters":{"id":462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":459,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":463,"src":"1149:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":458,"name":"uint128","nodeType":"ElementaryTypeName","src":"1149:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":461,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":463,"src":"1166:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":460,"name":"uint128","nodeType":"ElementaryTypeName","src":"1166:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1148:34:9"},"scope":464,"src":"1005:178:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":465,"src":"187:998:9"}],"src":"45:1141:9"},"id":9},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol","exportedSymbols":{"IAstraCLPoolState":[572]},"id":573,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":466,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:10"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":467,"nodeType":"StructuredDocumentation","src":"71:169:10","text":"@title Pool state that can change\n @notice These methods compose the pool's state, and can change with any frequency including multiple times\n per transaction"},"fullyImplemented":false,"id":572,"linearizedBaseContracts":[572],"name":"IAstraCLPoolState","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"274:1140:10","text":"@notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas\n when accessed externally.\n @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value\n tick The current tick of the pool, i.e. according to the last tick transition that was run.\n This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick\n boundary.\n observationIndex The index of the last oracle observation that was written,\n observationCardinality The current maximum number of observations stored in the pool,\n observationCardinalityNext The next maximum number of observations, to be updated when the observation.\n feeProtocol The protocol fee for both tokens of the pool.\n Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0\n is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee.\n unlocked Whether the pool is currently locked to reentrancy"},"functionSelector":"3850c7bd","id":485,"implemented":false,"kind":"function","modifiers":[],"name":"slot0","nodeType":"FunctionDefinition","parameters":{"id":469,"nodeType":"ParameterList","parameters":[],"src":"1433:2:10"},"returnParameters":{"id":484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":471,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":485,"src":"1496:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":470,"name":"uint160","nodeType":"ElementaryTypeName","src":"1496:7:10","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":473,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":485,"src":"1530:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":472,"name":"int24","nodeType":"ElementaryTypeName","src":"1530:5:10","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":475,"mutability":"mutable","name":"observationIndex","nodeType":"VariableDeclaration","scope":485,"src":"1554:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":474,"name":"uint16","nodeType":"ElementaryTypeName","src":"1554:6:10","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":477,"mutability":"mutable","name":"observationCardinality","nodeType":"VariableDeclaration","scope":485,"src":"1591:29:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":476,"name":"uint16","nodeType":"ElementaryTypeName","src":"1591:6:10","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":479,"mutability":"mutable","name":"observationCardinalityNext","nodeType":"VariableDeclaration","scope":485,"src":"1634:33:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":478,"name":"uint16","nodeType":"ElementaryTypeName","src":"1634:6:10","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":481,"mutability":"mutable","name":"feeProtocol","nodeType":"VariableDeclaration","scope":485,"src":"1681:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":480,"name":"uint8","nodeType":"ElementaryTypeName","src":"1681:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":483,"mutability":"mutable","name":"unlocked","nodeType":"VariableDeclaration","scope":485,"src":"1712:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":482,"name":"bool","nodeType":"ElementaryTypeName","src":"1712:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1482:253:10"},"scope":572,"src":"1419:317:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":486,"nodeType":"StructuredDocumentation","src":"1742:168:10","text":"@notice The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\n @dev This value can overflow the uint256"},"functionSelector":"f3058399","id":491,"implemented":false,"kind":"function","modifiers":[],"name":"feeGrowthGlobal0X128","nodeType":"FunctionDefinition","parameters":{"id":487,"nodeType":"ParameterList","parameters":[],"src":"1944:2:10"},"returnParameters":{"id":490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":489,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":491,"src":"1970:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":488,"name":"uint256","nodeType":"ElementaryTypeName","src":"1970:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1969:9:10"},"scope":572,"src":"1915:64:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":492,"nodeType":"StructuredDocumentation","src":"1985:168:10","text":"@notice The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\n @dev This value can overflow the uint256"},"functionSelector":"46141319","id":497,"implemented":false,"kind":"function","modifiers":[],"name":"feeGrowthGlobal1X128","nodeType":"FunctionDefinition","parameters":{"id":493,"nodeType":"ParameterList","parameters":[],"src":"2187:2:10"},"returnParameters":{"id":496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":495,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":497,"src":"2213:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":494,"name":"uint256","nodeType":"ElementaryTypeName","src":"2213:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2212:9:10"},"scope":572,"src":"2158:64:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":498,"nodeType":"StructuredDocumentation","src":"2228:147:10","text":"@notice The amounts of token0 and token1 that are owed to the protocol\n @dev Protocol fees will never exceed uint128 max in either token"},"functionSelector":"1ad8b03b","id":505,"implemented":false,"kind":"function","modifiers":[],"name":"protocolFees","nodeType":"FunctionDefinition","parameters":{"id":499,"nodeType":"ParameterList","parameters":[],"src":"2401:2:10"},"returnParameters":{"id":504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":501,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":505,"src":"2427:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":500,"name":"uint128","nodeType":"ElementaryTypeName","src":"2427:7:10","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":503,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":505,"src":"2443:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":502,"name":"uint128","nodeType":"ElementaryTypeName","src":"2443:7:10","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2426:32:10"},"scope":572,"src":"2380:79:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":506,"nodeType":"StructuredDocumentation","src":"2465:150:10","text":"@notice The currently in range liquidity available to the pool\n @dev This value has no relationship to the total liquidity across all ticks"},"functionSelector":"1a686502","id":511,"implemented":false,"kind":"function","modifiers":[],"name":"liquidity","nodeType":"FunctionDefinition","parameters":{"id":507,"nodeType":"ParameterList","parameters":[],"src":"2638:2:10"},"returnParameters":{"id":510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":509,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":511,"src":"2664:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":508,"name":"uint128","nodeType":"ElementaryTypeName","src":"2664:7:10","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2663:9:10"},"scope":572,"src":"2620:53:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":512,"nodeType":"StructuredDocumentation","src":"2679:1244:10","text":"@notice Look up information about a specific tick in the pool\n @param tick The tick to look up\n @return liquidityGross the total amount of position liquidity that uses the pool either as tick lower or\n tick upper,\n liquidityNet how much liquidity changes when the pool price crosses the tick,\n feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0,\n feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1,\n tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick\n secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick,\n secondsOutside the seconds spent on the other side of the tick from the current tick,\n initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false.\n Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0.\n In addition, these values are only relative and must be used only in comparison to previous snapshots for\n a specific position."},"functionSelector":"f30dba93","id":533,"implemented":false,"kind":"function","modifiers":[],"name":"ticks","nodeType":"FunctionDefinition","parameters":{"id":515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":514,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":533,"src":"3952:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":513,"name":"int24","nodeType":"ElementaryTypeName","src":"3952:5:10","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"3942:26:10"},"returnParameters":{"id":532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":517,"mutability":"mutable","name":"liquidityGross","nodeType":"VariableDeclaration","scope":533,"src":"4029:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":516,"name":"uint128","nodeType":"ElementaryTypeName","src":"4029:7:10","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":519,"mutability":"mutable","name":"liquidityNet","nodeType":"VariableDeclaration","scope":533,"src":"4065:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":518,"name":"int128","nodeType":"ElementaryTypeName","src":"4065:6:10","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":521,"mutability":"mutable","name":"feeGrowthOutside0X128","nodeType":"VariableDeclaration","scope":533,"src":"4098:29:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":520,"name":"uint256","nodeType":"ElementaryTypeName","src":"4098:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":523,"mutability":"mutable","name":"feeGrowthOutside1X128","nodeType":"VariableDeclaration","scope":533,"src":"4141:29:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":522,"name":"uint256","nodeType":"ElementaryTypeName","src":"4141:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":525,"mutability":"mutable","name":"tickCumulativeOutside","nodeType":"VariableDeclaration","scope":533,"src":"4184:27:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":524,"name":"int56","nodeType":"ElementaryTypeName","src":"4184:5:10","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":527,"mutability":"mutable","name":"secondsPerLiquidityOutsideX128","nodeType":"VariableDeclaration","scope":533,"src":"4225:38:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":526,"name":"uint160","nodeType":"ElementaryTypeName","src":"4225:7:10","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":529,"mutability":"mutable","name":"secondsOutside","nodeType":"VariableDeclaration","scope":533,"src":"4277:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":528,"name":"uint32","nodeType":"ElementaryTypeName","src":"4277:6:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":531,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":533,"src":"4312:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":530,"name":"bool","nodeType":"ElementaryTypeName","src":"4312:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4015:323:10"},"scope":572,"src":"3928:411:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":534,"nodeType":"StructuredDocumentation","src":"4345:99:10","text":"@notice Returns 256 packed tick initialized boolean values. See TickBitmap for more information"},"functionSelector":"5339c296","id":541,"implemented":false,"kind":"function","modifiers":[],"name":"tickBitmap","nodeType":"FunctionDefinition","parameters":{"id":537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":536,"mutability":"mutable","name":"wordPosition","nodeType":"VariableDeclaration","scope":541,"src":"4469:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":535,"name":"int16","nodeType":"ElementaryTypeName","src":"4469:5:10","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"4468:20:10"},"returnParameters":{"id":540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":539,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":541,"src":"4512:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":538,"name":"uint256","nodeType":"ElementaryTypeName","src":"4512:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4511:9:10"},"scope":572,"src":"4449:72:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":542,"nodeType":"StructuredDocumentation","src":"4527:700:10","text":"@notice Returns the information about a position by the position's key\n @param key The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\n @return _liquidity The amount of liquidity in the position,\n Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke,\n Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke,\n Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke,\n Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke"},"functionSelector":"514ea4bf","id":557,"implemented":false,"kind":"function","modifiers":[],"name":"positions","nodeType":"FunctionDefinition","parameters":{"id":545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":544,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":557,"src":"5260:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":543,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5260:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5250:27:10"},"returnParameters":{"id":556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":547,"mutability":"mutable","name":"_liquidity","nodeType":"VariableDeclaration","scope":557,"src":"5338:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":546,"name":"uint128","nodeType":"ElementaryTypeName","src":"5338:7:10","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":549,"mutability":"mutable","name":"feeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":557,"src":"5370:32:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":548,"name":"uint256","nodeType":"ElementaryTypeName","src":"5370:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":551,"mutability":"mutable","name":"feeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":557,"src":"5416:32:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":550,"name":"uint256","nodeType":"ElementaryTypeName","src":"5416:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":553,"mutability":"mutable","name":"tokensOwed0","nodeType":"VariableDeclaration","scope":557,"src":"5462:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":552,"name":"uint128","nodeType":"ElementaryTypeName","src":"5462:7:10","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":555,"mutability":"mutable","name":"tokensOwed1","nodeType":"VariableDeclaration","scope":557,"src":"5495:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":554,"name":"uint128","nodeType":"ElementaryTypeName","src":"5495:7:10","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5324:200:10"},"scope":572,"src":"5232:293:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":558,"nodeType":"StructuredDocumentation","src":"5531:749:10","text":"@notice Returns data about a specific observation index\n @param index The element of the observations array to fetch\n @dev You most likely want to use #observe() instead of this method to get an observation as of some amount of time\n ago, rather than at a specific index in the array.\n @return blockTimestamp The timestamp of the observation,\n Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,\n Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp,\n Returns initialized whether the observation has been initialized and the values are safe to use"},"functionSelector":"252c09d7","id":571,"implemented":false,"kind":"function","modifiers":[],"name":"observations","nodeType":"FunctionDefinition","parameters":{"id":561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":560,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":571,"src":"6316:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":559,"name":"uint256","nodeType":"ElementaryTypeName","src":"6316:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6306:29:10"},"returnParameters":{"id":570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":563,"mutability":"mutable","name":"blockTimestamp","nodeType":"VariableDeclaration","scope":571,"src":"6396:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":562,"name":"uint32","nodeType":"ElementaryTypeName","src":"6396:6:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":565,"mutability":"mutable","name":"tickCumulative","nodeType":"VariableDeclaration","scope":571,"src":"6431:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":564,"name":"int56","nodeType":"ElementaryTypeName","src":"6431:5:10","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":567,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128","nodeType":"VariableDeclaration","scope":571,"src":"6465:41:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":566,"name":"uint160","nodeType":"ElementaryTypeName","src":"6465:7:10","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":569,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":571,"src":"6520:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":568,"name":"bool","nodeType":"ElementaryTypeName","src":"6520:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6382:164:10"},"scope":572,"src":"6285:262:10","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":573,"src":"240:6309:10"}],"src":"45:6505:10"},"id":10},"@airdao/astra-cl-core/contracts/libraries/BitMath.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/BitMath.sol","exportedSymbols":{"BitMath":[851]},"id":852,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":574,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:11"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":575,"nodeType":"StructuredDocumentation","src":"71:116:11","text":"@title BitMath\n @dev This library provides functionality for computing bit properties of an unsigned integer"},"fullyImplemented":true,"id":851,"linearizedBaseContracts":[851],"name":"BitMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":688,"nodeType":"Block","src":"742:660:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":584,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"760:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"764:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"760:5:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":583,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"752:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"752:14:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":588,"nodeType":"ExpressionStatement","src":"752:14:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":589,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"781:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3078313030303030303030303030303030303030303030303030303030303030303030","id":590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"786:35:11","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"value":"0x100000000000000000000000000000000"},"src":"781:40:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":601,"nodeType":"IfStatement","src":"777:102:11","trueBody":{"id":600,"nodeType":"Block","src":"823:56:11","statements":[{"expression":{"id":594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":592,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"837:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"843:3:11","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"837:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":595,"nodeType":"ExpressionStatement","src":"837:9:11"},{"expression":{"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":596,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":581,"src":"860:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"865:3:11","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"860:8:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":599,"nodeType":"ExpressionStatement","src":"860:8:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":602,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"892:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30783130303030303030303030303030303030","id":603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"897:19:11","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"value":"0x10000000000000000"},"src":"892:24:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":614,"nodeType":"IfStatement","src":"888:84:11","trueBody":{"id":613,"nodeType":"Block","src":"918:54:11","statements":[{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":605,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"932:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"938:2:11","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"932:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"932:8:11"},{"expression":{"id":611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":581,"src":"954:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"959:2:11","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"954:7:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":612,"nodeType":"ExpressionStatement","src":"954:7:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":615,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"985:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3078313030303030303030","id":616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"990:11:11","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"value":"0x100000000"},"src":"985:16:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":627,"nodeType":"IfStatement","src":"981:76:11","trueBody":{"id":626,"nodeType":"Block","src":"1003:54:11","statements":[{"expression":{"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":618,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"1017:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1023:2:11","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"1017:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":621,"nodeType":"ExpressionStatement","src":"1017:8:11"},{"expression":{"id":624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":622,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":581,"src":"1039:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1044:2:11","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"1039:7:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":625,"nodeType":"ExpressionStatement","src":"1039:7:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":628,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"1070:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30783130303030","id":629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1075:7:11","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"value":"0x10000"},"src":"1070:12:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":640,"nodeType":"IfStatement","src":"1066:72:11","trueBody":{"id":639,"nodeType":"Block","src":"1084:54:11","statements":[{"expression":{"id":633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":631,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"1098:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1104:2:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"1098:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":634,"nodeType":"ExpressionStatement","src":"1098:8:11"},{"expression":{"id":637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":635,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":581,"src":"1120:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1125:2:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"1120:7:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":638,"nodeType":"ExpressionStatement","src":"1120:7:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":641,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"1151:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3078313030","id":642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1156:5:11","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"0x100"},"src":"1151:10:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":653,"nodeType":"IfStatement","src":"1147:68:11","trueBody":{"id":652,"nodeType":"Block","src":"1163:52:11","statements":[{"expression":{"id":646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":644,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"1177:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1183:1:11","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1177:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":647,"nodeType":"ExpressionStatement","src":"1177:7:11"},{"expression":{"id":650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":648,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":581,"src":"1198:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1203:1:11","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1198:6:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":651,"nodeType":"ExpressionStatement","src":"1198:6:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"1228:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30783130","id":655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1233:4:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"src":"1228:9:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"1224:67:11","trueBody":{"id":665,"nodeType":"Block","src":"1239:52:11","statements":[{"expression":{"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":657,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"1253:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1259:1:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1253:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":660,"nodeType":"ExpressionStatement","src":"1253:7:11"},{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":581,"src":"1274:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1279:1:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1274:6:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":664,"nodeType":"ExpressionStatement","src":"1274:6:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":667,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"1304:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"307834","id":668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1309:3:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x4"},"src":"1304:8:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":679,"nodeType":"IfStatement","src":"1300:66:11","trueBody":{"id":678,"nodeType":"Block","src":"1314:52:11","statements":[{"expression":{"id":672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":670,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"1328:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1334:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1328:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":673,"nodeType":"ExpressionStatement","src":"1328:7:11"},{"expression":{"id":676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":674,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":581,"src":"1349:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1354:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1349:6:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":677,"nodeType":"ExpressionStatement","src":"1349:6:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":680,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"1379:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"307832","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1384:3:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x2"},"src":"1379:8:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":687,"nodeType":"IfStatement","src":"1375:20:11","trueBody":{"expression":{"id":685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":683,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":581,"src":"1389:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1394:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1389:6:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":686,"nodeType":"ExpressionStatement","src":"1389:6:11"}}]},"documentation":{"id":576,"nodeType":"StructuredDocumentation","src":"209:457:11","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 @dev The function satisfies the property:\n     x >= 2**mostSignificantBit(x) and x < 2**(mostSignificantBit(x)+1)\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":689,"implemented":true,"kind":"function","modifiers":[],"name":"mostSignificantBit","nodeType":"FunctionDefinition","parameters":{"id":579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":578,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":689,"src":"699:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":577,"name":"uint256","nodeType":"ElementaryTypeName","src":"699:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"698:11:11"},"returnParameters":{"id":582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":581,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":689,"src":"733:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":580,"name":"uint8","nodeType":"ElementaryTypeName","src":"733:5:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"732:9:11"},"scope":851,"src":"671:731:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":849,"nodeType":"Block","src":"1965:822:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"1983:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1987:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1983:5:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":697,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1975:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1975:14:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":702,"nodeType":"ExpressionStatement","src":"1975:14:11"},{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":703,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"2000:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"323535","id":704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2004:3:11","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"2000:7:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":706,"nodeType":"ExpressionStatement","src":"2000:7:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":707,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2021:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"expression":{"arguments":[{"id":710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2030:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":709,"name":"uint128","nodeType":"ElementaryTypeName","src":"2030:7:11","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":708,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2025:4:11","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2025:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"2025:17:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2021:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2045:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2021:25:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":725,"nodeType":"Block","src":"2087:34:11","statements":[{"expression":{"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":721,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2101:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2107:3:11","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2101:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":724,"nodeType":"ExpressionStatement","src":"2101:9:11"}]},"id":726,"nodeType":"IfStatement","src":"2017:104:11","trueBody":{"id":720,"nodeType":"Block","src":"2048:33:11","statements":[{"expression":{"id":718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":716,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"2062:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"313238","id":717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2067:3:11","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2062:8:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":719,"nodeType":"ExpressionStatement","src":"2062:8:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":727,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2134:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"expression":{"arguments":[{"id":730,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2143:6:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":729,"name":"uint64","nodeType":"ElementaryTypeName","src":"2143:6:11","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":728,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2138:4:11","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2138:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":732,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"2138:16:11","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"2134:20:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2157:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2134:24:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":745,"nodeType":"Block","src":"2198:33:11","statements":[{"expression":{"id":743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":741,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2212:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2218:2:11","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"2212:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":744,"nodeType":"ExpressionStatement","src":"2212:8:11"}]},"id":746,"nodeType":"IfStatement","src":"2130:101:11","trueBody":{"id":740,"nodeType":"Block","src":"2160:32:11","statements":[{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":736,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"2174:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3634","id":737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2179:2:11","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"2174:7:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":739,"nodeType":"ExpressionStatement","src":"2174:7:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":747,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2244:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"expression":{"arguments":[{"id":750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2253:6:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":749,"name":"uint32","nodeType":"ElementaryTypeName","src":"2253:6:11","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":748,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2248:4:11","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2248:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":752,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"2248:16:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2244:20:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2267:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2244:24:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":765,"nodeType":"Block","src":"2308:33:11","statements":[{"expression":{"id":763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":761,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2322:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2328:2:11","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"2322:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":764,"nodeType":"ExpressionStatement","src":"2322:8:11"}]},"id":766,"nodeType":"IfStatement","src":"2240:101:11","trueBody":{"id":760,"nodeType":"Block","src":"2270:32:11","statements":[{"expression":{"id":758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":756,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"2284:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3332","id":757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2289:2:11","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"2284:7:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":759,"nodeType":"ExpressionStatement","src":"2284:7:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":767,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2354:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"expression":{"arguments":[{"id":770,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2363:6:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":769,"name":"uint16","nodeType":"ElementaryTypeName","src":"2363:6:11","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"}],"id":768,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2358:4:11","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2358:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint16","typeString":"type(uint16)"}},"id":772,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"2358:16:11","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"2354:20:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2377:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2354:24:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":785,"nodeType":"Block","src":"2418:33:11","statements":[{"expression":{"id":783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":781,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2432:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2438:2:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"2432:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":784,"nodeType":"ExpressionStatement","src":"2432:8:11"}]},"id":786,"nodeType":"IfStatement","src":"2350:101:11","trueBody":{"id":780,"nodeType":"Block","src":"2380:32:11","statements":[{"expression":{"id":778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":776,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"2394:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3136","id":777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2399:2:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"2394:7:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":779,"nodeType":"ExpressionStatement","src":"2394:7:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":787,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2464:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"expression":{"arguments":[{"id":790,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2473:5:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":789,"name":"uint8","nodeType":"ElementaryTypeName","src":"2473:5:11","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":788,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2468:4:11","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2468:11:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":792,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"2468:15:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2464:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2486:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2464:23:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":805,"nodeType":"Block","src":"2526:32:11","statements":[{"expression":{"id":803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":801,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2540:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2546:1:11","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"2540:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":804,"nodeType":"ExpressionStatement","src":"2540:7:11"}]},"id":806,"nodeType":"IfStatement","src":"2460:98:11","trueBody":{"id":800,"nodeType":"Block","src":"2489:31:11","statements":[{"expression":{"id":798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":796,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"2503:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"38","id":797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2508:1:11","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"2503:6:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":799,"nodeType":"ExpressionStatement","src":"2503:6:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":807,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2571:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2575:3:11","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2571:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2581:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2571:11:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":821,"nodeType":"Block","src":"2621:32:11","statements":[{"expression":{"id":819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":817,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2635:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2641:1:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2635:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":820,"nodeType":"ExpressionStatement","src":"2635:7:11"}]},"id":822,"nodeType":"IfStatement","src":"2567:86:11","trueBody":{"id":816,"nodeType":"Block","src":"2584:31:11","statements":[{"expression":{"id":814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":812,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"2598:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"34","id":813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2603:1:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2598:6:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":815,"nodeType":"ExpressionStatement","src":"2598:6:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":823,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2666:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307833","id":824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2670:3:11","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"0x3"},"src":"2666:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2676:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2666:11:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":837,"nodeType":"Block","src":"2716:32:11","statements":[{"expression":{"id":835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":833,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2730:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2736:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2730:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":836,"nodeType":"ExpressionStatement","src":"2730:7:11"}]},"id":838,"nodeType":"IfStatement","src":"2662:86:11","trueBody":{"id":832,"nodeType":"Block","src":"2679:31:11","statements":[{"expression":{"id":830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":828,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"2693:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"32","id":829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2698:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2693:6:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":831,"nodeType":"ExpressionStatement","src":"2693:6:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":839,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2761:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307831","id":840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2765:3:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x1"},"src":"2761:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2771:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2761:11:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":848,"nodeType":"IfStatement","src":"2757:23:11","trueBody":{"expression":{"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":844,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"2774:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2779:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2774:6:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":847,"nodeType":"ExpressionStatement","src":"2774:6:11"}}]},"documentation":{"id":690,"nodeType":"StructuredDocumentation","src":"1408:480:11","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 @dev The function satisfies the property:\n     (x & 2**leastSignificantBit(x)) != 0 and (x & (2**(leastSignificantBit(x)) - 1)) == 0)\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":850,"implemented":true,"kind":"function","modifiers":[],"name":"leastSignificantBit","nodeType":"FunctionDefinition","parameters":{"id":693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":692,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":850,"src":"1922:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":691,"name":"uint256","nodeType":"ElementaryTypeName","src":"1922:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1921:11:11"},"returnParameters":{"id":696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":695,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":850,"src":"1956:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":694,"name":"uint8","nodeType":"ElementaryTypeName","src":"1956:5:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1955:9:11"},"scope":851,"src":"1893:894:11","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":852,"src":"187:2602:11"}],"src":"45:2745:11"},"id":11},"@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol","exportedSymbols":{"FixedPoint128":[858]},"id":859,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":853,"literals":["solidity",">=","0.4",".0"],"nodeType":"PragmaDirective","src":"45:24:12"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":854,"nodeType":"StructuredDocumentation","src":"71:140:12","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":858,"linearizedBaseContracts":[858],"name":"FixedPoint128","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":857,"mutability":"constant","name":"Q128","nodeType":"VariableDeclaration","scope":858,"src":"239:68:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":855,"name":"uint256","nodeType":"ElementaryTypeName","src":"239:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313030303030303030303030303030303030303030303030303030303030303030","id":856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"272:35:12","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"value":"0x100000000000000000000000000000000"},"visibility":"internal"}],"scope":859,"src":"211:99:12"}],"src":"45:266:12"},"id":12},"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol","exportedSymbols":{"FixedPoint96":[868]},"id":869,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":860,"literals":["solidity",">=","0.4",".0"],"nodeType":"PragmaDirective","src":"45:24:13"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":861,"nodeType":"StructuredDocumentation","src":"71:174:13","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":868,"linearizedBaseContracts":[868],"name":"FixedPoint96","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":864,"mutability":"constant","name":"RESOLUTION","nodeType":"VariableDeclaration","scope":868,"src":"272:39:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":862,"name":"uint8","nodeType":"ElementaryTypeName","src":"272:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3936","id":863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"309:2:13","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"visibility":"internal"},{"constant":true,"id":867,"mutability":"constant","name":"Q96","nodeType":"VariableDeclaration","scope":868,"src":"317:59:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":865,"name":"uint256","nodeType":"ElementaryTypeName","src":"317:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307831303030303030303030303030303030303030303030303030","id":866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"349:27:13","typeDescriptions":{"typeIdentifier":"t_rational_79228162514264337593543950336_by_1","typeString":"int_const 79228162514264337593543950336"},"value":"0x1000000000000000000000000"},"visibility":"internal"}],"scope":869,"src":"245:134:13"}],"src":"45:335:13"},"id":13},"@airdao/astra-cl-core/contracts/libraries/FullMath.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/FullMath.sol","exportedSymbols":{"FullMath":[1041]},"id":1042,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":870,"literals":["solidity",">=","0.4",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"32:31:14"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":871,"nodeType":"StructuredDocumentation","src":"65:297:14","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":1041,"linearizedBaseContracts":[1041],"name":"FullMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":996,"nodeType":"Block","src":"847:3648:14","statements":[{"assignments":[884],"declarations":[{"constant":false,"id":884,"mutability":"mutable","name":"prod0","nodeType":"VariableDeclaration","scope":996,"src":"1160:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":883,"name":"uint256","nodeType":"ElementaryTypeName","src":"1160:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":885,"nodeType":"VariableDeclarationStatement","src":"1160:13:14"},{"assignments":[887],"declarations":[{"constant":false,"id":887,"mutability":"mutable","name":"prod1","nodeType":"VariableDeclaration","scope":996,"src":"1228:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":886,"name":"uint256","nodeType":"ElementaryTypeName","src":"1228:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":888,"nodeType":"VariableDeclarationStatement","src":"1228:13:14"},{"AST":{"nodeType":"YulBlock","src":"1304:141:14","statements":[{"nodeType":"YulVariableDeclaration","src":"1318:30:14","value":{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"1335:1:14"},{"name":"b","nodeType":"YulIdentifier","src":"1338:1:14"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1345:1:14","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1341:3:14"},"nodeType":"YulFunctionCall","src":"1341:6:14"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"1328:6:14"},"nodeType":"YulFunctionCall","src":"1328:20:14"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"1322:2:14","type":""}]},{"nodeType":"YulAssignment","src":"1361:18:14","value":{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"1374:1:14"},{"name":"b","nodeType":"YulIdentifier","src":"1377:1:14"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"1370:3:14"},"nodeType":"YulFunctionCall","src":"1370:9:14"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"1361:5:14"}]},{"nodeType":"YulAssignment","src":"1392:43:14","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"1409:2:14"},{"name":"prod0","nodeType":"YulIdentifier","src":"1413:5:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1405:3:14"},"nodeType":"YulFunctionCall","src":"1405:14:14"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"1424:2:14"},{"name":"prod0","nodeType":"YulIdentifier","src":"1428:5:14"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1421:2:14"},"nodeType":"YulFunctionCall","src":"1421:13:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1401:3:14"},"nodeType":"YulFunctionCall","src":"1401:34:14"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"1392:5:14"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":874,"isOffset":false,"isSlot":false,"src":"1335:1:14","valueSize":1},{"declaration":874,"isOffset":false,"isSlot":false,"src":"1374:1:14","valueSize":1},{"declaration":876,"isOffset":false,"isSlot":false,"src":"1338:1:14","valueSize":1},{"declaration":876,"isOffset":false,"isSlot":false,"src":"1377:1:14","valueSize":1},{"declaration":884,"isOffset":false,"isSlot":false,"src":"1361:5:14","valueSize":1},{"declaration":884,"isOffset":false,"isSlot":false,"src":"1413:5:14","valueSize":1},{"declaration":884,"isOffset":false,"isSlot":false,"src":"1428:5:14","valueSize":1},{"declaration":887,"isOffset":false,"isSlot":false,"src":"1392:5:14","valueSize":1}],"id":889,"nodeType":"InlineAssembly","src":"1295:150:14"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":890,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":887,"src":"1517:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1526:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1517:10:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"1513:179:14","trueBody":{"id":902,"nodeType":"Block","src":"1529:163:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":894,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":878,"src":"1551:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1565:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1551:15:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":893,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1543:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1543:24:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":898,"nodeType":"ExpressionStatement","src":"1543:24:14"},{"AST":{"nodeType":"YulBlock","src":"1590:65:14","statements":[{"nodeType":"YulAssignment","src":"1608:33:14","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"1622:5:14"},{"name":"denominator","nodeType":"YulIdentifier","src":"1629:11:14"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"1618:3:14"},"nodeType":"YulFunctionCall","src":"1618:23:14"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"1608:6:14"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":878,"isOffset":false,"isSlot":false,"src":"1629:11:14","valueSize":1},{"declaration":884,"isOffset":false,"isSlot":false,"src":"1622:5:14","valueSize":1},{"declaration":881,"isOffset":false,"isSlot":false,"src":"1608:6:14","valueSize":1}],"id":899,"nodeType":"InlineAssembly","src":"1581:74:14"},{"expression":{"id":900,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":881,"src":"1675:6:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":882,"id":901,"nodeType":"Return","src":"1668:13:14"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":905,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":878,"src":"1805:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":906,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":887,"src":"1819:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1805:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":904,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1797:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1797:28:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":909,"nodeType":"ExpressionStatement","src":"1797:28:14"},{"assignments":[911],"declarations":[{"constant":false,"id":911,"mutability":"mutable","name":"remainder","nodeType":"VariableDeclaration","scope":996,"src":"2102:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":910,"name":"uint256","nodeType":"ElementaryTypeName","src":"2102:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":912,"nodeType":"VariableDeclarationStatement","src":"2102:17:14"},{"AST":{"nodeType":"YulBlock","src":"2138:62:14","statements":[{"nodeType":"YulAssignment","src":"2152:38:14","value":{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2172:1:14"},{"name":"b","nodeType":"YulIdentifier","src":"2175:1:14"},{"name":"denominator","nodeType":"YulIdentifier","src":"2178:11:14"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2165:6:14"},"nodeType":"YulFunctionCall","src":"2165:25:14"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"2152:9:14"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":874,"isOffset":false,"isSlot":false,"src":"2172:1:14","valueSize":1},{"declaration":876,"isOffset":false,"isSlot":false,"src":"2175:1:14","valueSize":1},{"declaration":878,"isOffset":false,"isSlot":false,"src":"2178:11:14","valueSize":1},{"declaration":911,"isOffset":false,"isSlot":false,"src":"2152:9:14","valueSize":1}],"id":913,"nodeType":"InlineAssembly","src":"2129:71:14"},{"AST":{"nodeType":"YulBlock","src":"2273:108:14","statements":[{"nodeType":"YulAssignment","src":"2287:41:14","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"2300:5:14"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"2310:9:14"},{"name":"prod0","nodeType":"YulIdentifier","src":"2321:5:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2307:2:14"},"nodeType":"YulFunctionCall","src":"2307:20:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2296:3:14"},"nodeType":"YulFunctionCall","src":"2296:32:14"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2287:5:14"}]},{"nodeType":"YulAssignment","src":"2341:30:14","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"2354:5:14"},{"name":"remainder","nodeType":"YulIdentifier","src":"2361:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2350:3:14"},"nodeType":"YulFunctionCall","src":"2350:21:14"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2341:5:14"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":884,"isOffset":false,"isSlot":false,"src":"2321:5:14","valueSize":1},{"declaration":884,"isOffset":false,"isSlot":false,"src":"2341:5:14","valueSize":1},{"declaration":884,"isOffset":false,"isSlot":false,"src":"2354:5:14","valueSize":1},{"declaration":887,"isOffset":false,"isSlot":false,"src":"2287:5:14","valueSize":1},{"declaration":887,"isOffset":false,"isSlot":false,"src":"2300:5:14","valueSize":1},{"declaration":911,"isOffset":false,"isSlot":false,"src":"2310:9:14","valueSize":1},{"declaration":911,"isOffset":false,"isSlot":false,"src":"2361:9:14","valueSize":1}],"id":914,"nodeType":"InlineAssembly","src":"2264:117:14"},{"assignments":[916],"declarations":[{"constant":false,"id":916,"mutability":"mutable","name":"twos","nodeType":"VariableDeclaration","scope":996,"src":"2530:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":915,"name":"uint256","nodeType":"ElementaryTypeName","src":"2530:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":921,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2545:12:14","subExpression":{"id":917,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":878,"src":"2546:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":919,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":878,"src":"2560:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2545:26:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2530:41:14"},{"AST":{"nodeType":"YulBlock","src":"2636:61:14","statements":[{"nodeType":"YulAssignment","src":"2650:37:14","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"2669:11:14"},{"name":"twos","nodeType":"YulIdentifier","src":"2682:4:14"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2665:3:14"},"nodeType":"YulFunctionCall","src":"2665:22:14"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"2650:11:14"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":878,"isOffset":false,"isSlot":false,"src":"2650:11:14","valueSize":1},{"declaration":878,"isOffset":false,"isSlot":false,"src":"2669:11:14","valueSize":1},{"declaration":916,"isOffset":false,"isSlot":false,"src":"2682:4:14","valueSize":1}],"id":922,"nodeType":"InlineAssembly","src":"2627:70:14"},{"AST":{"nodeType":"YulBlock","src":"2770:49:14","statements":[{"nodeType":"YulAssignment","src":"2784:25:14","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"2797:5:14"},{"name":"twos","nodeType":"YulIdentifier","src":"2804:4:14"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2793:3:14"},"nodeType":"YulFunctionCall","src":"2793:16:14"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2784:5:14"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":884,"isOffset":false,"isSlot":false,"src":"2784:5:14","valueSize":1},{"declaration":884,"isOffset":false,"isSlot":false,"src":"2797:5:14","valueSize":1},{"declaration":916,"isOffset":false,"isSlot":false,"src":"2804:4:14","valueSize":1}],"id":923,"nodeType":"InlineAssembly","src":"2761:58:14"},{"AST":{"nodeType":"YulBlock","src":"3007:63:14","statements":[{"nodeType":"YulAssignment","src":"3021:39:14","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3041:1:14","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"3044:4:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3037:3:14"},"nodeType":"YulFunctionCall","src":"3037:12:14"},{"name":"twos","nodeType":"YulIdentifier","src":"3051:4:14"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3033:3:14"},"nodeType":"YulFunctionCall","src":"3033:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"3058:1:14","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3029:3:14"},"nodeType":"YulFunctionCall","src":"3029:31:14"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"3021:4:14"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":916,"isOffset":false,"isSlot":false,"src":"3021:4:14","valueSize":1},{"declaration":916,"isOffset":false,"isSlot":false,"src":"3044:4:14","valueSize":1},{"declaration":916,"isOffset":false,"isSlot":false,"src":"3051:4:14","valueSize":1}],"id":924,"nodeType":"InlineAssembly","src":"2998:72:14"},{"expression":{"id":929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":925,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":884,"src":"3079:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":926,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":887,"src":"3088:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":927,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":916,"src":"3096:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3088:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3079:21:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":930,"nodeType":"ExpressionStatement","src":"3079:21:14"},{"assignments":[932],"declarations":[{"constant":false,"id":932,"mutability":"mutable","name":"inv","nodeType":"VariableDeclaration","scope":996,"src":"3434:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":931,"name":"uint256","nodeType":"ElementaryTypeName","src":"3434:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":939,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3449:1:14","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":934,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":878,"src":"3453:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3449:15:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":936,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3448:17:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3468:1:14","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"3448:21:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3434:35:14"},{"expression":{"id":946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":940,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"3684:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3691:1:14","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":942,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":878,"src":"3695:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":943,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"3709:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3695:17:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3691:21:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3684:28:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":947,"nodeType":"ExpressionStatement","src":"3684:28:14"},{"expression":{"id":954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":948,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"3742:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3749:1:14","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":950,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":878,"src":"3753:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":951,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"3767:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3753:17:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3749:21:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3742:28:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":955,"nodeType":"ExpressionStatement","src":"3742:28:14"},{"expression":{"id":962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":956,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"3801:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3808:1:14","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":958,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":878,"src":"3812:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":959,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"3826:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3812:17:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3808:21:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3801:28:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":963,"nodeType":"ExpressionStatement","src":"3801:28:14"},{"expression":{"id":970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":964,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"3860:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3867:1:14","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":878,"src":"3871:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":967,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"3885:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3871:17:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3867:21:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3860:28:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":971,"nodeType":"ExpressionStatement","src":"3860:28:14"},{"expression":{"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":972,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"3919:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3926:1:14","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":974,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":878,"src":"3930:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":975,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"3944:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3930:17:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3926:21:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3919:28:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":979,"nodeType":"ExpressionStatement","src":"3919:28:14"},{"expression":{"id":986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":980,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"3979:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3986:1:14","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":982,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":878,"src":"3990:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":983,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"4004:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3990:17:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3986:21:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3979:28:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":987,"nodeType":"ExpressionStatement","src":"3979:28:14"},{"expression":{"id":992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":988,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":881,"src":"4445:6:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":989,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":884,"src":"4454:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":990,"name":"inv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"4462:3:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4454:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4445:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":993,"nodeType":"ExpressionStatement","src":"4445:20:14"},{"expression":{"id":994,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":881,"src":"4482:6:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":882,"id":995,"nodeType":"Return","src":"4475:13:14"}]},"documentation":{"id":872,"nodeType":"StructuredDocumentation","src":"385:359:14","text":"@notice Calculates floor(a×b÷denominator) 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":997,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nodeType":"FunctionDefinition","parameters":{"id":879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":874,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":997,"src":"765:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":873,"name":"uint256","nodeType":"ElementaryTypeName","src":"765:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":876,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":997,"src":"776:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":875,"name":"uint256","nodeType":"ElementaryTypeName","src":"776:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":878,"mutability":"mutable","name":"denominator","nodeType":"VariableDeclaration","scope":997,"src":"787:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":877,"name":"uint256","nodeType":"ElementaryTypeName","src":"787:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"764:43:14"},"returnParameters":{"id":882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":881,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":997,"src":"831:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":880,"name":"uint256","nodeType":"ElementaryTypeName","src":"831:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"830:16:14"},"scope":1041,"src":"749:3746:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1039,"nodeType":"Block","src":"4885:177:14","statements":[{"expression":{"id":1015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1009,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1007,"src":"4895:6:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1011,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1000,"src":"4911:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1012,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1002,"src":"4914:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1013,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1004,"src":"4917:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1010,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":997,"src":"4904:6:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4904:25:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4895:34:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1016,"nodeType":"ExpressionStatement","src":"4895:34:14"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1018,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1000,"src":"4950:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1019,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1002,"src":"4953:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1020,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1004,"src":"4956:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1017,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"4943:6:14","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4943:25:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4971:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4943:29:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1038,"nodeType":"IfStatement","src":"4939:117:14","trueBody":{"id":1037,"nodeType":"Block","src":"4974:82:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1025,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1007,"src":"4996:6:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":1028,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5010:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1027,"name":"uint256","nodeType":"ElementaryTypeName","src":"5010:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":1026,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5005:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5005:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":1030,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"5005:17:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4996:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1024,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4988:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4988:35:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1033,"nodeType":"ExpressionStatement","src":"4988:35:14"},{"expression":{"id":1035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5037:8:14","subExpression":{"id":1034,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1007,"src":"5037:6:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1036,"nodeType":"ExpressionStatement","src":"5037:8:14"}]}}]},"documentation":{"id":998,"nodeType":"StructuredDocumentation","src":"4501:271:14","text":"@notice Calculates ceil(a×b÷denominator) 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":1040,"implemented":true,"kind":"function","modifiers":[],"name":"mulDivRoundingUp","nodeType":"FunctionDefinition","parameters":{"id":1005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1000,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":1040,"src":"4803:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":999,"name":"uint256","nodeType":"ElementaryTypeName","src":"4803:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1002,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":1040,"src":"4814:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1001,"name":"uint256","nodeType":"ElementaryTypeName","src":"4814:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1004,"mutability":"mutable","name":"denominator","nodeType":"VariableDeclaration","scope":1040,"src":"4825:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1003,"name":"uint256","nodeType":"ElementaryTypeName","src":"4825:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4802:43:14"},"returnParameters":{"id":1008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1007,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":1040,"src":"4869:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1006,"name":"uint256","nodeType":"ElementaryTypeName","src":"4869:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4868:16:14"},"scope":1041,"src":"4777:285:14","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1042,"src":"362:4702:14"}],"src":"32:5033:14"},"id":14},"@airdao/astra-cl-core/contracts/libraries/LiquidityMath.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/LiquidityMath.sol","exportedSymbols":{"LiquidityMath":[1093]},"id":1094,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1043,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:15"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":1044,"nodeType":"StructuredDocumentation","src":"71:38:15","text":"@title Math library for liquidity"},"fullyImplemented":true,"id":1093,"linearizedBaseContracts":[1093],"name":"LiquidityMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":1091,"nodeType":"Block","src":"456:163:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int128","typeString":"int128"},"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1054,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1049,"src":"470:1:15","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"474:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"470:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1089,"nodeType":"Block","src":"548:65:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":1082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1052,"src":"571:1:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":1081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1076,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1047,"src":"575:1:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"id":1079,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1049,"src":"587:1:15","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"id":1078,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"579:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":1077,"name":"uint128","nodeType":"ElementaryTypeName","src":"579:7:15","typeDescriptions":{}}},"id":1080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"579:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"575:14:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"571:18:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":1083,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"570:20:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1084,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1047,"src":"594:1:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"570:25:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c41","id":1086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"597:4:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_ce8fc98a1432efc8ba166615239eb1702fbbbd0ddab9a5952502a98483035383","typeString":"literal_string \"LA\""},"value":"LA"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ce8fc98a1432efc8ba166615239eb1702fbbbd0ddab9a5952502a98483035383","typeString":"literal_string \"LA\""}],"id":1074,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"562:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"562:40:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1088,"nodeType":"ExpressionStatement","src":"562:40:15"}]},"id":1090,"nodeType":"IfStatement","src":"466:147:15","trueBody":{"id":1073,"nodeType":"Block","src":"477:65:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":1069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":1066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1052,"src":"500:1:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":1065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1059,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1047,"src":"504:1:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":1063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"516:2:15","subExpression":{"id":1062,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1049,"src":"517:1:15","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"id":1061,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"508:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":1060,"name":"uint128","nodeType":"ElementaryTypeName","src":"508:7:15","typeDescriptions":{}}},"id":1064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"508:11:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"504:15:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"500:19:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":1067,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"499:21:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1068,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1047,"src":"523:1:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"499:25:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c53","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"526:4:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_2be2231ccd52e7fedf30c30a3dfa3d6c9d9d3400159e305398a7b6d437f56985","typeString":"literal_string \"LS\""},"value":"LS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2be2231ccd52e7fedf30c30a3dfa3d6c9d9d3400159e305398a7b6d437f56985","typeString":"literal_string \"LS\""}],"id":1057,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"491:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"491:40:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1072,"nodeType":"ExpressionStatement","src":"491:40:15"}]}}]},"documentation":{"id":1045,"nodeType":"StructuredDocumentation","src":"137:241:15","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":1092,"implemented":true,"kind":"function","modifiers":[],"name":"addDelta","nodeType":"FunctionDefinition","parameters":{"id":1050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1047,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":1092,"src":"401:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1046,"name":"uint128","nodeType":"ElementaryTypeName","src":"401:7:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":1049,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":1092,"src":"412:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":1048,"name":"int128","nodeType":"ElementaryTypeName","src":"412:6:15","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"400:21:15"},"returnParameters":{"id":1053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1052,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":1092,"src":"445:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1051,"name":"uint128","nodeType":"ElementaryTypeName","src":"445:7:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"444:11:15"},"scope":1093,"src":"383:236:15","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1094,"src":"109:512:15"}],"src":"45:577:15"},"id":15},"@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol","exportedSymbols":{"LowGasSafeMath":[1223]},"id":1224,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1095,"literals":["solidity",">=","0.7",".0"],"nodeType":"PragmaDirective","src":"45:24:16"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":1096,"nodeType":"StructuredDocumentation","src":"71:178:16","text":"@title Optimized overflow and underflow safe math operations\n @notice Contains methods for doing math operations that revert on overflow or underflow for minimal gas cost"},"fullyImplemented":true,"id":1223,"linearizedBaseContracts":[1223],"name":"LowGasSafeMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":1117,"nodeType":"Block","src":"504:42:16","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":1111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1107,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1104,"src":"523:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1108,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1099,"src":"527:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1109,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"531:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"527:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"523:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1112,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"522:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1113,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1099,"src":"537:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"522:16:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1106,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"514:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"514:25:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1116,"nodeType":"ExpressionStatement","src":"514:25:16"}]},"documentation":{"id":1097,"nodeType":"StructuredDocumentation","src":"278:152:16","text":"@notice Returns x + y, reverts if sum overflows uint256\n @param x The augend\n @param y The addend\n @return z The sum of x and y"},"id":1118,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":1102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1099,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":1118,"src":"448:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1098,"name":"uint256","nodeType":"ElementaryTypeName","src":"448:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1101,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":1118,"src":"459:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1100,"name":"uint256","nodeType":"ElementaryTypeName","src":"459:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"447:22:16"},"returnParameters":{"id":1105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1104,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":1118,"src":"493:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1103,"name":"uint256","nodeType":"ElementaryTypeName","src":"493:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"492:11:16"},"scope":1223,"src":"435:111:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1139,"nodeType":"Block","src":"779:42:16","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1129,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1126,"src":"798:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1121,"src":"802:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1131,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1123,"src":"806:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"802:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"798:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1134,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"797:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1135,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1121,"src":"812:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"797:16:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1128,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"789:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"789:25:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1138,"nodeType":"ExpressionStatement","src":"789:25:16"}]},"documentation":{"id":1119,"nodeType":"StructuredDocumentation","src":"552:153:16","text":"@notice Returns x - y, reverts if underflows\n @param x The minuend\n @param y The subtrahend\n @return z The difference of x and y"},"id":1140,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":1124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1121,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":1140,"src":"723:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1120,"name":"uint256","nodeType":"ElementaryTypeName","src":"723:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1123,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":1140,"src":"734:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1122,"name":"uint256","nodeType":"ElementaryTypeName","src":"734:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"722:22:16"},"returnParameters":{"id":1127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1126,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":1140,"src":"768:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1125,"name":"uint256","nodeType":"ElementaryTypeName","src":"768:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"767:11:16"},"scope":1223,"src":"710:111:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1167,"nodeType":"Block","src":"1055:56:16","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1151,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1143,"src":"1073:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1078:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1073:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":1158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1154,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1148,"src":"1084:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1155,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1143,"src":"1088:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1156,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1145,"src":"1092:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1088:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1084:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1159,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1083:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1160,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1143,"src":"1097:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1083:15:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1162,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1145,"src":"1102:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1083:20:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1073:30:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1150,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1065:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1065:39:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1166,"nodeType":"ExpressionStatement","src":"1065:39:16"}]},"documentation":{"id":1141,"nodeType":"StructuredDocumentation","src":"827:154:16","text":"@notice Returns x * y, reverts if overflows\n @param x The multiplicand\n @param y The multiplier\n @return z The product of x and y"},"id":1168,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":1146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1143,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":1168,"src":"999:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1142,"name":"uint256","nodeType":"ElementaryTypeName","src":"999:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1145,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":1168,"src":"1010:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1144,"name":"uint256","nodeType":"ElementaryTypeName","src":"1010:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"998:22:16"},"returnParameters":{"id":1149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1148,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":1168,"src":"1044:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1147,"name":"uint256","nodeType":"ElementaryTypeName","src":"1044:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1043:11:16"},"scope":1223,"src":"986:125:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1194,"nodeType":"Block","src":"1342:54:16","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":1183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1179,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1176,"src":"1361:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1180,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1171,"src":"1365:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1181,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1173,"src":"1369:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1365:5:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1361:9:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1184,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1360:11:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1185,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1171,"src":"1375:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1360:16:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1187,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1173,"src":"1381:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":1188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1386:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1381:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1190,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1380:8:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1360:28:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1178,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1352:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1352:37:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1193,"nodeType":"ExpressionStatement","src":"1352:37:16"}]},"documentation":{"id":1169,"nodeType":"StructuredDocumentation","src":"1117:154:16","text":"@notice Returns x + y, reverts if overflows or underflows\n @param x The augend\n @param y The addend\n @return z The sum of x and y"},"id":1195,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":1174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1171,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":1195,"src":"1289:8:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1170,"name":"int256","nodeType":"ElementaryTypeName","src":"1289:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1173,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":1195,"src":"1299:8:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1172,"name":"int256","nodeType":"ElementaryTypeName","src":"1299:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1288:20:16"},"returnParameters":{"id":1177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1176,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":1195,"src":"1332:8:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1175,"name":"int256","nodeType":"ElementaryTypeName","src":"1332:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1331:10:16"},"scope":1223,"src":"1276:120:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1221,"nodeType":"Block","src":"1639:54:16","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":1210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1206,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1203,"src":"1658:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1207,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1198,"src":"1662:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1208,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1200,"src":"1666:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1662:5:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1658:9:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1211,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1657:11:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1212,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1198,"src":"1672:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1657:16:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1214,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1200,"src":"1678:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1683:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1678:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1217,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1677:8:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1657:28:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1205,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1649:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1649:37:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1220,"nodeType":"ExpressionStatement","src":"1649:37:16"}]},"documentation":{"id":1196,"nodeType":"StructuredDocumentation","src":"1402:166:16","text":"@notice Returns x - y, reverts if overflows or underflows\n @param x The minuend\n @param y The subtrahend\n @return z The difference of x and y"},"id":1222,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":1201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1198,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":1222,"src":"1586:8:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1197,"name":"int256","nodeType":"ElementaryTypeName","src":"1586:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1200,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":1222,"src":"1596:8:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1199,"name":"int256","nodeType":"ElementaryTypeName","src":"1596:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1585:20:16"},"returnParameters":{"id":1204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1203,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":1222,"src":"1629:8:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1202,"name":"int256","nodeType":"ElementaryTypeName","src":"1629:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1628:10:16"},"scope":1223,"src":"1573:120:16","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1224,"src":"249:1446:16"}],"src":"45:1651:16"},"id":16},"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol","exportedSymbols":{"SafeCast":[1293]},"id":1294,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1225,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:17"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":1226,"nodeType":"StructuredDocumentation","src":"71:94:17","text":"@title Safe casting methods\n @notice Contains methods for safely casting between types"},"fullyImplemented":true,"id":1293,"linearizedBaseContracts":[1293],"name":"SafeCast","nodeType":"ContractDefinition","nodes":[{"body":{"id":1246,"nodeType":"Block","src":"421:47:17","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":1240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1235,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1232,"src":"440:1:17","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1238,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1229,"src":"452:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1237,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"444:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1236,"name":"uint160","nodeType":"ElementaryTypeName","src":"444:7:17","typeDescriptions":{}}},"id":1239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"444:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"440:14:17","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":1241,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"439:16:17","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1242,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1229,"src":"459:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"439:21:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1234,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"431:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"431:30:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1245,"nodeType":"ExpressionStatement","src":"431:30:17"}]},"documentation":{"id":1227,"nodeType":"StructuredDocumentation","src":"188:164:17","text":"@notice Cast a uint256 to a uint160, revert on overflow\n @param y The uint256 to be downcasted\n @return z The downcasted integer, now type uint160"},"id":1247,"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nodeType":"FunctionDefinition","parameters":{"id":1230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1229,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":1247,"src":"376:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1228,"name":"uint256","nodeType":"ElementaryTypeName","src":"376:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"375:11:17"},"returnParameters":{"id":1233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1232,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":1247,"src":"410:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":1231,"name":"uint160","nodeType":"ElementaryTypeName","src":"410:7:17","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"409:11:17"},"scope":1293,"src":"357:111:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1267,"nodeType":"Block","src":"713:46:17","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1256,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1253,"src":"732:1:17","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1259,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1250,"src":"743:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"736:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":1257,"name":"int128","nodeType":"ElementaryTypeName","src":"736:6:17","typeDescriptions":{}}},"id":1260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"736:9:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"732:13:17","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"id":1262,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"731:15:17","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1263,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1250,"src":"750:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"731:20:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1255,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"723:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"723:29:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1266,"nodeType":"ExpressionStatement","src":"723:29:17"}]},"documentation":{"id":1248,"nodeType":"StructuredDocumentation","src":"474:173:17","text":"@notice Cast a int256 to a int128, revert on overflow or underflow\n @param y The int256 to be downcasted\n @return z The downcasted integer, now type int128"},"id":1268,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nodeType":"FunctionDefinition","parameters":{"id":1251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1250,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":1268,"src":"670:8:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1249,"name":"int256","nodeType":"ElementaryTypeName","src":"670:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"669:10:17"},"returnParameters":{"id":1254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1253,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":1268,"src":"703:8:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":1252,"name":"int128","nodeType":"ElementaryTypeName","src":"703:6:17","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"702:10:17"},"scope":1293,"src":"652:107:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1291,"nodeType":"Block","src":"986:61:17","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1277,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1271,"src":"1004:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"},"id":1280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1008:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"323535","id":1279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1013:3:17","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"1008:8:17","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"}},"src":"1004:12:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1276,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"996:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"996:21:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1283,"nodeType":"ExpressionStatement","src":"996:21:17"},{"expression":{"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1284,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1274,"src":"1027:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1287,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1271,"src":"1038:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1286,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1031:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":1285,"name":"int256","nodeType":"ElementaryTypeName","src":"1031:6:17","typeDescriptions":{}}},"id":1288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1031:9:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1027:13:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1290,"nodeType":"ExpressionStatement","src":"1027:13:17"}]},"documentation":{"id":1269,"nodeType":"StructuredDocumentation","src":"765:154:17","text":"@notice Cast a uint256 to a int256, revert on overflow\n @param y The uint256 to be casted\n @return z The casted integer, now type int256"},"id":1292,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nodeType":"FunctionDefinition","parameters":{"id":1272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1271,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":1292,"src":"942:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1270,"name":"uint256","nodeType":"ElementaryTypeName","src":"942:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"941:11:17"},"returnParameters":{"id":1275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1274,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":1292,"src":"976:8:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1273,"name":"int256","nodeType":"ElementaryTypeName","src":"976:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"975:10:17"},"scope":1293,"src":"924:123:17","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1294,"src":"165:884:17"}],"src":"45:1005:17"},"id":17},"@airdao/astra-cl-core/contracts/libraries/Tick.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/Tick.sol","exportedSymbols":{"LiquidityMath":[1093],"LowGasSafeMath":[1223],"SafeCast":[1293],"Tick":[1745],"TickMath":[2536]},"id":1746,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":1295,"literals":["solidity",">=","0.5",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"37:31:18"},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol","file":"./LowGasSafeMath.sol","id":1296,"nodeType":"ImportDirective","scope":1746,"sourceUnit":1224,"src":"70:30:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol","file":"./SafeCast.sol","id":1297,"nodeType":"ImportDirective","scope":1746,"sourceUnit":1294,"src":"101:24:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/TickMath.sol","file":"./TickMath.sol","id":1298,"nodeType":"ImportDirective","scope":1746,"sourceUnit":2537,"src":"127:24:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/LiquidityMath.sol","file":"./LiquidityMath.sol","id":1299,"nodeType":"ImportDirective","scope":1746,"sourceUnit":1094,"src":"152:29:18","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":1300,"nodeType":"StructuredDocumentation","src":"183:101:18","text":"@title Tick\n @notice Contains functions for managing tick processes and relevant calculations"},"fullyImplemented":true,"id":1745,"linearizedBaseContracts":[1745],"name":"Tick","nodeType":"ContractDefinition","nodes":[{"id":1303,"libraryName":{"id":1301,"name":"LowGasSafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":1223,"src":"309:14:18","typeDescriptions":{"typeIdentifier":"t_contract$_LowGasSafeMath_$1223","typeString":"library LowGasSafeMath"}},"nodeType":"UsingForDirective","src":"303:32:18","typeName":{"id":1302,"name":"int256","nodeType":"ElementaryTypeName","src":"328:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}},{"id":1306,"libraryName":{"id":1304,"name":"SafeCast","nodeType":"UserDefinedTypeName","referencedDeclaration":1293,"src":"346:8:18","typeDescriptions":{"typeIdentifier":"t_contract$_SafeCast_$1293","typeString":"library SafeCast"}},"nodeType":"UsingForDirective","src":"340:26:18","typeName":{"id":1305,"name":"int256","nodeType":"ElementaryTypeName","src":"359:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}},{"canonicalName":"Tick.Info","id":1323,"members":[{"constant":false,"id":1308,"mutability":"mutable","name":"liquidityGross","nodeType":"VariableDeclaration","scope":1323,"src":"516:22:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1307,"name":"uint128","nodeType":"ElementaryTypeName","src":"516:7:18","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":1310,"mutability":"mutable","name":"liquidityNet","nodeType":"VariableDeclaration","scope":1323,"src":"659:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":1309,"name":"int128","nodeType":"ElementaryTypeName","src":"659:6:18","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":1312,"mutability":"mutable","name":"feeGrowthOutside0X128","nodeType":"VariableDeclaration","scope":1323,"src":"901:29:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1311,"name":"uint256","nodeType":"ElementaryTypeName","src":"901:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1314,"mutability":"mutable","name":"feeGrowthOutside1X128","nodeType":"VariableDeclaration","scope":1323,"src":"940:29:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1313,"name":"uint256","nodeType":"ElementaryTypeName","src":"940:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1316,"mutability":"mutable","name":"tickCumulativeOutside","nodeType":"VariableDeclaration","scope":1323,"src":"1046:27:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":1315,"name":"int56","nodeType":"ElementaryTypeName","src":"1046:5:18","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":1318,"mutability":"mutable","name":"secondsPerLiquidityOutsideX128","nodeType":"VariableDeclaration","scope":1323,"src":"1297:38:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":1317,"name":"uint160","nodeType":"ElementaryTypeName","src":"1297:7:18","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":1320,"mutability":"mutable","name":"secondsOutside","nodeType":"VariableDeclaration","scope":1323,"src":"1540:21:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1319,"name":"uint32","nodeType":"ElementaryTypeName","src":"1540:6:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1322,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":1323,"src":"1786:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1321,"name":"bool","nodeType":"ElementaryTypeName","src":"1786:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"Info","nodeType":"StructDefinition","scope":1745,"src":"428:1381:18","visibility":"public"},{"body":{"id":1373,"nodeType":"Block","src":"2295:271:18","statements":[{"assignments":[1332],"declarations":[{"constant":false,"id":1332,"mutability":"mutable","name":"minTick","nodeType":"VariableDeclaration","scope":1373,"src":"2305:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1331,"name":"int24","nodeType":"ElementaryTypeName","src":"2305:5:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":1340,"initialValue":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1333,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"2322:8:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$2536_$","typeString":"type(library TickMath)"}},"id":1334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_TICK","nodeType":"MemberAccess","referencedDeclaration":2009,"src":"2322:17:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1335,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"2342:11:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2322:31:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":1337,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2321:33:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1338,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"2357:11:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2321:47:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"2305:63:18"},{"assignments":[1342],"declarations":[{"constant":false,"id":1342,"mutability":"mutable","name":"maxTick","nodeType":"VariableDeclaration","scope":1373,"src":"2378:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1341,"name":"int24","nodeType":"ElementaryTypeName","src":"2378:5:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":1350,"initialValue":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1343,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"2395:8:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$2536_$","typeString":"type(library TickMath)"}},"id":1344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_TICK","nodeType":"MemberAccess","referencedDeclaration":2014,"src":"2395:17:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1345,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"2415:11:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2395:31:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":1347,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2394:33:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1348,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"2430:11:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2394:47:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"2378:63:18"},{"assignments":[1352],"declarations":[{"constant":false,"id":1352,"mutability":"mutable","name":"numTicks","nodeType":"VariableDeclaration","scope":1373,"src":"2451:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":1351,"name":"uint24","nodeType":"ElementaryTypeName","src":"2451:6:18","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":1364,"initialValue":{"commonType":{"typeIdentifier":"t_uint24","typeString":"uint24"},"id":1363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1355,"name":"maxTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1342,"src":"2477:7:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1356,"name":"minTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1332,"src":"2487:7:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2477:17:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":1358,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2476:19:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1359,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"2498:11:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2476:33:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":1354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2469:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":1353,"name":"uint24","nodeType":"ElementaryTypeName","src":"2469:6:18","typeDescriptions":{}}},"id":1361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2469:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2513:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2469:45:18","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"VariableDeclarationStatement","src":"2451:63:18"},{"expression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":1371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2536:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":1366,"name":"uint128","nodeType":"ElementaryTypeName","src":"2536:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":1365,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2531:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2531:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":1369,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"2531:17:18","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1370,"name":"numTicks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1352,"src":"2551:8:18","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"2531:28:18","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":1330,"id":1372,"nodeType":"Return","src":"2524:35:18"}]},"documentation":{"id":1324,"nodeType":"StructuredDocumentation","src":"1815:382:18","text":"@notice Derives max liquidity per tick from given tick spacing\n @dev Executed within the pool constructor\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 The max liquidity per tick"},"id":1374,"implemented":true,"kind":"function","modifiers":[],"name":"tickSpacingToMaxLiquidityPerTick","nodeType":"FunctionDefinition","parameters":{"id":1327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1326,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":1374,"src":"2244:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1325,"name":"int24","nodeType":"ElementaryTypeName","src":"2244:5:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2243:19:18"},"returnParameters":{"id":1330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1329,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1374,"src":"2286:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1328,"name":"uint128","nodeType":"ElementaryTypeName","src":"2286:7:18","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2285:9:18"},"scope":1745,"src":"2202:364:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1496,"nodeType":"Block","src":"3662:1249:18","statements":[{"assignments":[1397],"declarations":[{"constant":false,"id":1397,"mutability":"mutable","name":"lower","nodeType":"VariableDeclaration","scope":1496,"src":"3672:18:18","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info"},"typeName":{"id":1396,"name":"Info","nodeType":"UserDefinedTypeName","referencedDeclaration":1323,"src":"3672:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info"}},"visibility":"internal"}],"id":1401,"initialValue":{"baseExpression":{"id":1398,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1379,"src":"3693:4:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$1323_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":1400,"indexExpression":{"id":1399,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1381,"src":"3698:9:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3693:15:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage","typeString":"struct Tick.Info storage ref"}},"nodeType":"VariableDeclarationStatement","src":"3672:36:18"},{"assignments":[1403],"declarations":[{"constant":false,"id":1403,"mutability":"mutable","name":"upper","nodeType":"VariableDeclaration","scope":1496,"src":"3718:18:18","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info"},"typeName":{"id":1402,"name":"Info","nodeType":"UserDefinedTypeName","referencedDeclaration":1323,"src":"3718:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info"}},"visibility":"internal"}],"id":1407,"initialValue":{"baseExpression":{"id":1404,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1379,"src":"3739:4:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$1323_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":1406,"indexExpression":{"id":1405,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1383,"src":"3744:9:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3739:15:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage","typeString":"struct Tick.Info storage ref"}},"nodeType":"VariableDeclarationStatement","src":"3718:36:18"},{"assignments":[1409],"declarations":[{"constant":false,"id":1409,"mutability":"mutable","name":"feeGrowthBelow0X128","nodeType":"VariableDeclaration","scope":1496,"src":"3803:27:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1408,"name":"uint256","nodeType":"ElementaryTypeName","src":"3803:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1410,"nodeType":"VariableDeclarationStatement","src":"3803:27:18"},{"assignments":[1412],"declarations":[{"constant":false,"id":1412,"mutability":"mutable","name":"feeGrowthBelow1X128","nodeType":"VariableDeclaration","scope":1496,"src":"3840:27:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1411,"name":"uint256","nodeType":"ElementaryTypeName","src":"3840:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1413,"nodeType":"VariableDeclarationStatement","src":"3840:27:18"},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1414,"name":"tickCurrent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"3881:11:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1415,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1381,"src":"3896:9:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3881:24:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1442,"nodeType":"Block","src":"4050:183:18","statements":[{"expression":{"id":1433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1428,"name":"feeGrowthBelow0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1409,"src":"4064:19:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1429,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1387,"src":"4086:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":1430,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1397,"src":"4109:5:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1431,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":1312,"src":"4109:27:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4086:50:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4064:72:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1434,"nodeType":"ExpressionStatement","src":"4064:72:18"},{"expression":{"id":1440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1435,"name":"feeGrowthBelow1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1412,"src":"4150:19:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1436,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1389,"src":"4172:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":1437,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1397,"src":"4195:5:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1438,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":1314,"src":"4195:27:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4172:50:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4150:72:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1441,"nodeType":"ExpressionStatement","src":"4150:72:18"}]},"id":1443,"nodeType":"IfStatement","src":"3877:356:18","trueBody":{"id":1427,"nodeType":"Block","src":"3907:137:18","statements":[{"expression":{"id":1420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1417,"name":"feeGrowthBelow0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1409,"src":"3921:19:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":1418,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1397,"src":"3943:5:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1419,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":1312,"src":"3943:27:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3921:49:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1421,"nodeType":"ExpressionStatement","src":"3921:49:18"},{"expression":{"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1422,"name":"feeGrowthBelow1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1412,"src":"3984:19:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":1423,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1397,"src":"4006:5:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1424,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":1314,"src":"4006:27:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3984:49:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1426,"nodeType":"ExpressionStatement","src":"3984:49:18"}]}},{"assignments":[1445],"declarations":[{"constant":false,"id":1445,"mutability":"mutable","name":"feeGrowthAbove0X128","nodeType":"VariableDeclaration","scope":1496,"src":"4281:27:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1444,"name":"uint256","nodeType":"ElementaryTypeName","src":"4281:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"nodeType":"VariableDeclarationStatement","src":"4281:27:18"},{"assignments":[1448],"declarations":[{"constant":false,"id":1448,"mutability":"mutable","name":"feeGrowthAbove1X128","nodeType":"VariableDeclaration","scope":1496,"src":"4318:27:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1447,"name":"uint256","nodeType":"ElementaryTypeName","src":"4318:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1449,"nodeType":"VariableDeclarationStatement","src":"4318:27:18"},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1450,"name":"tickCurrent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"4359:11:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1451,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1383,"src":"4373:9:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"4359:23:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1478,"nodeType":"Block","src":"4527:183:18","statements":[{"expression":{"id":1469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1464,"name":"feeGrowthAbove0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"4541:19:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1465,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1387,"src":"4563:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":1466,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"4586:5:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1467,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":1312,"src":"4586:27:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4563:50:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4541:72:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1470,"nodeType":"ExpressionStatement","src":"4541:72:18"},{"expression":{"id":1476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1471,"name":"feeGrowthAbove1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1448,"src":"4627:19:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1472,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1389,"src":"4649:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":1473,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"4672:5:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1474,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":1314,"src":"4672:27:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4649:50:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4627:72:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1477,"nodeType":"ExpressionStatement","src":"4627:72:18"}]},"id":1479,"nodeType":"IfStatement","src":"4355:355:18","trueBody":{"id":1463,"nodeType":"Block","src":"4384:137:18","statements":[{"expression":{"id":1456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1453,"name":"feeGrowthAbove0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"4398:19:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":1454,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"4420:5:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1455,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":1312,"src":"4420:27:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4398:49:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1457,"nodeType":"ExpressionStatement","src":"4398:49:18"},{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1458,"name":"feeGrowthAbove1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1448,"src":"4461:19:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":1459,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"4483:5:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1460,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":1314,"src":"4483:27:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4461:49:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1462,"nodeType":"ExpressionStatement","src":"4461:49:18"}]}},{"expression":{"id":1486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1480,"name":"feeGrowthInside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1392,"src":"4720:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1481,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1387,"src":"4743:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1482,"name":"feeGrowthBelow0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1409,"src":"4766:19:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4743:42:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1484,"name":"feeGrowthAbove0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"4788:19:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4743:64:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4720:87:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1487,"nodeType":"ExpressionStatement","src":"4720:87:18"},{"expression":{"id":1494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1488,"name":"feeGrowthInside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1394,"src":"4817:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1489,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1389,"src":"4840:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1490,"name":"feeGrowthBelow1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1412,"src":"4863:19:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4840:42:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1492,"name":"feeGrowthAbove1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1448,"src":"4885:19:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4840:64:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4817:87:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1495,"nodeType":"ExpressionStatement","src":"4817:87:18"}]},"documentation":{"id":1375,"nodeType":"StructuredDocumentation","src":"2572:765:18","text":"@notice Retrieves fee growth data\n @param self The mapping containing all tick information for initialized ticks\n @param tickLower The lower tick boundary of the position\n @param tickUpper The upper tick boundary of the position\n @param tickCurrent The current tick\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 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":1497,"implemented":true,"kind":"function","modifiers":[],"name":"getFeeGrowthInside","nodeType":"FunctionDefinition","parameters":{"id":1390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1379,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1497,"src":"3379:40:18","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$1323_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"typeName":{"id":1378,"keyType":{"id":1376,"name":"int24","nodeType":"ElementaryTypeName","src":"3387:5:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Mapping","src":"3379:27:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$1323_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"valueType":{"id":1377,"name":"Tick.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":1323,"src":"3396:9:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info"}}},"visibility":"internal"},{"constant":false,"id":1381,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":1497,"src":"3429:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1380,"name":"int24","nodeType":"ElementaryTypeName","src":"3429:5:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1383,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":1497,"src":"3454:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1382,"name":"int24","nodeType":"ElementaryTypeName","src":"3454:5:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1385,"mutability":"mutable","name":"tickCurrent","nodeType":"VariableDeclaration","scope":1497,"src":"3479:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1384,"name":"int24","nodeType":"ElementaryTypeName","src":"3479:5:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1387,"mutability":"mutable","name":"feeGrowthGlobal0X128","nodeType":"VariableDeclaration","scope":1497,"src":"3506:28:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1386,"name":"uint256","nodeType":"ElementaryTypeName","src":"3506:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1389,"mutability":"mutable","name":"feeGrowthGlobal1X128","nodeType":"VariableDeclaration","scope":1497,"src":"3544:28:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1388,"name":"uint256","nodeType":"ElementaryTypeName","src":"3544:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3369:209:18"},"returnParameters":{"id":1395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1392,"mutability":"mutable","name":"feeGrowthInside0X128","nodeType":"VariableDeclaration","scope":1497,"src":"3602:28:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1391,"name":"uint256","nodeType":"ElementaryTypeName","src":"3602:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1394,"mutability":"mutable","name":"feeGrowthInside1X128","nodeType":"VariableDeclaration","scope":1497,"src":"3632:28:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1393,"name":"uint256","nodeType":"ElementaryTypeName","src":"3632:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3601:60:18"},"scope":1745,"src":"3342:1569:18","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1646,"nodeType":"Block","src":"6518:1279:18","statements":[{"assignments":[1530],"declarations":[{"constant":false,"id":1530,"mutability":"mutable","name":"info","nodeType":"VariableDeclaration","scope":1646,"src":"6528:22:18","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info"},"typeName":{"id":1529,"name":"Tick.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":1323,"src":"6528:9:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info"}},"visibility":"internal"}],"id":1534,"initialValue":{"baseExpression":{"id":1531,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1502,"src":"6553:4:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$1323_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":1533,"indexExpression":{"id":1532,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1504,"src":"6558:4:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6553:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage","typeString":"struct Tick.Info storage ref"}},"nodeType":"VariableDeclarationStatement","src":"6528:35:18"},{"assignments":[1536],"declarations":[{"constant":false,"id":1536,"mutability":"mutable","name":"liquidityGrossBefore","nodeType":"VariableDeclaration","scope":1646,"src":"6574:28:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1535,"name":"uint128","nodeType":"ElementaryTypeName","src":"6574:7:18","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":1539,"initialValue":{"expression":{"id":1537,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"6605:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityGross","nodeType":"MemberAccess","referencedDeclaration":1308,"src":"6605:19:18","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"6574:50:18"},{"assignments":[1541],"declarations":[{"constant":false,"id":1541,"mutability":"mutable","name":"liquidityGrossAfter","nodeType":"VariableDeclaration","scope":1646,"src":"6634:27:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1540,"name":"uint128","nodeType":"ElementaryTypeName","src":"6634:7:18","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":1547,"initialValue":{"arguments":[{"id":1544,"name":"liquidityGrossBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1536,"src":"6687:20:18","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":1545,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"6709:14:18","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"id":1542,"name":"LiquidityMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1093,"src":"6664:13:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityMath_$1093_$","typeString":"type(library LiquidityMath)"}},"id":1543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"addDelta","nodeType":"MemberAccess","referencedDeclaration":1092,"src":"6664:22:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint128_$_t_int128_$returns$_t_uint128_$","typeString":"function (uint128,int128) pure returns (uint128)"}},"id":1546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6664:60:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"6634:90:18"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1549,"name":"liquidityGrossAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1541,"src":"6743:19:18","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1550,"name":"maxLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1522,"src":"6766:12:18","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"6743:35:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c4f","id":1552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6780:4:18","typeDescriptions":{"typeIdentifier":"t_stringliteral_df0e8e403ea3fe54c7efb80492fa8f6599886b9c5435c1772b8d6400862c8c48","typeString":"literal_string \"LO\""},"value":"LO"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_df0e8e403ea3fe54c7efb80492fa8f6599886b9c5435c1772b8d6400862c8c48","typeString":"literal_string \"LO\""}],"id":1548,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6735:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6735:50:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1554,"nodeType":"ExpressionStatement","src":"6735:50:18"},{"expression":{"id":1565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1555,"name":"flipped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1525,"src":"6796:7:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":1558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1556,"name":"liquidityGrossAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1541,"src":"6807:19:18","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6830:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6807:24:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1559,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6806:26:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":1562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1560,"name":"liquidityGrossBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1536,"src":"6837:20:18","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6861:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6837:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1563,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6836:27:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6806:57:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6796:67:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1566,"nodeType":"ExpressionStatement","src":"6796:67:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":1569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1567,"name":"liquidityGrossBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1536,"src":"6878:20:18","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6902:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6878:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1612,"nodeType":"IfStatement","src":"6874:572:18","trueBody":{"id":1611,"nodeType":"Block","src":"6905:541:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1570,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1504,"src":"7035:4:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1571,"name":"tickCurrent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1506,"src":"7043:11:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"7035:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1604,"nodeType":"IfStatement","src":"7031:368:18","trueBody":{"id":1603,"nodeType":"Block","src":"7056:343:18","statements":[{"expression":{"id":1577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1573,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"7074:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1575,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":1312,"src":"7074:26:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1576,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"7103:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7074:49:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1578,"nodeType":"ExpressionStatement","src":"7074:49:18"},{"expression":{"id":1583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1579,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"7141:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1581,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":1314,"src":"7141:26:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1582,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1512,"src":"7170:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7141:49:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1584,"nodeType":"ExpressionStatement","src":"7141:49:18"},{"expression":{"id":1589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1585,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"7208:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1587,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"secondsPerLiquidityOutsideX128","nodeType":"MemberAccess","referencedDeclaration":1318,"src":"7208:35:18","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1588,"name":"secondsPerLiquidityCumulativeX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1514,"src":"7246:33:18","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7208:71:18","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":1590,"nodeType":"ExpressionStatement","src":"7208:71:18"},{"expression":{"id":1595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1591,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"7297:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1593,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tickCumulativeOutside","nodeType":"MemberAccess","referencedDeclaration":1316,"src":"7297:26:18","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1594,"name":"tickCumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1516,"src":"7326:14:18","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"7297:43:18","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":1596,"nodeType":"ExpressionStatement","src":"7297:43:18"},{"expression":{"id":1601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1597,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"7358:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1599,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"secondsOutside","nodeType":"MemberAccess","referencedDeclaration":1320,"src":"7358:19:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1600,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1518,"src":"7380:4:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"7358:26:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":1602,"nodeType":"ExpressionStatement","src":"7358:26:18"}]}},{"expression":{"id":1609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1605,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"7412:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1607,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"initialized","nodeType":"MemberAccess","referencedDeclaration":1322,"src":"7412:16:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7431:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7412:23:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1610,"nodeType":"ExpressionStatement","src":"7412:23:18"}]}},{"expression":{"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1613,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"7456:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1615,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"liquidityGross","nodeType":"MemberAccess","referencedDeclaration":1308,"src":"7456:19:18","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1616,"name":"liquidityGrossAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1541,"src":"7478:19:18","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"7456:41:18","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":1618,"nodeType":"ExpressionStatement","src":"7456:41:18"},{"expression":{"id":1644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1619,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"7623:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1621,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"liquidityNet","nodeType":"MemberAccess","referencedDeclaration":1310,"src":"7623:17:18","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":1622,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1520,"src":"7643:5:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1639,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"7764:14:18","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"arguments":[{"expression":{"id":1635,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"7741:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1636,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityNet","nodeType":"MemberAccess","referencedDeclaration":1310,"src":"7741:17:18","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"id":1634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7734:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":1633,"name":"int256","nodeType":"ElementaryTypeName","src":"7734:6:18","typeDescriptions":{}}},"id":1637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7734:25:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":1195,"src":"7734:29:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$","typeString":"function (int256,int256) pure returns (int256)"}},"id":1640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7734:45:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":1268,"src":"7734:54:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int128_$bound_to$_t_int256_$","typeString":"function (int256) pure returns (int128)"}},"id":1642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7734:56:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":1643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7643:147:18","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1629,"name":"liquidityDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"7693:14:18","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"expression":{"arguments":[{"expression":{"id":1625,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"7670:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1626,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityNet","nodeType":"MemberAccess","referencedDeclaration":1310,"src":"7670:17:18","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int128","typeString":"int128"}],"id":1624,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7663:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":1623,"name":"int256","nodeType":"ElementaryTypeName","src":"7663:6:18","typeDescriptions":{}}},"id":1627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7663:25:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":1222,"src":"7663:29:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$","typeString":"function (int256,int256) pure returns (int256)"}},"id":1630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7663:45:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt128","nodeType":"MemberAccess","referencedDeclaration":1268,"src":"7663:54:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int128_$bound_to$_t_int256_$","typeString":"function (int256) pure returns (int128)"}},"id":1632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7663:56:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"7623:167:18","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":1645,"nodeType":"ExpressionStatement","src":"7623:167:18"}]},"documentation":{"id":1498,"nodeType":"StructuredDocumentation","src":"4917:1186:18","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 tickCurrent The current tick\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 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 @param secondsPerLiquidityCumulativeX128 The all-time seconds per max(1, liquidity) of the pool\n @param tickCumulative The tick * time elapsed since the pool was first initialized\n @param time The current block timestamp cast to a uint32\n @param upper true for updating a position's upper tick, or false for updating a position's lower tick\n @param maxLiquidity The maximum liquidity allocation for a single tick\n @return flipped Whether the tick was flipped from initialized to uninitialized, or vice versa"},"id":1647,"implemented":true,"kind":"function","modifiers":[],"name":"update","nodeType":"FunctionDefinition","parameters":{"id":1523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1502,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1647,"src":"6133:40:18","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$1323_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"typeName":{"id":1501,"keyType":{"id":1499,"name":"int24","nodeType":"ElementaryTypeName","src":"6141:5:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Mapping","src":"6133:27:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$1323_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"valueType":{"id":1500,"name":"Tick.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":1323,"src":"6150:9:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info"}}},"visibility":"internal"},{"constant":false,"id":1504,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":1647,"src":"6183:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1503,"name":"int24","nodeType":"ElementaryTypeName","src":"6183:5:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1506,"mutability":"mutable","name":"tickCurrent","nodeType":"VariableDeclaration","scope":1647,"src":"6203:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1505,"name":"int24","nodeType":"ElementaryTypeName","src":"6203:5:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1508,"mutability":"mutable","name":"liquidityDelta","nodeType":"VariableDeclaration","scope":1647,"src":"6230:21:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":1507,"name":"int128","nodeType":"ElementaryTypeName","src":"6230:6:18","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"feeGrowthGlobal0X128","nodeType":"VariableDeclaration","scope":1647,"src":"6261:28:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1509,"name":"uint256","nodeType":"ElementaryTypeName","src":"6261:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1512,"mutability":"mutable","name":"feeGrowthGlobal1X128","nodeType":"VariableDeclaration","scope":1647,"src":"6299:28:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1511,"name":"uint256","nodeType":"ElementaryTypeName","src":"6299:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1514,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128","nodeType":"VariableDeclaration","scope":1647,"src":"6337:41:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":1513,"name":"uint160","nodeType":"ElementaryTypeName","src":"6337:7:18","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":1516,"mutability":"mutable","name":"tickCumulative","nodeType":"VariableDeclaration","scope":1647,"src":"6388:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":1515,"name":"int56","nodeType":"ElementaryTypeName","src":"6388:5:18","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":1518,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":1647,"src":"6418:11:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1517,"name":"uint32","nodeType":"ElementaryTypeName","src":"6418:6:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1520,"mutability":"mutable","name":"upper","nodeType":"VariableDeclaration","scope":1647,"src":"6439:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1519,"name":"bool","nodeType":"ElementaryTypeName","src":"6439:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1522,"mutability":"mutable","name":"maxLiquidity","nodeType":"VariableDeclaration","scope":1647,"src":"6459:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1521,"name":"uint128","nodeType":"ElementaryTypeName","src":"6459:7:18","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6123:362:18"},"returnParameters":{"id":1526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1525,"mutability":"mutable","name":"flipped","nodeType":"VariableDeclaration","scope":1647,"src":"6504:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1524,"name":"bool","nodeType":"ElementaryTypeName","src":"6504:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6503:14:18"},"scope":1745,"src":"6108:1689:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1662,"nodeType":"Block","src":"8062:34:18","statements":[{"expression":{"id":1660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"8072:17:18","subExpression":{"baseExpression":{"id":1657,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"8079:4:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$1323_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":1659,"indexExpression":{"id":1658,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1654,"src":"8084:4:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8079:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage","typeString":"struct Tick.Info storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1661,"nodeType":"ExpressionStatement","src":"8072:17:18"}]},"documentation":{"id":1648,"nodeType":"StructuredDocumentation","src":"7803:176:18","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":1663,"implemented":true,"kind":"function","modifiers":[],"name":"clear","nodeType":"FunctionDefinition","parameters":{"id":1655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1652,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1663,"src":"7999:40:18","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$1323_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"typeName":{"id":1651,"keyType":{"id":1649,"name":"int24","nodeType":"ElementaryTypeName","src":"8007:5:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Mapping","src":"7999:27:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$1323_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"valueType":{"id":1650,"name":"Tick.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":1323,"src":"8016:9:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info"}}},"visibility":"internal"},{"constant":false,"id":1654,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":1663,"src":"8041:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1653,"name":"int24","nodeType":"ElementaryTypeName","src":"8041:5:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"7998:54:18"},"returnParameters":{"id":1656,"nodeType":"ParameterList","parameters":[],"src":"8062:0:18"},"scope":1745,"src":"7984:112:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1743,"nodeType":"Block","src":"9176:529:18","statements":[{"assignments":[1688],"declarations":[{"constant":false,"id":1688,"mutability":"mutable","name":"info","nodeType":"VariableDeclaration","scope":1743,"src":"9186:22:18","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info"},"typeName":{"id":1687,"name":"Tick.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":1323,"src":"9186:9:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info"}},"visibility":"internal"}],"id":1692,"initialValue":{"baseExpression":{"id":1689,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1668,"src":"9211:4:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$1323_storage_$","typeString":"mapping(int24 => struct Tick.Info storage ref)"}},"id":1691,"indexExpression":{"id":1690,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"9216:4:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9211:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage","typeString":"struct Tick.Info storage ref"}},"nodeType":"VariableDeclarationStatement","src":"9186:35:18"},{"expression":{"id":1700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1693,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"9231:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1695,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":1312,"src":"9231:26:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1696,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1672,"src":"9260:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":1697,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"9283:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1698,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthOutside0X128","nodeType":"MemberAccess","referencedDeclaration":1312,"src":"9283:26:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9260:49:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9231:78:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1701,"nodeType":"ExpressionStatement","src":"9231:78:18"},{"expression":{"id":1709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1702,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"9319:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1704,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":1314,"src":"9319:26:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1705,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1674,"src":"9348:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":1706,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"9371:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1707,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthOutside1X128","nodeType":"MemberAccess","referencedDeclaration":1314,"src":"9371:26:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9348:49:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9319:78:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1710,"nodeType":"ExpressionStatement","src":"9319:78:18"},{"expression":{"id":1718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1711,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"9407:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1713,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"secondsPerLiquidityOutsideX128","nodeType":"MemberAccess","referencedDeclaration":1318,"src":"9407:35:18","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":1717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1714,"name":"secondsPerLiquidityCumulativeX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1676,"src":"9445:33:18","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":1715,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"9481:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1716,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsPerLiquidityOutsideX128","nodeType":"MemberAccess","referencedDeclaration":1318,"src":"9481:35:18","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"9445:71:18","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"9407:109:18","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":1719,"nodeType":"ExpressionStatement","src":"9407:109:18"},{"expression":{"id":1727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1720,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"9526:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1722,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tickCumulativeOutside","nodeType":"MemberAccess","referencedDeclaration":1316,"src":"9526:26:18","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":1726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1723,"name":"tickCumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1678,"src":"9555:14:18","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":1724,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"9572:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1725,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickCumulativeOutside","nodeType":"MemberAccess","referencedDeclaration":1316,"src":"9572:26:18","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"9555:43:18","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"9526:72:18","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":1728,"nodeType":"ExpressionStatement","src":"9526:72:18"},{"expression":{"id":1736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1729,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"9608:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1731,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"secondsOutside","nodeType":"MemberAccess","referencedDeclaration":1320,"src":"9608:19:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":1735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1732,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"9630:4:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":1733,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"9637:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1734,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"secondsOutside","nodeType":"MemberAccess","referencedDeclaration":1320,"src":"9637:19:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9630:26:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9608:48:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":1737,"nodeType":"ExpressionStatement","src":"9608:48:18"},{"expression":{"id":1741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1738,"name":"liquidityNet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1683,"src":"9666:12:18","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":1739,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"9681:4:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info storage pointer"}},"id":1740,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidityNet","nodeType":"MemberAccess","referencedDeclaration":1310,"src":"9681:17:18","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"9666:32:18","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":1742,"nodeType":"ExpressionStatement","src":"9666:32:18"}]},"documentation":{"id":1664,"nodeType":"StructuredDocumentation","src":"8102:761:18","text":"@notice Transitions to next tick as needed by price movement\n @param self The mapping containing all tick information for initialized ticks\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 @param secondsPerLiquidityCumulativeX128 The current seconds per liquidity\n @param tickCumulative The tick * time elapsed since the pool was first initialized\n @param time The current block.timestamp\n @return liquidityNet The amount of liquidity added (subtracted) when tick is crossed from left to right (right to left)"},"id":1744,"implemented":true,"kind":"function","modifiers":[],"name":"cross","nodeType":"FunctionDefinition","parameters":{"id":1681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1668,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1744,"src":"8892:40:18","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$1323_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"typeName":{"id":1667,"keyType":{"id":1665,"name":"int24","nodeType":"ElementaryTypeName","src":"8900:5:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Mapping","src":"8892:27:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int24_$_t_struct$_Info_$1323_storage_$","typeString":"mapping(int24 => struct Tick.Info)"},"valueType":{"id":1666,"name":"Tick.Info","nodeType":"UserDefinedTypeName","referencedDeclaration":1323,"src":"8909:9:18","typeDescriptions":{"typeIdentifier":"t_struct$_Info_$1323_storage_ptr","typeString":"struct Tick.Info"}}},"visibility":"internal"},{"constant":false,"id":1670,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":1744,"src":"8942:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1669,"name":"int24","nodeType":"ElementaryTypeName","src":"8942:5:18","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1672,"mutability":"mutable","name":"feeGrowthGlobal0X128","nodeType":"VariableDeclaration","scope":1744,"src":"8962:28:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1671,"name":"uint256","nodeType":"ElementaryTypeName","src":"8962:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1674,"mutability":"mutable","name":"feeGrowthGlobal1X128","nodeType":"VariableDeclaration","scope":1744,"src":"9000:28:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1673,"name":"uint256","nodeType":"ElementaryTypeName","src":"9000:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1676,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128","nodeType":"VariableDeclaration","scope":1744,"src":"9038:41:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":1675,"name":"uint160","nodeType":"ElementaryTypeName","src":"9038:7:18","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":1678,"mutability":"mutable","name":"tickCumulative","nodeType":"VariableDeclaration","scope":1744,"src":"9089:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":1677,"name":"int56","nodeType":"ElementaryTypeName","src":"9089:5:18","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":1680,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":1744,"src":"9119:11:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1679,"name":"uint32","nodeType":"ElementaryTypeName","src":"9119:6:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"8882:254:18"},"returnParameters":{"id":1684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"liquidityNet","nodeType":"VariableDeclaration","scope":1744,"src":"9155:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":1682,"name":"int128","nodeType":"ElementaryTypeName","src":"9155:6:18","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"9154:21:18"},"scope":1745,"src":"8868:837:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":1746,"src":"284:9423:18"}],"src":"37:9671:18"},"id":18},"@airdao/astra-cl-core/contracts/libraries/TickBitmap.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/TickBitmap.sol","exportedSymbols":{"BitMath":[851],"TickBitmap":[2001]},"id":2002,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":1747,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"37:24:19"},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/BitMath.sol","file":"./BitMath.sol","id":1748,"nodeType":"ImportDirective","scope":2002,"sourceUnit":852,"src":"63:23:19","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":1749,"nodeType":"StructuredDocumentation","src":"88:243:19","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":2001,"linearizedBaseContracts":[2001],"name":"TickBitmap","nodeType":"ContractDefinition","nodes":[{"body":{"id":1777,"nodeType":"Block","src":"767:79:19","statements":[{"expression":{"id":1766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1759,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1755,"src":"777:7:19","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1762,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1752,"src":"793:4:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"801:1:19","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"793:9:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":1761,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"787:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":1760,"name":"int16","nodeType":"ElementaryTypeName","src":"787:5:19","typeDescriptions":{}}},"id":1765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"787:16:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"777:26:19","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":1767,"nodeType":"ExpressionStatement","src":"777:26:19"},{"expression":{"id":1775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1768,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1757,"src":"813:6:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1771,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1752,"src":"828:4:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"323536","id":1772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"835:3:19","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"src":"828:10:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":1770,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"822:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1769,"name":"uint8","nodeType":"ElementaryTypeName","src":"822:5:19","typeDescriptions":{}}},"id":1774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"822:17:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"813:26:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1776,"nodeType":"ExpressionStatement","src":"813:26:19"}]},"documentation":{"id":1750,"nodeType":"StructuredDocumentation","src":"356:325:19","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":1778,"implemented":true,"kind":"function","modifiers":[],"name":"position","nodeType":"FunctionDefinition","parameters":{"id":1753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1752,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":1778,"src":"704:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1751,"name":"int24","nodeType":"ElementaryTypeName","src":"704:5:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"703:12:19"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1755,"mutability":"mutable","name":"wordPos","nodeType":"VariableDeclaration","scope":1778,"src":"738:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":1754,"name":"int16","nodeType":"ElementaryTypeName","src":"738:5:19","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"},{"constant":false,"id":1757,"mutability":"mutable","name":"bitPos","nodeType":"VariableDeclaration","scope":1778,"src":"753:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1756,"name":"uint8","nodeType":"ElementaryTypeName","src":"753:5:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"737:29:19"},"scope":2001,"src":"686:160:19","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":1820,"nodeType":"Block","src":"1200:220:19","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1791,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"1218:4:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":1792,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"1225:11:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1218:18:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1240:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1218:23:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1790,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1210:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1210:32:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1797,"nodeType":"ExpressionStatement","src":"1210:32:19"},{"assignments":[1799,1801],"declarations":[{"constant":false,"id":1799,"mutability":"mutable","name":"wordPos","nodeType":"VariableDeclaration","scope":1820,"src":"1287:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":1798,"name":"int16","nodeType":"ElementaryTypeName","src":"1287:5:19","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"},{"constant":false,"id":1801,"mutability":"mutable","name":"bitPos","nodeType":"VariableDeclaration","scope":1820,"src":"1302:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1800,"name":"uint8","nodeType":"ElementaryTypeName","src":"1302:5:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":1807,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1803,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"1327:4:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1804,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"1334:11:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1327:18:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":1802,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1778,"src":"1318:8:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_int16_$_t_uint8_$","typeString":"function (int24) pure returns (int16,uint8)"}},"id":1806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1318:28:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int16_$_t_uint8_$","typeString":"tuple(int16,uint8)"}},"nodeType":"VariableDeclarationStatement","src":"1286:60:19"},{"assignments":[1809],"declarations":[{"constant":false,"id":1809,"mutability":"mutable","name":"mask","nodeType":"VariableDeclaration","scope":1820,"src":"1356:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1808,"name":"uint256","nodeType":"ElementaryTypeName","src":"1356:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1813,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1371:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":1811,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1801,"src":"1376:6:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1371:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1356:26:19"},{"expression":{"id":1818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1814,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"1392:4:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":1816,"indexExpression":{"id":1815,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1799,"src":"1397:7:19","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1392:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"^=","rightHandSide":{"id":1817,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1809,"src":"1409:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1392:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1819,"nodeType":"ExpressionStatement","src":"1392:21:19"}]},"documentation":{"id":1779,"nodeType":"StructuredDocumentation","src":"852:245:19","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":1821,"implemented":true,"kind":"function","modifiers":[],"name":"flipTick","nodeType":"FunctionDefinition","parameters":{"id":1788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1783,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1821,"src":"1120:38:19","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"typeName":{"id":1782,"keyType":{"id":1780,"name":"int16","nodeType":"ElementaryTypeName","src":"1128:5:19","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Mapping","src":"1120:25:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"valueType":{"id":1781,"name":"uint256","nodeType":"ElementaryTypeName","src":"1137:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":1785,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":1821,"src":"1160:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1784,"name":"int24","nodeType":"ElementaryTypeName","src":"1160:5:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1787,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":1821,"src":"1172:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1786,"name":"int24","nodeType":"ElementaryTypeName","src":"1172:5:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1119:71:19"},"returnParameters":{"id":1789,"nodeType":"ParameterList","parameters":[],"src":"1200:0:19"},"scope":2001,"src":"1102:318:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1999,"nodeType":"Block","src":"2372:1707:19","statements":[{"assignments":[1840],"declarations":[{"constant":false,"id":1840,"mutability":"mutable","name":"compressed","nodeType":"VariableDeclaration","scope":1999,"src":"2382:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1839,"name":"int24","nodeType":"ElementaryTypeName","src":"2382:5:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":1844,"initialValue":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1841,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"2401:4:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1842,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1830,"src":"2408:11:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2401:18:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"2382:37:19"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1845,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"2433:4:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2440:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2433:8:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1848,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"2445:4:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":1849,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1830,"src":"2452:11:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2445:18:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2467:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2445:23:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2433:35:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1857,"nodeType":"IfStatement","src":"2429:53:19","trueBody":{"expression":{"id":1855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"2470:12:19","subExpression":{"id":1854,"name":"compressed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"2470:10:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":1856,"nodeType":"ExpressionStatement","src":"2470:12:19"}},{"condition":{"id":1858,"name":"lte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1832,"src":"2532:3:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1997,"nodeType":"Block","src":"3259:814:19","statements":[{"assignments":[1925,1927],"declarations":[{"constant":false,"id":1925,"mutability":"mutable","name":"wordPos","nodeType":"VariableDeclaration","scope":1997,"src":"3371:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":1924,"name":"int16","nodeType":"ElementaryTypeName","src":"3371:5:19","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"},{"constant":false,"id":1927,"mutability":"mutable","name":"bitPos","nodeType":"VariableDeclaration","scope":1997,"src":"3386:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1926,"name":"uint8","nodeType":"ElementaryTypeName","src":"3386:5:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":1933,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1929,"name":"compressed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"3411:10:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3424:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3411:14:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":1928,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1778,"src":"3402:8:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_int16_$_t_uint8_$","typeString":"function (int24) pure returns (int16,uint8)"}},"id":1932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3402:24:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int16_$_t_uint8_$","typeString":"tuple(int16,uint8)"}},"nodeType":"VariableDeclarationStatement","src":"3370:56:19"},{"assignments":[1935],"declarations":[{"constant":false,"id":1935,"mutability":"mutable","name":"mask","nodeType":"VariableDeclaration","scope":1997,"src":"3498:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1934,"name":"uint256","nodeType":"ElementaryTypeName","src":"3498:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1944,"initialValue":{"id":1943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3513:20:19","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3516:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":1937,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1927,"src":"3521:6:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3516:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1939,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3515:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3531:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3515:17:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1942,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3514:19:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3498:35:19"},{"assignments":[1946],"declarations":[{"constant":false,"id":1946,"mutability":"mutable","name":"masked","nodeType":"VariableDeclaration","scope":1997,"src":"3547:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1945,"name":"uint256","nodeType":"ElementaryTypeName","src":"3547:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1952,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":1947,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1826,"src":"3564:4:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":1949,"indexExpression":{"id":1948,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1925,"src":"3569:7:19","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3564:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":1950,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1935,"src":"3580:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3564:20:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3547:37:19"},{"expression":{"id":1957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1953,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"3709:11:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1954,"name":"masked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1946,"src":"3723:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3733:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3723:11:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3709:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1958,"nodeType":"ExpressionStatement","src":"3709:25:19"},{"expression":{"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1959,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1835,"src":"3858:4:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":1960,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"3865:11:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1977,"name":"compressed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"3999:10:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4012:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3999:14:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1984,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4027:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1983,"name":"uint8","nodeType":"ElementaryTypeName","src":"4027:5:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":1982,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4022:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4022:11:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":1986,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"4022:15:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1987,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1927,"src":"4040:6:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4022:24:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1981,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4016:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":1980,"name":"int24","nodeType":"ElementaryTypeName","src":"4016:5:19","typeDescriptions":{}}},"id":1989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4016:31:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3999:48:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":1991,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3998:50:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1992,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1830,"src":"4051:11:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3998:64:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":1994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3865:197:19","trueExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1961,"name":"compressed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"3896:10:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3909:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3896:14:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1968,"name":"masked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1946,"src":"3947:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1966,"name":"BitMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":851,"src":"3919:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BitMath_$851_$","typeString":"type(library BitMath)"}},"id":1967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"leastSignificantBit","nodeType":"MemberAccess","referencedDeclaration":850,"src":"3919:27:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) pure returns (uint8)"}},"id":1969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3919:35:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1970,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1927,"src":"3957:6:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3919:44:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3913:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":1964,"name":"int24","nodeType":"ElementaryTypeName","src":"3913:5:19","typeDescriptions":{}}},"id":1972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3913:51:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3896:68:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":1974,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3895:70:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1975,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1830,"src":"3968:11:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3895:84:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3858:204:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":1996,"nodeType":"ExpressionStatement","src":"3858:204:19"}]},"id":1998,"nodeType":"IfStatement","src":"2528:1545:19","trueBody":{"id":1923,"nodeType":"Block","src":"2537:716:19","statements":[{"assignments":[1860,1862],"declarations":[{"constant":false,"id":1860,"mutability":"mutable","name":"wordPos","nodeType":"VariableDeclaration","scope":1923,"src":"2552:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":1859,"name":"int16","nodeType":"ElementaryTypeName","src":"2552:5:19","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"},{"constant":false,"id":1862,"mutability":"mutable","name":"bitPos","nodeType":"VariableDeclaration","scope":1923,"src":"2567:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1861,"name":"uint8","nodeType":"ElementaryTypeName","src":"2567:5:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":1866,"initialValue":{"arguments":[{"id":1864,"name":"compressed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"2592:10:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":1863,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1778,"src":"2583:8:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_int16_$_t_uint8_$","typeString":"function (int24) pure returns (int16,uint8)"}},"id":1865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2583:20:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int16_$_t_uint8_$","typeString":"tuple(int16,uint8)"}},"nodeType":"VariableDeclarationStatement","src":"2551:52:19"},{"assignments":[1868],"declarations":[{"constant":false,"id":1868,"mutability":"mutable","name":"mask","nodeType":"VariableDeclaration","scope":1923,"src":"2684:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1867,"name":"uint256","nodeType":"ElementaryTypeName","src":"2684:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1880,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2700:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":1870,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"2705:6:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2700:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1872,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2699:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2715:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2699:17:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2720:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":1876,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"2725:6:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2720:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1878,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2719:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2699:33:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2684:48:19"},{"assignments":[1882],"declarations":[{"constant":false,"id":1882,"mutability":"mutable","name":"masked","nodeType":"VariableDeclaration","scope":1923,"src":"2746:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1881,"name":"uint256","nodeType":"ElementaryTypeName","src":"2746:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1888,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":1883,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1826,"src":"2763:4:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"}},"id":1885,"indexExpression":{"id":1884,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"2768:7:19","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2763:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":1886,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1868,"src":"2779:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2763:20:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2746:37:19"},{"expression":{"id":1893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1889,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"2916:11:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1890,"name":"masked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"2930:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2940:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2930:11:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2916:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1894,"nodeType":"ExpressionStatement","src":"2916:25:19"},{"expression":{"id":1921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1895,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1835,"src":"3065:4:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":1896,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"3072:11:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1911,"name":"compressed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"3201:10:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":1914,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"3220:6:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1913,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3214:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":1912,"name":"int24","nodeType":"ElementaryTypeName","src":"3214:5:19","typeDescriptions":{}}},"id":1915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3214:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3201:26:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":1917,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3200:28:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1918,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1830,"src":"3231:11:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3200:42:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":1920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3072:170:19","trueExpression":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":1907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1897,"name":"compressed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"3103:10:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1900,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"3122:6:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":1903,"name":"masked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"3158:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1901,"name":"BitMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":851,"src":"3131:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BitMath_$851_$","typeString":"type(library BitMath)"}},"id":1902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mostSignificantBit","nodeType":"MemberAccess","referencedDeclaration":689,"src":"3131:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) pure returns (uint8)"}},"id":1904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3131:34:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3122:43:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3116:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":1898,"name":"int24","nodeType":"ElementaryTypeName","src":"3116:5:19","typeDescriptions":{}}},"id":1906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3116:50:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3103:63:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":1908,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3102:65:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1909,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1830,"src":"3170:11:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3102:79:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"3065:177:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":1922,"nodeType":"ExpressionStatement","src":"3065:177:19"}]}}]},"documentation":{"id":1822,"nodeType":"StructuredDocumentation","src":"1426:727:19","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":2000,"implemented":true,"kind":"function","modifiers":[],"name":"nextInitializedTickWithinOneWord","nodeType":"FunctionDefinition","parameters":{"id":1833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1826,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":2000,"src":"2209:38:19","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"typeName":{"id":1825,"keyType":{"id":1823,"name":"int16","nodeType":"ElementaryTypeName","src":"2217:5:19","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Mapping","src":"2209:25:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_int16_$_t_uint256_$","typeString":"mapping(int16 => uint256)"},"valueType":{"id":1824,"name":"uint256","nodeType":"ElementaryTypeName","src":"2226:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":1828,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":2000,"src":"2257:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1827,"name":"int24","nodeType":"ElementaryTypeName","src":"2257:5:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1830,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":2000,"src":"2277:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1829,"name":"int24","nodeType":"ElementaryTypeName","src":"2277:5:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1832,"mutability":"mutable","name":"lte","nodeType":"VariableDeclaration","scope":2000,"src":"2304:8:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1831,"name":"bool","nodeType":"ElementaryTypeName","src":"2304:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2199:119:19"},"returnParameters":{"id":1838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1835,"mutability":"mutable","name":"next","nodeType":"VariableDeclaration","scope":2000,"src":"2342:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":1834,"name":"int24","nodeType":"ElementaryTypeName","src":"2342:5:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":1837,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":2000,"src":"2354:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1836,"name":"bool","nodeType":"ElementaryTypeName","src":"2354:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2341:30:19"},"scope":2001,"src":"2158:1921:19","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":2002,"src":"331:3750:19"}],"src":"37:4045:19"},"id":19},"@airdao/astra-cl-core/contracts/libraries/TickMath.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/TickMath.sol","exportedSymbols":{"TickMath":[2536]},"id":2537,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2003,"literals":["solidity",">=","0.5",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"45:31:20"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":2004,"nodeType":"StructuredDocumentation","src":"78:235:20","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":2536,"linearizedBaseContracts":[2536],"name":"TickMath","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":2005,"nodeType":"StructuredDocumentation","src":"336:108:20","text":"@dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128"},"id":2009,"mutability":"constant","name":"MIN_TICK","nodeType":"VariableDeclaration","scope":2536,"src":"449:42:20","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":2006,"name":"int24","nodeType":"ElementaryTypeName","src":"449:5:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"value":{"id":2008,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"484:7:20","subExpression":{"hexValue":"383837323732","id":2007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"485:6:20","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":2010,"nodeType":"StructuredDocumentation","src":"497:107:20","text":"@dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128"},"id":2014,"mutability":"constant","name":"MAX_TICK","nodeType":"VariableDeclaration","scope":2536,"src":"609:44:20","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":2011,"name":"int24","nodeType":"ElementaryTypeName","src":"609:5:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"value":{"id":2013,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"644:9:20","subExpression":{"id":2012,"name":"MIN_TICK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2009,"src":"645:8:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":true,"documentation":{"id":2015,"nodeType":"StructuredDocumentation","src":"660:116:20","text":"@dev The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK)"},"id":2018,"mutability":"constant","name":"MIN_SQRT_RATIO","nodeType":"VariableDeclaration","scope":2536,"src":"781:53:20","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2016,"name":"uint160","nodeType":"ElementaryTypeName","src":"781:7:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"hexValue":"34323935313238373339","id":2017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"824:10:20","typeDescriptions":{"typeIdentifier":"t_rational_4295128739_by_1","typeString":"int_const 4295128739"},"value":"4295128739"},"visibility":"internal"},{"constant":true,"documentation":{"id":2019,"nodeType":"StructuredDocumentation","src":"840:116:20","text":"@dev The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK)"},"id":2022,"mutability":"constant","name":"MAX_SQRT_RATIO","nodeType":"VariableDeclaration","scope":2536,"src":"961:92:20","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2020,"name":"uint160","nodeType":"ElementaryTypeName","src":"961:7:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"value":{"hexValue":"31343631343436373033343835323130313033323837323733303532323033393838383232333738373233393730333432","id":2021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1004:49:20","typeDescriptions":{"typeIdentifier":"t_rational_1461446703485210103287273052203988822378723970342_by_1","typeString":"int_const 1461...(41 digits omitted)...0342"},"value":"1461446703485210103287273052203988822378723970342"},"visibility":"internal"},{"body":{"id":2395,"nodeType":"Block","src":"1447:2495:20","statements":[{"assignments":[2031],"declarations":[{"constant":false,"id":2031,"mutability":"mutable","name":"absTick","nodeType":"VariableDeclaration","scope":2395,"src":"1457:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2030,"name":"uint256","nodeType":"ElementaryTypeName","src":"1457:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2051,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":2034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2032,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2025,"src":"1475:4:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":2033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1482:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1475:8:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"arguments":[{"id":2047,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2025,"src":"1526:4:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":2046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1519:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":2045,"name":"int256","nodeType":"ElementaryTypeName","src":"1519:6:20","typeDescriptions":{}}},"id":2048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1519:12:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2044,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1511:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2043,"name":"uint256","nodeType":"ElementaryTypeName","src":"1511:7:20","typeDescriptions":{}}},"id":2049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1511:21:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1475:57:20","trueExpression":{"arguments":[{"id":2041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1494:13:20","subExpression":{"arguments":[{"id":2039,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2025,"src":"1502:4:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":2038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1495:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":2037,"name":"int256","nodeType":"ElementaryTypeName","src":"1495:6:20","typeDescriptions":{}}},"id":2040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1495:12:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2036,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1486:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2035,"name":"uint256","nodeType":"ElementaryTypeName","src":"1486:7:20","typeDescriptions":{}}},"id":2042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1486:22:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1457:75:20"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2053,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"1550:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":2056,"name":"MAX_TICK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2014,"src":"1569:8:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":2055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1561:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2054,"name":"uint256","nodeType":"ElementaryTypeName","src":"1561:7:20","typeDescriptions":{}}},"id":2057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1561:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1550:28:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"54","id":2059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1580:3:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_846b7b6deb1cfa110d0ea7ec6162a7123b761785528db70cceed5143183b11fc","typeString":"literal_string \"T\""},"value":"T"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_846b7b6deb1cfa110d0ea7ec6162a7123b761785528db70cceed5143183b11fc","typeString":"literal_string \"T\""}],"id":2052,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1542:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1542:42:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2061,"nodeType":"ExpressionStatement","src":"1542:42:20"},{"assignments":[2063],"declarations":[{"constant":false,"id":2063,"mutability":"mutable","name":"ratio","nodeType":"VariableDeclaration","scope":2395,"src":"1595:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2062,"name":"uint256","nodeType":"ElementaryTypeName","src":"1595:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2072,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2064,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"1611:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307831","id":2065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1621:3:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x1"},"src":"1611:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1628:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1611:18:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"3078313030303030303030303030303030303030303030303030303030303030303030","id":2070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1669:35:20","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"value":"0x100000000000000000000000000000000"},"id":2071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1611:93:20","trueExpression":{"hexValue":"30786666666362393333626436666164333761613264313632643161353934303031","id":2069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1632:34:20","typeDescriptions":{"typeIdentifier":"t_rational_340265354078544963557816517032075149313_by_1","typeString":"int_const 3402...(31 digits omitted)...9313"},"value":"0xfffcb933bd6fad37aa2d162d1a594001"},"typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"nodeType":"VariableDeclarationStatement","src":"1595:109:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2073,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"1718:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307832","id":2074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1728:3:20","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x2"},"src":"1718:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1735:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1718:18:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2087,"nodeType":"IfStatement","src":"1714:83:20","trueBody":{"expression":{"id":2085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2078,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"1738:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2079,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"1747:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666663937323732333733643431333235396134363939303538306532313361","id":2080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1755:34:20","typeDescriptions":{"typeIdentifier":"t_rational_340248342086729790484326174814286782778_by_1","typeString":"int_const 3402...(31 digits omitted)...2778"},"value":"0xfff97272373d413259a46990580e213a"},"src":"1747:42:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2082,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1746:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1794:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"1746:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1738:59:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2086,"nodeType":"ExpressionStatement","src":"1738:59:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2088,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"1811:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307834","id":2089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1821:3:20","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x4"},"src":"1811:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1828:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1811:18:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2102,"nodeType":"IfStatement","src":"1807:83:20","trueBody":{"expression":{"id":2100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2093,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"1831:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2094,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"1840:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666663265353066356636353639333265663132333537636633633766646363","id":2095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1848:34:20","typeDescriptions":{"typeIdentifier":"t_rational_340214320654664324051920982716015181260_by_1","typeString":"int_const 3402...(31 digits omitted)...1260"},"value":"0xfff2e50f5f656932ef12357cf3c7fdcc"},"src":"1840:42:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2097,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1839:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1887:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"1839:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1831:59:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2101,"nodeType":"ExpressionStatement","src":"1831:59:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2103,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"1904:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307838","id":2104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1914:3:20","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x8"},"src":"1904:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1921:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1904:18:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2117,"nodeType":"IfStatement","src":"1900:83:20","trueBody":{"expression":{"id":2115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2108,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"1924:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2109,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"1933:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666653563616361376531306534653631633336323465616130393431636430","id":2110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1941:34:20","typeDescriptions":{"typeIdentifier":"t_rational_340146287995602323631171512101879684304_by_1","typeString":"int_const 3401...(31 digits omitted)...4304"},"value":"0xffe5caca7e10e4e61c3624eaa0941cd0"},"src":"1933:42:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2112,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1932:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1980:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"1932:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1924:59:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2116,"nodeType":"ExpressionStatement","src":"1924:59:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2118,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"1997:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783130","id":2119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2007:4:20","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"src":"1997:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2015:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1997:19:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2132,"nodeType":"IfStatement","src":"1993:84:20","trueBody":{"expression":{"id":2130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2123,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2018:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2124,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2027:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666636239383433643630663631353963396462353838333563393236363434","id":2125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2035:34:20","typeDescriptions":{"typeIdentifier":"t_rational_340010263488231146823593991679159461444_by_1","typeString":"int_const 3400...(31 digits omitted)...1444"},"value":"0xffcb9843d60f6159c9db58835c926644"},"src":"2027:42:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2127,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2026:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2074:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2026:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2018:59:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2131,"nodeType":"ExpressionStatement","src":"2018:59:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2133,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"2091:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783230","id":2134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2101:4:20","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"2091:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2109:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2091:19:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2147,"nodeType":"IfStatement","src":"2087:84:20","trueBody":{"expression":{"id":2145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2138,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2112:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2139,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2121:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666393733623431666139386330383134373265363839366466623235346330","id":2140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2129:34:20","typeDescriptions":{"typeIdentifier":"t_rational_339738377640345403697157401104375502016_by_1","typeString":"int_const 3397...(31 digits omitted)...2016"},"value":"0xff973b41fa98c081472e6896dfb254c0"},"src":"2121:42:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2142,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2120:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2168:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2120:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2112:59:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2146,"nodeType":"ExpressionStatement","src":"2112:59:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2148,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"2185:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783430","id":2149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2195:4:20","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"src":"2185:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2203:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2185:19:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2162,"nodeType":"IfStatement","src":"2181:84:20","trueBody":{"expression":{"id":2160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2153,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2206:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2154,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2215:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786666326561313634363663393661333834336563373862333236623532383631","id":2155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2223:34:20","typeDescriptions":{"typeIdentifier":"t_rational_339195258003219555707034227454543997025_by_1","typeString":"int_const 3391...(31 digits omitted)...7025"},"value":"0xff2ea16466c96a3843ec78b326b52861"},"src":"2215:42:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2157,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2214:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2262:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2214:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2206:59:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2161,"nodeType":"ExpressionStatement","src":"2206:59:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2163,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"2279:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783830","id":2164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2289:4:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"src":"2279:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2297:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2279:19:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2177,"nodeType":"IfStatement","src":"2275:84:20","trueBody":{"expression":{"id":2175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2168,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2300:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2169,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2309:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786665356465653034366139396132613831316334363166313936396333303533","id":2170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2317:34:20","typeDescriptions":{"typeIdentifier":"t_rational_338111622100601834656805679988414885971_by_1","typeString":"int_const 3381...(31 digits omitted)...5971"},"value":"0xfe5dee046a99a2a811c461f1969c3053"},"src":"2309:42:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2172,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2308:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2356:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2308:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2300:59:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2176,"nodeType":"ExpressionStatement","src":"2300:59:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2178,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"2373:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078313030","id":2179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2383:5:20","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"0x100"},"src":"2373:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2392:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2373:20:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2192,"nodeType":"IfStatement","src":"2369:85:20","trueBody":{"expression":{"id":2190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2183,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2395:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2184,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2404:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786663626538366337393030613838616564636666633833623437396161336134","id":2185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2412:34:20","typeDescriptions":{"typeIdentifier":"t_rational_335954724994790223023589805789778977700_by_1","typeString":"int_const 3359...(31 digits omitted)...7700"},"value":"0xfcbe86c7900a88aedcffc83b479aa3a4"},"src":"2404:42:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2187,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2403:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2451:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2403:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2395:59:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2191,"nodeType":"ExpressionStatement","src":"2395:59:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2193,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"2468:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078323030","id":2194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2478:5:20","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"value":"0x200"},"src":"2468:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2487:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2468:20:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2207,"nodeType":"IfStatement","src":"2464:85:20","trueBody":{"expression":{"id":2205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2198,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2490:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2199,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2499:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786639383761373235336163343133313736663262303734636637383135653534","id":2200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2507:34:20","typeDescriptions":{"typeIdentifier":"t_rational_331682121138379247127172139078559817300_by_1","typeString":"int_const 3316...(31 digits omitted)...7300"},"value":"0xf987a7253ac413176f2b074cf7815e54"},"src":"2499:42:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2202,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2498:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2546:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2498:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2490:59:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2206,"nodeType":"ExpressionStatement","src":"2490:59:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2208,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"2563:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078343030","id":2209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2573:5:20","typeDescriptions":{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"},"value":"0x400"},"src":"2563:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2582:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2563:20:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2222,"nodeType":"IfStatement","src":"2559:85:20","trueBody":{"expression":{"id":2220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2213,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2585:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2214,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2594:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786633333932623038323262373030303539343063376133393865346237306633","id":2215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2602:34:20","typeDescriptions":{"typeIdentifier":"t_rational_323299236684853023288211250268160618739_by_1","typeString":"int_const 3232...(31 digits omitted)...8739"},"value":"0xf3392b0822b70005940c7a398e4b70f3"},"src":"2594:42:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2217,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2593:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2641:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2593:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2585:59:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2221,"nodeType":"ExpressionStatement","src":"2585:59:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2223,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"2658:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078383030","id":2224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2668:5:20","typeDescriptions":{"typeIdentifier":"t_rational_2048_by_1","typeString":"int_const 2048"},"value":"0x800"},"src":"2658:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2677:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2658:20:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2237,"nodeType":"IfStatement","src":"2654:85:20","trueBody":{"expression":{"id":2235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2228,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2680:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2229,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2689:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786537313539343735613263323962373434336232396337666136653838396439","id":2230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2697:34:20","typeDescriptions":{"typeIdentifier":"t_rational_307163716377032989948697243942600083929_by_1","typeString":"int_const 3071...(31 digits omitted)...3929"},"value":"0xe7159475a2c29b7443b29c7fa6e889d9"},"src":"2689:42:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2232,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2688:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2736:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2688:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2680:59:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2236,"nodeType":"ExpressionStatement","src":"2680:59:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"2753:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307831303030","id":2239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2763:6:20","typeDescriptions":{"typeIdentifier":"t_rational_4096_by_1","typeString":"int_const 4096"},"value":"0x1000"},"src":"2753:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2773:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2753:21:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2252,"nodeType":"IfStatement","src":"2749:86:20","trueBody":{"expression":{"id":2250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2243,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2776:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2244,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2785:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786430393766336264666432303232623838343561643866373932616135383235","id":2245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2793:34:20","typeDescriptions":{"typeIdentifier":"t_rational_277268403626896220162999269216087595045_by_1","typeString":"int_const 2772...(31 digits omitted)...5045"},"value":"0xd097f3bdfd2022b8845ad8f792aa5825"},"src":"2785:42:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2247,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2784:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2832:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2784:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2776:59:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2251,"nodeType":"ExpressionStatement","src":"2776:59:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2253,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"2849:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307832303030","id":2254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2859:6:20","typeDescriptions":{"typeIdentifier":"t_rational_8192_by_1","typeString":"int_const 8192"},"value":"0x2000"},"src":"2849:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2869:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2849:21:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2267,"nodeType":"IfStatement","src":"2845:86:20","trueBody":{"expression":{"id":2265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2258,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2872:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2259,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2881:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30786139663734363436326438373066646638613635646331663930653036316535","id":2260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2889:34:20","typeDescriptions":{"typeIdentifier":"t_rational_225923453940442621947126027127485391333_by_1","typeString":"int_const 2259...(31 digits omitted)...1333"},"value":"0xa9f746462d870fdf8a65dc1f90e061e5"},"src":"2881:42:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2262,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2880:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2928:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2880:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2872:59:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2266,"nodeType":"ExpressionStatement","src":"2872:59:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2268,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"2945:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307834303030","id":2269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2955:6:20","typeDescriptions":{"typeIdentifier":"t_rational_16384_by_1","typeString":"int_const 16384"},"value":"0x4000"},"src":"2945:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2965:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2945:21:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2282,"nodeType":"IfStatement","src":"2941:86:20","trueBody":{"expression":{"id":2280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2273,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2968:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2274,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2977:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30783730643836396131353664326131623839306262336466363262616633326637","id":2275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2985:34:20","typeDescriptions":{"typeIdentifier":"t_rational_149997214084966997727330242082538205943_by_1","typeString":"int_const 1499...(31 digits omitted)...5943"},"value":"0x70d869a156d2a1b890bb3df62baf32f7"},"src":"2977:42:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2277,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2976:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3024:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2976:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2968:59:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2281,"nodeType":"ExpressionStatement","src":"2968:59:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2283,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"3041:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307838303030","id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3051:6:20","typeDescriptions":{"typeIdentifier":"t_rational_32768_by_1","typeString":"int_const 32768"},"value":"0x8000"},"src":"3041:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3061:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3041:21:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2297,"nodeType":"IfStatement","src":"3037:86:20","trueBody":{"expression":{"id":2295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2288,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"3064:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2289,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"3073:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30783331626531333566393764303866643938313233313530353534326663666136","id":2290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3081:34:20","typeDescriptions":{"typeIdentifier":"t_rational_66119101136024775622716233608466517926_by_1","typeString":"int_const 6611...(30 digits omitted)...7926"},"value":"0x31be135f97d08fd981231505542fcfa6"},"src":"3073:42:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2292,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3072:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3120:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3072:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3064:59:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2296,"nodeType":"ExpressionStatement","src":"3064:59:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2298,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"3137:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783130303030","id":2299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3147:7:20","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"value":"0x10000"},"src":"3137:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3158:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3137:22:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2312,"nodeType":"IfStatement","src":"3133:86:20","trueBody":{"expression":{"id":2310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2303,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"3161:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2304,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"3170:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"307839616135303862356237613834653163363737646535346633653939626339","id":2305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3178:33:20","typeDescriptions":{"typeIdentifier":"t_rational_12847376061809297530290974190478138313_by_1","typeString":"int_const 1284...(30 digits omitted)...8313"},"value":"0x9aa508b5b7a84e1c677de54f3e99bc9"},"src":"3170:41:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2307,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3169:43:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3216:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3169:50:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3161:58:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2311,"nodeType":"ExpressionStatement","src":"3161:58:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2313,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"3233:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783230303030","id":2314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3243:7:20","typeDescriptions":{"typeIdentifier":"t_rational_131072_by_1","typeString":"int_const 131072"},"value":"0x20000"},"src":"3233:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3254:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3233:22:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2327,"nodeType":"IfStatement","src":"3229:85:20","trueBody":{"expression":{"id":2325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2318,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"3257:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2319,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"3266:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3078356436616638646564623831313936363939633332393232356565363034","id":2320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3274:32:20","typeDescriptions":{"typeIdentifier":"t_rational_485053260817066172746253684029974020_by_1","typeString":"int_const 4850...(28 digits omitted)...4020"},"value":"0x5d6af8dedb81196699c329225ee604"},"src":"3266:40:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2322,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3265:42:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3311:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3265:49:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3257:57:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2326,"nodeType":"ExpressionStatement","src":"3257:57:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2328,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"3328:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783430303030","id":2329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3338:7:20","typeDescriptions":{"typeIdentifier":"t_rational_262144_by_1","typeString":"int_const 262144"},"value":"0x40000"},"src":"3328:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3349:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3328:22:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2342,"nodeType":"IfStatement","src":"3324:83:20","trueBody":{"expression":{"id":2340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2333,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"3352:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2334,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"3361:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"307832323136653538346635666131656139323630343162656466653938","id":2335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3369:30:20","typeDescriptions":{"typeIdentifier":"t_rational_691415978906521570653435304214168_by_1","typeString":"int_const 6914...(25 digits omitted)...4168"},"value":"0x2216e584f5fa1ea926041bedfe98"},"src":"3361:38:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2337,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3360:40:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3404:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3360:47:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3352:55:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2341,"nodeType":"ExpressionStatement","src":"3352:55:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2343,"name":"absTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"3421:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783830303030","id":2344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3431:7:20","typeDescriptions":{"typeIdentifier":"t_rational_524288_by_1","typeString":"int_const 524288"},"value":"0x80000"},"src":"3421:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3442:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3421:22:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2357,"nodeType":"IfStatement","src":"3417:78:20","trueBody":{"expression":{"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2348,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"3445:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2349,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"3454:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30783438613137303339316637646334323434346538666132","id":2350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3462:25:20","typeDescriptions":{"typeIdentifier":"t_rational_1404880482679654955896180642_by_1","typeString":"int_const 1404880482679654955896180642"},"value":"0x48a170391f7dc42444e8fa2"},"src":"3454:33:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2352,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3453:35:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3492:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3453:42:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3445:50:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2356,"nodeType":"ExpressionStatement","src":"3445:50:20"}},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":2360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2358,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2025,"src":"3510:4:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3517:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3510:8:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2371,"nodeType":"IfStatement","src":"3506:47:20","trueBody":{"expression":{"id":2369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2361,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"3520:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3533:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2363,"name":"uint256","nodeType":"ElementaryTypeName","src":"3533:7:20","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":2362,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3528:4:20","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3528:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":2366,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"3528:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2367,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"3548:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3528:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3520:33:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2370,"nodeType":"ExpressionStatement","src":"3520:33:20"}},{"expression":{"id":2393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2372,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2028,"src":"3863:12:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2375,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"3887:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":2376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3896:2:20","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"3887:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2378,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3886:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2379,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"3903:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":2382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3912:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":2381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3917:2:20","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"3912:7:20","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}}],"id":2383,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3911:9:20","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"3903:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3924:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3903:22:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"31","id":2388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3932:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"id":2389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3903:30:20","trueExpression":{"hexValue":"30","id":2387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3928:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2390,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3902:32:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3886:48:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2374,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3878:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2373,"name":"uint160","nodeType":"ElementaryTypeName","src":"3878:7:20","typeDescriptions":{}}},"id":2392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3878:57:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3863:72:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":2394,"nodeType":"ExpressionStatement","src":"3863:72:20"}]},"documentation":{"id":2023,"nodeType":"StructuredDocumentation","src":"1060:297:20","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 ratio of the two assets (token1/token0)\n at the given tick"},"id":2396,"implemented":true,"kind":"function","modifiers":[],"name":"getSqrtRatioAtTick","nodeType":"FunctionDefinition","parameters":{"id":2026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2025,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":2396,"src":"1390:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":2024,"name":"int24","nodeType":"ElementaryTypeName","src":"1390:5:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1389:12:20"},"returnParameters":{"id":2029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2028,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":2396,"src":"1425:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2027,"name":"uint160","nodeType":"ElementaryTypeName","src":"1425:7:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1424:22:20"},"scope":2536,"src":"1362:2580:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2534,"nodeType":"Block","src":"4446:4252:20","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":2407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2405,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2399,"src":"4563:12:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2406,"name":"MIN_SQRT_RATIO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"4579:14:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4563:30:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":2410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2408,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2399,"src":"4597:12:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2409,"name":"MAX_SQRT_RATIO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"4612:14:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4597:29:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4563:63:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"52","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4628:3:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_ef22bddd350b943170a67d35191c27e310709a28c38b5762a152ff640108f5b2","typeString":"literal_string \"R\""},"value":"R"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef22bddd350b943170a67d35191c27e310709a28c38b5762a152ff640108f5b2","typeString":"literal_string \"R\""}],"id":2404,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4555:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4555:77:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2414,"nodeType":"ExpressionStatement","src":"4555:77:20"},{"assignments":[2416],"declarations":[{"constant":false,"id":2416,"mutability":"mutable","name":"ratio","nodeType":"VariableDeclaration","scope":2534,"src":"4642:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2415,"name":"uint256","nodeType":"ElementaryTypeName","src":"4642:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2423,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2419,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2399,"src":"4666:12:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4658:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2417,"name":"uint256","nodeType":"ElementaryTypeName","src":"4658:7:20","typeDescriptions":{}}},"id":2420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4658:21:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":2421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4683:2:20","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"4658:27:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4642:43:20"},{"assignments":[2425],"declarations":[{"constant":false,"id":2425,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":2534,"src":"4696:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2424,"name":"uint256","nodeType":"ElementaryTypeName","src":"4696:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2427,"initialValue":{"id":2426,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2416,"src":"4708:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4696:17:20"},{"assignments":[2429],"declarations":[{"constant":false,"id":2429,"mutability":"mutable","name":"msb","nodeType":"VariableDeclaration","scope":2534,"src":"4723:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2428,"name":"uint256","nodeType":"ElementaryTypeName","src":"4723:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2431,"initialValue":{"hexValue":"30","id":2430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4737:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4723:15:20"},{"AST":{"nodeType":"YulBlock","src":"4758:139:20","statements":[{"nodeType":"YulVariableDeclaration","src":"4772:58:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4785:1:20","type":"","value":"7"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"4791:1:20"},{"kind":"number","nodeType":"YulLiteral","src":"4794:34:20","type":"","value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4788:2:20"},"nodeType":"YulFunctionCall","src":"4788:41:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4781:3:20"},"nodeType":"YulFunctionCall","src":"4781:49:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"4776:1:20","type":""}]},{"nodeType":"YulAssignment","src":"4843:17:20","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"4853:3:20"},{"name":"f","nodeType":"YulIdentifier","src":"4858:1:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4850:2:20"},"nodeType":"YulFunctionCall","src":"4850:10:20"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"4843:3:20"}]},{"nodeType":"YulAssignment","src":"4873:14:20","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"4882:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"4885:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"4878:3:20"},"nodeType":"YulFunctionCall","src":"4878:9:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"4873:1:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2429,"isOffset":false,"isSlot":false,"src":"4843:3:20","valueSize":1},{"declaration":2429,"isOffset":false,"isSlot":false,"src":"4853:3:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"4791:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"4873:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"4885:1:20","valueSize":1}],"id":2432,"nodeType":"InlineAssembly","src":"4749:148:20"},{"AST":{"nodeType":"YulBlock","src":"4915:123:20","statements":[{"nodeType":"YulVariableDeclaration","src":"4929:42:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4942:1:20","type":"","value":"6"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"4948:1:20"},{"kind":"number","nodeType":"YulLiteral","src":"4951:18:20","type":"","value":"0xFFFFFFFFFFFFFFFF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4945:2:20"},"nodeType":"YulFunctionCall","src":"4945:25:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4938:3:20"},"nodeType":"YulFunctionCall","src":"4938:33:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"4933:1:20","type":""}]},{"nodeType":"YulAssignment","src":"4984:17:20","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"4994:3:20"},{"name":"f","nodeType":"YulIdentifier","src":"4999:1:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4991:2:20"},"nodeType":"YulFunctionCall","src":"4991:10:20"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"4984:3:20"}]},{"nodeType":"YulAssignment","src":"5014:14:20","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5023:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"5026:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5019:3:20"},"nodeType":"YulFunctionCall","src":"5019:9:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5014:1:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2429,"isOffset":false,"isSlot":false,"src":"4984:3:20","valueSize":1},{"declaration":2429,"isOffset":false,"isSlot":false,"src":"4994:3:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"4948:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5014:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5026:1:20","valueSize":1}],"id":2433,"nodeType":"InlineAssembly","src":"4906:132:20"},{"AST":{"nodeType":"YulBlock","src":"5056:115:20","statements":[{"nodeType":"YulVariableDeclaration","src":"5070:34:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5083:1:20","type":"","value":"5"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5089:1:20"},{"kind":"number","nodeType":"YulLiteral","src":"5092:10:20","type":"","value":"0xFFFFFFFF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5086:2:20"},"nodeType":"YulFunctionCall","src":"5086:17:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5079:3:20"},"nodeType":"YulFunctionCall","src":"5079:25:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5074:1:20","type":""}]},{"nodeType":"YulAssignment","src":"5117:17:20","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5127:3:20"},{"name":"f","nodeType":"YulIdentifier","src":"5132:1:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5124:2:20"},"nodeType":"YulFunctionCall","src":"5124:10:20"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5117:3:20"}]},{"nodeType":"YulAssignment","src":"5147:14:20","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5156:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"5159:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5152:3:20"},"nodeType":"YulFunctionCall","src":"5152:9:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5147:1:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2429,"isOffset":false,"isSlot":false,"src":"5117:3:20","valueSize":1},{"declaration":2429,"isOffset":false,"isSlot":false,"src":"5127:3:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5089:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5147:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5159:1:20","valueSize":1}],"id":2434,"nodeType":"InlineAssembly","src":"5047:124:20"},{"AST":{"nodeType":"YulBlock","src":"5189:111:20","statements":[{"nodeType":"YulVariableDeclaration","src":"5203:30:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5216:1:20","type":"","value":"4"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5222:1:20"},{"kind":"number","nodeType":"YulLiteral","src":"5225:6:20","type":"","value":"0xFFFF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5219:2:20"},"nodeType":"YulFunctionCall","src":"5219:13:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5212:3:20"},"nodeType":"YulFunctionCall","src":"5212:21:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5207:1:20","type":""}]},{"nodeType":"YulAssignment","src":"5246:17:20","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5256:3:20"},{"name":"f","nodeType":"YulIdentifier","src":"5261:1:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5253:2:20"},"nodeType":"YulFunctionCall","src":"5253:10:20"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5246:3:20"}]},{"nodeType":"YulAssignment","src":"5276:14:20","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5285:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"5288:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5281:3:20"},"nodeType":"YulFunctionCall","src":"5281:9:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5276:1:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2429,"isOffset":false,"isSlot":false,"src":"5246:3:20","valueSize":1},{"declaration":2429,"isOffset":false,"isSlot":false,"src":"5256:3:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5222:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5276:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5288:1:20","valueSize":1}],"id":2435,"nodeType":"InlineAssembly","src":"5180:120:20"},{"AST":{"nodeType":"YulBlock","src":"5318:109:20","statements":[{"nodeType":"YulVariableDeclaration","src":"5332:28:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5345:1:20","type":"","value":"3"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5351:1:20"},{"kind":"number","nodeType":"YulLiteral","src":"5354:4:20","type":"","value":"0xFF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5348:2:20"},"nodeType":"YulFunctionCall","src":"5348:11:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5341:3:20"},"nodeType":"YulFunctionCall","src":"5341:19:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5336:1:20","type":""}]},{"nodeType":"YulAssignment","src":"5373:17:20","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5383:3:20"},{"name":"f","nodeType":"YulIdentifier","src":"5388:1:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5380:2:20"},"nodeType":"YulFunctionCall","src":"5380:10:20"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5373:3:20"}]},{"nodeType":"YulAssignment","src":"5403:14:20","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5412:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"5415:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5408:3:20"},"nodeType":"YulFunctionCall","src":"5408:9:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5403:1:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2429,"isOffset":false,"isSlot":false,"src":"5373:3:20","valueSize":1},{"declaration":2429,"isOffset":false,"isSlot":false,"src":"5383:3:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5351:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5403:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5415:1:20","valueSize":1}],"id":2436,"nodeType":"InlineAssembly","src":"5309:118:20"},{"AST":{"nodeType":"YulBlock","src":"5445:108:20","statements":[{"nodeType":"YulVariableDeclaration","src":"5459:27:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5472:1:20","type":"","value":"2"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5478:1:20"},{"kind":"number","nodeType":"YulLiteral","src":"5481:3:20","type":"","value":"0xF"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5475:2:20"},"nodeType":"YulFunctionCall","src":"5475:10:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5468:3:20"},"nodeType":"YulFunctionCall","src":"5468:18:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5463:1:20","type":""}]},{"nodeType":"YulAssignment","src":"5499:17:20","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5509:3:20"},{"name":"f","nodeType":"YulIdentifier","src":"5514:1:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5506:2:20"},"nodeType":"YulFunctionCall","src":"5506:10:20"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5499:3:20"}]},{"nodeType":"YulAssignment","src":"5529:14:20","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5538:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"5541:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5534:3:20"},"nodeType":"YulFunctionCall","src":"5534:9:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5529:1:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2429,"isOffset":false,"isSlot":false,"src":"5499:3:20","valueSize":1},{"declaration":2429,"isOffset":false,"isSlot":false,"src":"5509:3:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5478:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5529:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5541:1:20","valueSize":1}],"id":2437,"nodeType":"InlineAssembly","src":"5436:117:20"},{"AST":{"nodeType":"YulBlock","src":"5571:108:20","statements":[{"nodeType":"YulVariableDeclaration","src":"5585:27:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5598:1:20","type":"","value":"1"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5604:1:20"},{"kind":"number","nodeType":"YulLiteral","src":"5607:3:20","type":"","value":"0x3"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5601:2:20"},"nodeType":"YulFunctionCall","src":"5601:10:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5594:3:20"},"nodeType":"YulFunctionCall","src":"5594:18:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5589:1:20","type":""}]},{"nodeType":"YulAssignment","src":"5625:17:20","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5635:3:20"},{"name":"f","nodeType":"YulIdentifier","src":"5640:1:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5632:2:20"},"nodeType":"YulFunctionCall","src":"5632:10:20"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5625:3:20"}]},{"nodeType":"YulAssignment","src":"5655:14:20","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"5664:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"5667:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5660:3:20"},"nodeType":"YulFunctionCall","src":"5660:9:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5655:1:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2429,"isOffset":false,"isSlot":false,"src":"5625:3:20","valueSize":1},{"declaration":2429,"isOffset":false,"isSlot":false,"src":"5635:3:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5604:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5655:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5667:1:20","valueSize":1}],"id":2438,"nodeType":"InlineAssembly","src":"5562:117:20"},{"AST":{"nodeType":"YulBlock","src":"5697:73:20","statements":[{"nodeType":"YulVariableDeclaration","src":"5711:19:20","value":{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5723:1:20"},{"kind":"number","nodeType":"YulLiteral","src":"5726:3:20","type":"","value":"0x1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5720:2:20"},"nodeType":"YulFunctionCall","src":"5720:10:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5715:1:20","type":""}]},{"nodeType":"YulAssignment","src":"5743:17:20","value":{"arguments":[{"name":"msb","nodeType":"YulIdentifier","src":"5753:3:20"},{"name":"f","nodeType":"YulIdentifier","src":"5758:1:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5750:2:20"},"nodeType":"YulFunctionCall","src":"5750:10:20"},"variableNames":[{"name":"msb","nodeType":"YulIdentifier","src":"5743:3:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2429,"isOffset":false,"isSlot":false,"src":"5743:3:20","valueSize":1},{"declaration":2429,"isOffset":false,"isSlot":false,"src":"5753:3:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5723:1:20","valueSize":1}],"id":2439,"nodeType":"InlineAssembly","src":"5688:82:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2440,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2429,"src":"5784:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"313238","id":2441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5791:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"5784:10:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"id":2459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2452,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2425,"src":"5835:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2453,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2416,"src":"5839:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"313237","id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5849:3:20","typeDescriptions":{"typeIdentifier":"t_rational_127_by_1","typeString":"int_const 127"},"value":"127"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2455,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2429,"src":"5855:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5849:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5848:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5839:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5835:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2460,"nodeType":"ExpressionStatement","src":"5835:24:20"},"id":2461,"nodeType":"IfStatement","src":"5780:79:20","trueBody":{"expression":{"id":2450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2443,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2425,"src":"5796:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2416,"src":"5800:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2445,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2429,"src":"5810:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"313237","id":2446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5816:3:20","typeDescriptions":{"typeIdentifier":"t_rational_127_by_1","typeString":"int_const 127"},"value":"127"},"src":"5810:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2448,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5809:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5800:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5796:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2451,"nodeType":"ExpressionStatement","src":"5796:24:20"}},{"assignments":[2463],"declarations":[{"constant":false,"id":2463,"mutability":"mutable","name":"log_2","nodeType":"VariableDeclaration","scope":2534,"src":"5870:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2462,"name":"int256","nodeType":"ElementaryTypeName","src":"5870:6:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":2473,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2466,"name":"msb","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2429,"src":"5893:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5886:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":2464,"name":"int256","nodeType":"ElementaryTypeName","src":"5886:6:20","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5886:11:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"313238","id":2468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5900:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"5886:17:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2470,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5885:19:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":2471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5908:2:20","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"5885:25:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"5870:40:20"},{"AST":{"nodeType":"YulBlock","src":"5930:151:20","statements":[{"nodeType":"YulAssignment","src":"5944:24:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5953:3:20","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"5962:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"5965:1:20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"5958:3:20"},"nodeType":"YulFunctionCall","src":"5958:9:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5949:3:20"},"nodeType":"YulFunctionCall","src":"5949:19:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"5944:1:20"}]},{"nodeType":"YulVariableDeclaration","src":"5981:20:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5994:3:20","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"5999:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5990:3:20"},"nodeType":"YulFunctionCall","src":"5990:11:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"5985:1:20","type":""}]},{"nodeType":"YulAssignment","src":"6014:30:20","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6026:5:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6037:2:20","type":"","value":"63"},{"name":"f","nodeType":"YulIdentifier","src":"6041:1:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6033:3:20"},"nodeType":"YulFunctionCall","src":"6033:10:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6023:2:20"},"nodeType":"YulFunctionCall","src":"6023:21:20"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6014:5:20"}]},{"nodeType":"YulAssignment","src":"6057:14:20","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6066:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"6069:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6062:3:20"},"nodeType":"YulFunctionCall","src":"6062:9:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6057:1:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2463,"isOffset":false,"isSlot":false,"src":"6014:5:20","valueSize":1},{"declaration":2463,"isOffset":false,"isSlot":false,"src":"6026:5:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5944:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5962:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5965:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"5999:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6057:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6069:1:20","valueSize":1}],"id":2474,"nodeType":"InlineAssembly","src":"5921:160:20"},{"AST":{"nodeType":"YulBlock","src":"6099:151:20","statements":[{"nodeType":"YulAssignment","src":"6113:24:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6122:3:20","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6131:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"6134:1:20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6127:3:20"},"nodeType":"YulFunctionCall","src":"6127:9:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6118:3:20"},"nodeType":"YulFunctionCall","src":"6118:19:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6113:1:20"}]},{"nodeType":"YulVariableDeclaration","src":"6150:20:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6163:3:20","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6168:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6159:3:20"},"nodeType":"YulFunctionCall","src":"6159:11:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6154:1:20","type":""}]},{"nodeType":"YulAssignment","src":"6183:30:20","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6195:5:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6206:2:20","type":"","value":"62"},{"name":"f","nodeType":"YulIdentifier","src":"6210:1:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6202:3:20"},"nodeType":"YulFunctionCall","src":"6202:10:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6192:2:20"},"nodeType":"YulFunctionCall","src":"6192:21:20"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6183:5:20"}]},{"nodeType":"YulAssignment","src":"6226:14:20","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6235:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"6238:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6231:3:20"},"nodeType":"YulFunctionCall","src":"6231:9:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6226:1:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2463,"isOffset":false,"isSlot":false,"src":"6183:5:20","valueSize":1},{"declaration":2463,"isOffset":false,"isSlot":false,"src":"6195:5:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6113:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6131:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6134:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6168:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6226:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6238:1:20","valueSize":1}],"id":2475,"nodeType":"InlineAssembly","src":"6090:160:20"},{"AST":{"nodeType":"YulBlock","src":"6268:151:20","statements":[{"nodeType":"YulAssignment","src":"6282:24:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6291:3:20","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6300:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"6303:1:20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6296:3:20"},"nodeType":"YulFunctionCall","src":"6296:9:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6287:3:20"},"nodeType":"YulFunctionCall","src":"6287:19:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6282:1:20"}]},{"nodeType":"YulVariableDeclaration","src":"6319:20:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6332:3:20","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6337:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6328:3:20"},"nodeType":"YulFunctionCall","src":"6328:11:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6323:1:20","type":""}]},{"nodeType":"YulAssignment","src":"6352:30:20","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6364:5:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6375:2:20","type":"","value":"61"},{"name":"f","nodeType":"YulIdentifier","src":"6379:1:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6371:3:20"},"nodeType":"YulFunctionCall","src":"6371:10:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6361:2:20"},"nodeType":"YulFunctionCall","src":"6361:21:20"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6352:5:20"}]},{"nodeType":"YulAssignment","src":"6395:14:20","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6404:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"6407:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6400:3:20"},"nodeType":"YulFunctionCall","src":"6400:9:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6395:1:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2463,"isOffset":false,"isSlot":false,"src":"6352:5:20","valueSize":1},{"declaration":2463,"isOffset":false,"isSlot":false,"src":"6364:5:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6282:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6300:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6303:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6337:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6395:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6407:1:20","valueSize":1}],"id":2476,"nodeType":"InlineAssembly","src":"6259:160:20"},{"AST":{"nodeType":"YulBlock","src":"6437:151:20","statements":[{"nodeType":"YulAssignment","src":"6451:24:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6460:3:20","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6469:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"6472:1:20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6465:3:20"},"nodeType":"YulFunctionCall","src":"6465:9:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6456:3:20"},"nodeType":"YulFunctionCall","src":"6456:19:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6451:1:20"}]},{"nodeType":"YulVariableDeclaration","src":"6488:20:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6501:3:20","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6506:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6497:3:20"},"nodeType":"YulFunctionCall","src":"6497:11:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6492:1:20","type":""}]},{"nodeType":"YulAssignment","src":"6521:30:20","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6533:5:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6544:2:20","type":"","value":"60"},{"name":"f","nodeType":"YulIdentifier","src":"6548:1:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6540:3:20"},"nodeType":"YulFunctionCall","src":"6540:10:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6530:2:20"},"nodeType":"YulFunctionCall","src":"6530:21:20"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6521:5:20"}]},{"nodeType":"YulAssignment","src":"6564:14:20","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6573:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"6576:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6569:3:20"},"nodeType":"YulFunctionCall","src":"6569:9:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6564:1:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2463,"isOffset":false,"isSlot":false,"src":"6521:5:20","valueSize":1},{"declaration":2463,"isOffset":false,"isSlot":false,"src":"6533:5:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6451:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6469:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6472:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6506:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6564:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6576:1:20","valueSize":1}],"id":2477,"nodeType":"InlineAssembly","src":"6428:160:20"},{"AST":{"nodeType":"YulBlock","src":"6606:151:20","statements":[{"nodeType":"YulAssignment","src":"6620:24:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6629:3:20","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6638:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"6641:1:20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6634:3:20"},"nodeType":"YulFunctionCall","src":"6634:9:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6625:3:20"},"nodeType":"YulFunctionCall","src":"6625:19:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6620:1:20"}]},{"nodeType":"YulVariableDeclaration","src":"6657:20:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6670:3:20","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6675:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6666:3:20"},"nodeType":"YulFunctionCall","src":"6666:11:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6661:1:20","type":""}]},{"nodeType":"YulAssignment","src":"6690:30:20","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6702:5:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6713:2:20","type":"","value":"59"},{"name":"f","nodeType":"YulIdentifier","src":"6717:1:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6709:3:20"},"nodeType":"YulFunctionCall","src":"6709:10:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6699:2:20"},"nodeType":"YulFunctionCall","src":"6699:21:20"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6690:5:20"}]},{"nodeType":"YulAssignment","src":"6733:14:20","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6742:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"6745:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6738:3:20"},"nodeType":"YulFunctionCall","src":"6738:9:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6733:1:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2463,"isOffset":false,"isSlot":false,"src":"6690:5:20","valueSize":1},{"declaration":2463,"isOffset":false,"isSlot":false,"src":"6702:5:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6620:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6638:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6641:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6675:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6733:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6745:1:20","valueSize":1}],"id":2478,"nodeType":"InlineAssembly","src":"6597:160:20"},{"AST":{"nodeType":"YulBlock","src":"6775:151:20","statements":[{"nodeType":"YulAssignment","src":"6789:24:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6798:3:20","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6807:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"6810:1:20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6803:3:20"},"nodeType":"YulFunctionCall","src":"6803:9:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6794:3:20"},"nodeType":"YulFunctionCall","src":"6794:19:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6789:1:20"}]},{"nodeType":"YulVariableDeclaration","src":"6826:20:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6839:3:20","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"6844:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6835:3:20"},"nodeType":"YulFunctionCall","src":"6835:11:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6830:1:20","type":""}]},{"nodeType":"YulAssignment","src":"6859:30:20","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"6871:5:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6882:2:20","type":"","value":"58"},{"name":"f","nodeType":"YulIdentifier","src":"6886:1:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6878:3:20"},"nodeType":"YulFunctionCall","src":"6878:10:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6868:2:20"},"nodeType":"YulFunctionCall","src":"6868:21:20"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"6859:5:20"}]},{"nodeType":"YulAssignment","src":"6902:14:20","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"6911:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"6914:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6907:3:20"},"nodeType":"YulFunctionCall","src":"6907:9:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6902:1:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2463,"isOffset":false,"isSlot":false,"src":"6859:5:20","valueSize":1},{"declaration":2463,"isOffset":false,"isSlot":false,"src":"6871:5:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6789:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6807:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6810:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6844:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6902:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6914:1:20","valueSize":1}],"id":2479,"nodeType":"InlineAssembly","src":"6766:160:20"},{"AST":{"nodeType":"YulBlock","src":"6944:151:20","statements":[{"nodeType":"YulAssignment","src":"6958:24:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6967:3:20","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"6976:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"6979:1:20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6972:3:20"},"nodeType":"YulFunctionCall","src":"6972:9:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6963:3:20"},"nodeType":"YulFunctionCall","src":"6963:19:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6958:1:20"}]},{"nodeType":"YulVariableDeclaration","src":"6995:20:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7008:3:20","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"7013:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7004:3:20"},"nodeType":"YulFunctionCall","src":"7004:11:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"6999:1:20","type":""}]},{"nodeType":"YulAssignment","src":"7028:30:20","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7040:5:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7051:2:20","type":"","value":"57"},{"name":"f","nodeType":"YulIdentifier","src":"7055:1:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7047:3:20"},"nodeType":"YulFunctionCall","src":"7047:10:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7037:2:20"},"nodeType":"YulFunctionCall","src":"7037:21:20"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7028:5:20"}]},{"nodeType":"YulAssignment","src":"7071:14:20","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7080:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"7083:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7076:3:20"},"nodeType":"YulFunctionCall","src":"7076:9:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7071:1:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2463,"isOffset":false,"isSlot":false,"src":"7028:5:20","valueSize":1},{"declaration":2463,"isOffset":false,"isSlot":false,"src":"7040:5:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6958:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6976:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"6979:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7013:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7071:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7083:1:20","valueSize":1}],"id":2480,"nodeType":"InlineAssembly","src":"6935:160:20"},{"AST":{"nodeType":"YulBlock","src":"7113:151:20","statements":[{"nodeType":"YulAssignment","src":"7127:24:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7136:3:20","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7145:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"7148:1:20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7141:3:20"},"nodeType":"YulFunctionCall","src":"7141:9:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7132:3:20"},"nodeType":"YulFunctionCall","src":"7132:19:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7127:1:20"}]},{"nodeType":"YulVariableDeclaration","src":"7164:20:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7177:3:20","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"7182:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7173:3:20"},"nodeType":"YulFunctionCall","src":"7173:11:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"7168:1:20","type":""}]},{"nodeType":"YulAssignment","src":"7197:30:20","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7209:5:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7220:2:20","type":"","value":"56"},{"name":"f","nodeType":"YulIdentifier","src":"7224:1:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7216:3:20"},"nodeType":"YulFunctionCall","src":"7216:10:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7206:2:20"},"nodeType":"YulFunctionCall","src":"7206:21:20"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7197:5:20"}]},{"nodeType":"YulAssignment","src":"7240:14:20","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7249:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"7252:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7245:3:20"},"nodeType":"YulFunctionCall","src":"7245:9:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7240:1:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2463,"isOffset":false,"isSlot":false,"src":"7197:5:20","valueSize":1},{"declaration":2463,"isOffset":false,"isSlot":false,"src":"7209:5:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7127:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7145:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7148:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7182:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7240:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7252:1:20","valueSize":1}],"id":2481,"nodeType":"InlineAssembly","src":"7104:160:20"},{"AST":{"nodeType":"YulBlock","src":"7282:151:20","statements":[{"nodeType":"YulAssignment","src":"7296:24:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7305:3:20","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7314:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"7317:1:20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7310:3:20"},"nodeType":"YulFunctionCall","src":"7310:9:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7301:3:20"},"nodeType":"YulFunctionCall","src":"7301:19:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7296:1:20"}]},{"nodeType":"YulVariableDeclaration","src":"7333:20:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7346:3:20","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"7351:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7342:3:20"},"nodeType":"YulFunctionCall","src":"7342:11:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"7337:1:20","type":""}]},{"nodeType":"YulAssignment","src":"7366:30:20","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7378:5:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7389:2:20","type":"","value":"55"},{"name":"f","nodeType":"YulIdentifier","src":"7393:1:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7385:3:20"},"nodeType":"YulFunctionCall","src":"7385:10:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7375:2:20"},"nodeType":"YulFunctionCall","src":"7375:21:20"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7366:5:20"}]},{"nodeType":"YulAssignment","src":"7409:14:20","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7418:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"7421:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7414:3:20"},"nodeType":"YulFunctionCall","src":"7414:9:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7409:1:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2463,"isOffset":false,"isSlot":false,"src":"7366:5:20","valueSize":1},{"declaration":2463,"isOffset":false,"isSlot":false,"src":"7378:5:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7296:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7314:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7317:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7351:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7409:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7421:1:20","valueSize":1}],"id":2482,"nodeType":"InlineAssembly","src":"7273:160:20"},{"AST":{"nodeType":"YulBlock","src":"7451:151:20","statements":[{"nodeType":"YulAssignment","src":"7465:24:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7474:3:20","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7483:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"7486:1:20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7479:3:20"},"nodeType":"YulFunctionCall","src":"7479:9:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7470:3:20"},"nodeType":"YulFunctionCall","src":"7470:19:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7465:1:20"}]},{"nodeType":"YulVariableDeclaration","src":"7502:20:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7515:3:20","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"7520:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7511:3:20"},"nodeType":"YulFunctionCall","src":"7511:11:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"7506:1:20","type":""}]},{"nodeType":"YulAssignment","src":"7535:30:20","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7547:5:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7558:2:20","type":"","value":"54"},{"name":"f","nodeType":"YulIdentifier","src":"7562:1:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7554:3:20"},"nodeType":"YulFunctionCall","src":"7554:10:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7544:2:20"},"nodeType":"YulFunctionCall","src":"7544:21:20"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7535:5:20"}]},{"nodeType":"YulAssignment","src":"7578:14:20","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7587:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"7590:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7583:3:20"},"nodeType":"YulFunctionCall","src":"7583:9:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7578:1:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2463,"isOffset":false,"isSlot":false,"src":"7535:5:20","valueSize":1},{"declaration":2463,"isOffset":false,"isSlot":false,"src":"7547:5:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7465:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7483:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7486:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7520:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7578:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7590:1:20","valueSize":1}],"id":2483,"nodeType":"InlineAssembly","src":"7442:160:20"},{"AST":{"nodeType":"YulBlock","src":"7620:151:20","statements":[{"nodeType":"YulAssignment","src":"7634:24:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7643:3:20","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7652:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"7655:1:20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7648:3:20"},"nodeType":"YulFunctionCall","src":"7648:9:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7639:3:20"},"nodeType":"YulFunctionCall","src":"7639:19:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7634:1:20"}]},{"nodeType":"YulVariableDeclaration","src":"7671:20:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7684:3:20","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"7689:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7680:3:20"},"nodeType":"YulFunctionCall","src":"7680:11:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"7675:1:20","type":""}]},{"nodeType":"YulAssignment","src":"7704:30:20","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7716:5:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7727:2:20","type":"","value":"53"},{"name":"f","nodeType":"YulIdentifier","src":"7731:1:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7723:3:20"},"nodeType":"YulFunctionCall","src":"7723:10:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7713:2:20"},"nodeType":"YulFunctionCall","src":"7713:21:20"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7704:5:20"}]},{"nodeType":"YulAssignment","src":"7747:14:20","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7756:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"7759:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7752:3:20"},"nodeType":"YulFunctionCall","src":"7752:9:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7747:1:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2463,"isOffset":false,"isSlot":false,"src":"7704:5:20","valueSize":1},{"declaration":2463,"isOffset":false,"isSlot":false,"src":"7716:5:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7634:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7652:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7655:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7689:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7747:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7759:1:20","valueSize":1}],"id":2484,"nodeType":"InlineAssembly","src":"7611:160:20"},{"AST":{"nodeType":"YulBlock","src":"7789:151:20","statements":[{"nodeType":"YulAssignment","src":"7803:24:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7812:3:20","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7821:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"7824:1:20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7817:3:20"},"nodeType":"YulFunctionCall","src":"7817:9:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7808:3:20"},"nodeType":"YulFunctionCall","src":"7808:19:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7803:1:20"}]},{"nodeType":"YulVariableDeclaration","src":"7840:20:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7853:3:20","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"7858:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7849:3:20"},"nodeType":"YulFunctionCall","src":"7849:11:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"7844:1:20","type":""}]},{"nodeType":"YulAssignment","src":"7873:30:20","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"7885:5:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7896:2:20","type":"","value":"52"},{"name":"f","nodeType":"YulIdentifier","src":"7900:1:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7892:3:20"},"nodeType":"YulFunctionCall","src":"7892:10:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7882:2:20"},"nodeType":"YulFunctionCall","src":"7882:21:20"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"7873:5:20"}]},{"nodeType":"YulAssignment","src":"7916:14:20","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"7925:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"7928:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7921:3:20"},"nodeType":"YulFunctionCall","src":"7921:9:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7916:1:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2463,"isOffset":false,"isSlot":false,"src":"7873:5:20","valueSize":1},{"declaration":2463,"isOffset":false,"isSlot":false,"src":"7885:5:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7803:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7821:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7824:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7858:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7916:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7928:1:20","valueSize":1}],"id":2485,"nodeType":"InlineAssembly","src":"7780:160:20"},{"AST":{"nodeType":"YulBlock","src":"7958:151:20","statements":[{"nodeType":"YulAssignment","src":"7972:24:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7981:3:20","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"7990:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"7993:1:20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7986:3:20"},"nodeType":"YulFunctionCall","src":"7986:9:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7977:3:20"},"nodeType":"YulFunctionCall","src":"7977:19:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"7972:1:20"}]},{"nodeType":"YulVariableDeclaration","src":"8009:20:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8022:3:20","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"8027:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8018:3:20"},"nodeType":"YulFunctionCall","src":"8018:11:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"8013:1:20","type":""}]},{"nodeType":"YulAssignment","src":"8042:30:20","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"8054:5:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8065:2:20","type":"","value":"51"},{"name":"f","nodeType":"YulIdentifier","src":"8069:1:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8061:3:20"},"nodeType":"YulFunctionCall","src":"8061:10:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"8051:2:20"},"nodeType":"YulFunctionCall","src":"8051:21:20"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"8042:5:20"}]},{"nodeType":"YulAssignment","src":"8085:14:20","value":{"arguments":[{"name":"f","nodeType":"YulIdentifier","src":"8094:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"8097:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8090:3:20"},"nodeType":"YulFunctionCall","src":"8090:9:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"8085:1:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2463,"isOffset":false,"isSlot":false,"src":"8042:5:20","valueSize":1},{"declaration":2463,"isOffset":false,"isSlot":false,"src":"8054:5:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7972:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7990:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"7993:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"8027:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"8085:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"8097:1:20","valueSize":1}],"id":2486,"nodeType":"InlineAssembly","src":"7949:160:20"},{"AST":{"nodeType":"YulBlock","src":"8127:124:20","statements":[{"nodeType":"YulAssignment","src":"8141:24:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8150:3:20","type":"","value":"127"},{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"8159:1:20"},{"name":"r","nodeType":"YulIdentifier","src":"8162:1:20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"8155:3:20"},"nodeType":"YulFunctionCall","src":"8155:9:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8146:3:20"},"nodeType":"YulFunctionCall","src":"8146:19:20"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"8141:1:20"}]},{"nodeType":"YulVariableDeclaration","src":"8178:20:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8191:3:20","type":"","value":"128"},{"name":"r","nodeType":"YulIdentifier","src":"8196:1:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8187:3:20"},"nodeType":"YulFunctionCall","src":"8187:11:20"},"variables":[{"name":"f","nodeType":"YulTypedName","src":"8182:1:20","type":""}]},{"nodeType":"YulAssignment","src":"8211:30:20","value":{"arguments":[{"name":"log_2","nodeType":"YulIdentifier","src":"8223:5:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8234:2:20","type":"","value":"50"},{"name":"f","nodeType":"YulIdentifier","src":"8238:1:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8230:3:20"},"nodeType":"YulFunctionCall","src":"8230:10:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"8220:2:20"},"nodeType":"YulFunctionCall","src":"8220:21:20"},"variableNames":[{"name":"log_2","nodeType":"YulIdentifier","src":"8211:5:20"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2463,"isOffset":false,"isSlot":false,"src":"8211:5:20","valueSize":1},{"declaration":2463,"isOffset":false,"isSlot":false,"src":"8223:5:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"8141:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"8159:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"8162:1:20","valueSize":1},{"declaration":2425,"isOffset":false,"isSlot":false,"src":"8196:1:20","valueSize":1}],"id":2487,"nodeType":"InlineAssembly","src":"8118:133:20"},{"assignments":[2489],"declarations":[{"constant":false,"id":2489,"mutability":"mutable","name":"log_sqrt10001","nodeType":"VariableDeclaration","scope":2534,"src":"8261:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2488,"name":"int256","nodeType":"ElementaryTypeName","src":"8261:6:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":2493,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2490,"name":"log_2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2463,"src":"8284:5:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"323535373338393538393939363033383236333437313431","id":2491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8292:24:20","typeDescriptions":{"typeIdentifier":"t_rational_255738958999603826347141_by_1","typeString":"int_const 255738958999603826347141"},"value":"255738958999603826347141"},"src":"8284:32:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"8261:55:20"},{"assignments":[2495],"declarations":[{"constant":false,"id":2495,"mutability":"mutable","name":"tickLow","nodeType":"VariableDeclaration","scope":2534,"src":"8345:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":2494,"name":"int24","nodeType":"ElementaryTypeName","src":"8345:5:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":2505,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2498,"name":"log_sqrt10001","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2489,"src":"8368:13:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"33343032393932393536383039313332343138353936313430313030363630323437323130","id":2499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8384:37:20","typeDescriptions":{"typeIdentifier":"t_rational_3402992956809132418596140100660247210_by_1","typeString":"int_const 3402...(29 digits omitted)...7210"},"value":"3402992956809132418596140100660247210"},"src":"8368:53:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2501,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8367:55:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8426:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8367:62:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8361:5:20","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":2496,"name":"int24","nodeType":"ElementaryTypeName","src":"8361:5:20","typeDescriptions":{}}},"id":2504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8361:69:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"8345:85:20"},{"assignments":[2507],"declarations":[{"constant":false,"id":2507,"mutability":"mutable","name":"tickHi","nodeType":"VariableDeclaration","scope":2534,"src":"8440:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":2506,"name":"int24","nodeType":"ElementaryTypeName","src":"8440:5:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":2517,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2510,"name":"log_sqrt10001","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2489,"src":"8462:13:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"323931333339343634373731393839363232393037303237363231313533333938303838343935","id":2511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8478:39:20","typeDescriptions":{"typeIdentifier":"t_rational_291339464771989622907027621153398088495_by_1","typeString":"int_const 2913...(31 digits omitted)...8495"},"value":"291339464771989622907027621153398088495"},"src":"8462:55:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2513,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8461:57:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8522:3:20","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8461:64:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2509,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8455:5:20","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":2508,"name":"int24","nodeType":"ElementaryTypeName","src":"8455:5:20","typeDescriptions":{}}},"id":2516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8455:71:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"8440:86:20"},{"expression":{"id":2532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2518,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2402,"src":"8537:4:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":2521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2519,"name":"tickLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2495,"src":"8544:7:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2520,"name":"tickHi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2507,"src":"8555:6:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"8544:17:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":2527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2524,"name":"tickHi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2507,"src":"8617:6:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":2523,"name":"getSqrtRatioAtTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2396,"src":"8598:18:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":2525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8598:26:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":2526,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2399,"src":"8628:12:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"8598:42:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2529,"name":"tickLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2495,"src":"8684:7:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":2530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8598:93:20","trueExpression":{"id":2528,"name":"tickHi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2507,"src":"8659:6:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":2531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8544:147:20","trueExpression":{"id":2522,"name":"tickLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2495,"src":"8576:7:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"8537:154:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":2533,"nodeType":"ExpressionStatement","src":"8537:154:20"}]},"documentation":{"id":2397,"nodeType":"StructuredDocumentation","src":"3948:408:20","text":"@notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio\n @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\n ever return.\n @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96\n @return tick The greatest tick for which the ratio is less than or equal to the input ratio"},"id":2535,"implemented":true,"kind":"function","modifiers":[],"name":"getTickAtSqrtRatio","nodeType":"FunctionDefinition","parameters":{"id":2400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2399,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":2535,"src":"4389:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2398,"name":"uint160","nodeType":"ElementaryTypeName","src":"4389:7:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"4388:22:20"},"returnParameters":{"id":2403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2402,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":2535,"src":"4434:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":2401,"name":"int24","nodeType":"ElementaryTypeName","src":"4434:5:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"4433:12:20"},"scope":2536,"src":"4361:4337:20","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2537,"src":"313:8387:20"}],"src":"45:8656:20"},"id":20},"@airdao/astra-cl-core/contracts/libraries/UnsafeMath.sol":{"ast":{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/UnsafeMath.sol","exportedSymbols":{"UnsafeMath":[2552]},"id":2553,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2538,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:21"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"71:173:21","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":2552,"linearizedBaseContracts":[2552],"name":"UnsafeMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":2550,"nodeType":"Block","src":"571:86:21","statements":[{"AST":{"nodeType":"YulBlock","src":"590:61:21","statements":[{"nodeType":"YulAssignment","src":"604:37:21","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"617:1:21"},{"name":"y","nodeType":"YulIdentifier","src":"620:1:21"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"613:3:21"},"nodeType":"YulFunctionCall","src":"613:9:21"},{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"631:1:21"},{"name":"y","nodeType":"YulIdentifier","src":"634:1:21"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"627:3:21"},"nodeType":"YulFunctionCall","src":"627:9:21"},{"kind":"number","nodeType":"YulLiteral","src":"638:1:21","type":"","value":"0"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"624:2:21"},"nodeType":"YulFunctionCall","src":"624:16:21"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"609:3:21"},"nodeType":"YulFunctionCall","src":"609:32:21"},"variableNames":[{"name":"z","nodeType":"YulIdentifier","src":"604:1:21"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2542,"isOffset":false,"isSlot":false,"src":"617:1:21","valueSize":1},{"declaration":2542,"isOffset":false,"isSlot":false,"src":"631:1:21","valueSize":1},{"declaration":2544,"isOffset":false,"isSlot":false,"src":"620:1:21","valueSize":1},{"declaration":2544,"isOffset":false,"isSlot":false,"src":"634:1:21","valueSize":1},{"declaration":2547,"isOffset":false,"isSlot":false,"src":"604:1:21","valueSize":1}],"id":2549,"nodeType":"InlineAssembly","src":"581:70:21"}]},"documentation":{"id":2540,"nodeType":"StructuredDocumentation","src":"269:218:21","text":"@notice Returns ceil(x / y)\n @dev division by 0 has unspecified behavior, and must be checked externally\n @param x The dividend\n @param y The divisor\n @return z The quotient, ceil(x / y)"},"id":2551,"implemented":true,"kind":"function","modifiers":[],"name":"divRoundingUp","nodeType":"FunctionDefinition","parameters":{"id":2545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2542,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":2551,"src":"515:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2541,"name":"uint256","nodeType":"ElementaryTypeName","src":"515:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2544,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":2551,"src":"526:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2543,"name":"uint256","nodeType":"ElementaryTypeName","src":"526:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"514:22:21"},"returnParameters":{"id":2548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2547,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":2551,"src":"560:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2546,"name":"uint256","nodeType":"ElementaryTypeName","src":"560:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"559:11:21"},"scope":2552,"src":"492:165:21","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2553,"src":"244:415:21"}],"src":"45:615:21"},"id":21},"@openzeppelin/contracts/cryptography/ECDSA.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/cryptography/ECDSA.sol","exportedSymbols":{"ECDSA":[2668]},"id":2669,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2554,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:22"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":2555,"nodeType":"StructuredDocumentation","src":"58:205:22","text":" @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n These functions can be used to verify that a message was signed by the holder\n of the private keys of a given address."},"fullyImplemented":true,"id":2668,"linearizedBaseContracts":[2668],"name":"ECDSA","nodeType":"ContractDefinition","nodes":[{"body":{"id":2592,"nodeType":"Block","src":"1151:653:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2565,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2560,"src":"1203:9:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1203:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"3635","id":2567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1223:2:22","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"},"src":"1203:22:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2574,"nodeType":"IfStatement","src":"1199:94:22","trueBody":{"id":2573,"nodeType":"Block","src":"1227:66:22","statements":[{"expression":{"arguments":[{"hexValue":"45434453413a20696e76616c6964207369676e6174757265206c656e677468","id":2570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1248:33:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77","typeString":"literal_string \"ECDSA: invalid signature length\""},"value":"ECDSA: invalid signature length"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77","typeString":"literal_string \"ECDSA: invalid signature length\""}],"id":2569,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1241:6:22","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":2571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1241:41:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2572,"nodeType":"ExpressionStatement","src":"1241:41:22"}]}},{"assignments":[2576],"declarations":[{"constant":false,"id":2576,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":2592,"src":"1359:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2575,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1359:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2577,"nodeType":"VariableDeclarationStatement","src":"1359:9:22"},{"assignments":[2579],"declarations":[{"constant":false,"id":2579,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":2592,"src":"1378:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2578,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1378:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2580,"nodeType":"VariableDeclarationStatement","src":"1378:9:22"},{"assignments":[2582],"declarations":[{"constant":false,"id":2582,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":2592,"src":"1397:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2581,"name":"uint8","nodeType":"ElementaryTypeName","src":"1397:5:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":2583,"nodeType":"VariableDeclarationStatement","src":"1397:7:22"},{"AST":{"nodeType":"YulBlock","src":"1603:155:22","statements":[{"nodeType":"YulAssignment","src":"1617:32:22","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"1632:9:22"},{"kind":"number","nodeType":"YulLiteral","src":"1643:4:22","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1628:3:22"},"nodeType":"YulFunctionCall","src":"1628:20:22"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1622:5:22"},"nodeType":"YulFunctionCall","src":"1622:27:22"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"1617:1:22"}]},{"nodeType":"YulAssignment","src":"1662:32:22","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"1677:9:22"},{"kind":"number","nodeType":"YulLiteral","src":"1688:4:22","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1673:3:22"},"nodeType":"YulFunctionCall","src":"1673:20:22"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1667:5:22"},"nodeType":"YulFunctionCall","src":"1667:27:22"},"variableNames":[{"name":"s","nodeType":"YulIdentifier","src":"1662:1:22"}]},{"nodeType":"YulAssignment","src":"1707:41:22","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1717:1:22","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"1730:9:22"},{"kind":"number","nodeType":"YulLiteral","src":"1741:4:22","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1726:3:22"},"nodeType":"YulFunctionCall","src":"1726:20:22"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1720:5:22"},"nodeType":"YulFunctionCall","src":"1720:27:22"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"1712:4:22"},"nodeType":"YulFunctionCall","src":"1712:36:22"},"variableNames":[{"name":"v","nodeType":"YulIdentifier","src":"1707:1:22"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2576,"isOffset":false,"isSlot":false,"src":"1617:1:22","valueSize":1},{"declaration":2579,"isOffset":false,"isSlot":false,"src":"1662:1:22","valueSize":1},{"declaration":2560,"isOffset":false,"isSlot":false,"src":"1632:9:22","valueSize":1},{"declaration":2560,"isOffset":false,"isSlot":false,"src":"1677:9:22","valueSize":1},{"declaration":2560,"isOffset":false,"isSlot":false,"src":"1730:9:22","valueSize":1},{"declaration":2582,"isOffset":false,"isSlot":false,"src":"1707:1:22","valueSize":1}],"id":2584,"nodeType":"InlineAssembly","src":"1594:164:22"},{"expression":{"arguments":[{"id":2586,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2558,"src":"1783:4:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2587,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2582,"src":"1789:1:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2588,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2576,"src":"1792:1:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2589,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2579,"src":"1795:1:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2585,"name":"recover","nodeType":"Identifier","overloadedDeclarations":[2593,2650],"referencedDeclaration":2650,"src":"1775:7:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1775:22:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2564,"id":2591,"nodeType":"Return","src":"1768:29:22"}]},"documentation":{"id":2556,"nodeType":"StructuredDocumentation","src":"284:775:22","text":" @dev Returns the address that signed a hashed message (`hash`) with\n `signature`. This address can then be used for verification purposes.\n The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {toEthSignedMessageHash} on it."},"id":2593,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nodeType":"FunctionDefinition","parameters":{"id":2561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2558,"mutability":"mutable","name":"hash","nodeType":"VariableDeclaration","scope":2593,"src":"1081:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2557,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1081:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2560,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":2593,"src":"1095:22:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2559,"name":"bytes","nodeType":"ElementaryTypeName","src":"1095:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1080:38:22"},"returnParameters":{"id":2564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2563,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2593,"src":"1142:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"1142:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1141:9:22"},"scope":2668,"src":"1064:740:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2649,"nodeType":"Block","src":"2046:1320:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2610,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2602,"src":"2946:1:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2609,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2938:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2608,"name":"uint256","nodeType":"ElementaryTypeName","src":"2938:7:22","typeDescriptions":{}}},"id":2611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2938:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130","id":2612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2952:66:22","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1","typeString":"int_const 5789...(69 digits omitted)...7168"},"value":"0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"},"src":"2938:80:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45434453413a20696e76616c6964207369676e6174757265202773272076616c7565","id":2614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3020:36:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd","typeString":"literal_string \"ECDSA: invalid signature 's' value\""},"value":"ECDSA: invalid signature 's' value"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd","typeString":"literal_string \"ECDSA: invalid signature 's' value\""}],"id":2607,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2930:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2930:127:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2616,"nodeType":"ExpressionStatement","src":"2930:127:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2618,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2598,"src":"3075:1:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3237","id":2619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3080:2:22","typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"27"},"src":"3075:7:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2621,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2598,"src":"3086:1:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3238","id":2622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3091:2:22","typeDescriptions":{"typeIdentifier":"t_rational_28_by_1","typeString":"int_const 28"},"value":"28"},"src":"3086:7:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3075:18:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45434453413a20696e76616c6964207369676e6174757265202776272076616c7565","id":2625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3095:36:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4","typeString":"literal_string \"ECDSA: invalid signature 'v' value\""},"value":"ECDSA: invalid signature 'v' value"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4","typeString":"literal_string \"ECDSA: invalid signature 'v' value\""}],"id":2617,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3067:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3067:65:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2627,"nodeType":"ExpressionStatement","src":"3067:65:22"},{"assignments":[2629],"declarations":[{"constant":false,"id":2629,"mutability":"mutable","name":"signer","nodeType":"VariableDeclaration","scope":2649,"src":"3227:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2628,"name":"address","nodeType":"ElementaryTypeName","src":"3227:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2636,"initialValue":{"arguments":[{"id":2631,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2596,"src":"3254:4:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2632,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2598,"src":"3260:1:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2633,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2600,"src":"3263:1:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2634,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2602,"src":"3266:1:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2630,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"3244:9:22","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":2635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3244:24:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3227:41:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2638,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"3286:6:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3304: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":2640,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3296:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2639,"name":"address","nodeType":"ElementaryTypeName","src":"3296:7:22","typeDescriptions":{}}},"id":2642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3296:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3286:20:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45434453413a20696e76616c6964207369676e6174757265","id":2644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3308:26:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be","typeString":"literal_string \"ECDSA: invalid signature\""},"value":"ECDSA: invalid signature"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be","typeString":"literal_string \"ECDSA: invalid signature\""}],"id":2637,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3278:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3278:57:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2646,"nodeType":"ExpressionStatement","src":"3278:57:22"},{"expression":{"id":2647,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"3353:6:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2606,"id":2648,"nodeType":"Return","src":"3346:13:22"}]},"documentation":{"id":2594,"nodeType":"StructuredDocumentation","src":"1810:137:22","text":" @dev Overload of {ECDSA-recover-bytes32-bytes-} that receives the `v`,\n `r` and `s` signature fields separately."},"id":2650,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nodeType":"FunctionDefinition","parameters":{"id":2603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2596,"mutability":"mutable","name":"hash","nodeType":"VariableDeclaration","scope":2650,"src":"1969:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2595,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1969:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2598,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":2650,"src":"1983:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2597,"name":"uint8","nodeType":"ElementaryTypeName","src":"1983:5:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2600,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":2650,"src":"1992:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2599,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1992:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2602,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":2650,"src":"2003:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2601,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2003:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1968:45:22"},"returnParameters":{"id":2606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2605,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2650,"src":"2037:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2604,"name":"address","nodeType":"ElementaryTypeName","src":"2037:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2036:9:22"},"scope":2668,"src":"1952:1414:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2666,"nodeType":"Block","src":"3708:187:22","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a3332","id":2661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3846:34:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\""},"value":"\u0019Ethereum Signed Message:\n32"},{"id":2662,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2653,"src":"3882:4:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2659,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3829:3:22","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2660,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3829:16:22","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3829:58:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2658,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3819:9:22","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3819:69:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2657,"id":2665,"nodeType":"Return","src":"3812:76:22"}]},"documentation":{"id":2651,"nodeType":"StructuredDocumentation","src":"3372:253:22","text":" @dev Returns an Ethereum Signed Message, created from a `hash`. This\n replicates the behavior of the\n https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign[`eth_sign`]\n JSON-RPC method.\n See {recover}."},"id":2667,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nodeType":"FunctionDefinition","parameters":{"id":2654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2653,"mutability":"mutable","name":"hash","nodeType":"VariableDeclaration","scope":2667,"src":"3662:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2652,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3662:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3661:14:22"},"returnParameters":{"id":2657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2656,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2667,"src":"3699:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2655,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3699:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3698:9:22"},"scope":2668,"src":"3630:265:22","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2669,"src":"264:3633:22"}],"src":"33:3865:22"},"id":22},"@openzeppelin/contracts/drafts/EIP712.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/drafts/EIP712.sol","exportedSymbols":{"EIP712":[2817]},"id":2818,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2670,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:23"},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":2671,"nodeType":"StructuredDocumentation","src":"66:1142:23","text":" @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n they need in their contracts using a combination of `abi.encode` and `keccak256`.\n This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n ({_hashTypedDataV4}).\n The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n the chain id to protect against replay attacks on an eventual fork of the chain.\n NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n _Available since v3.4._"},"fullyImplemented":true,"id":2817,"linearizedBaseContracts":[2817],"name":"EIP712","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":2673,"mutability":"immutable","name":"_CACHED_DOMAIN_SEPARATOR","nodeType":"VariableDeclaration","scope":2817,"src":"1477:50:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2672,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1477:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":2675,"mutability":"immutable","name":"_CACHED_CHAIN_ID","nodeType":"VariableDeclaration","scope":2817,"src":"1533:42:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2674,"name":"uint256","nodeType":"ElementaryTypeName","src":"1533:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":2677,"mutability":"immutable","name":"_HASHED_NAME","nodeType":"VariableDeclaration","scope":2817,"src":"1582:38:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2676,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1582:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":2679,"mutability":"immutable","name":"_HASHED_VERSION","nodeType":"VariableDeclaration","scope":2817,"src":"1626:41:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2678,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1626:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":2681,"mutability":"immutable","name":"_TYPE_HASH","nodeType":"VariableDeclaration","scope":2817,"src":"1673:36:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2680,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1673:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":2738,"nodeType":"Block","src":"2379:487:23","statements":[{"assignments":[2690],"declarations":[{"constant":false,"id":2690,"mutability":"mutable","name":"hashedName","nodeType":"VariableDeclaration","scope":2738,"src":"2389:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2689,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2389:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2697,"initialValue":{"arguments":[{"arguments":[{"id":2694,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2684,"src":"2426:4:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2693,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2420:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2692,"name":"bytes","nodeType":"ElementaryTypeName","src":"2420:5:23","typeDescriptions":{}}},"id":2695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2420:11:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2691,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2410:9:23","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2410:22:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2389:43:23"},{"assignments":[2699],"declarations":[{"constant":false,"id":2699,"mutability":"mutable","name":"hashedVersion","nodeType":"VariableDeclaration","scope":2738,"src":"2442:21:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2698,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2442:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2706,"initialValue":{"arguments":[{"arguments":[{"id":2703,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"2482:7:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2702,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2476:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2701,"name":"bytes","nodeType":"ElementaryTypeName","src":"2476:5:23","typeDescriptions":{}}},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2476:14:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2700,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2466:9:23","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2466:25:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2442:49:23"},{"assignments":[2708],"declarations":[{"constant":false,"id":2708,"mutability":"mutable","name":"typeHash","nodeType":"VariableDeclaration","scope":2738,"src":"2501:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2707,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2501:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2712,"initialValue":{"arguments":[{"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":2710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2530:84:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""}],"id":2709,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2520:9:23","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2520:95:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2501:114:23"},{"expression":{"id":2715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2713,"name":"_HASHED_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"2625:12:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2714,"name":"hashedName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2690,"src":"2640:10:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2625:25:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2716,"nodeType":"ExpressionStatement","src":"2625:25:23"},{"expression":{"id":2719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2717,"name":"_HASHED_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2679,"src":"2660:15:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2718,"name":"hashedVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2699,"src":"2678:13:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2660:31:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2720,"nodeType":"ExpressionStatement","src":"2660:31:23"},{"expression":{"id":2724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2721,"name":"_CACHED_CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2675,"src":"2701:16:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":2722,"name":"_getChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2816,"src":"2720:11:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2720:13:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2701:32:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2725,"nodeType":"ExpressionStatement","src":"2701:32:23"},{"expression":{"id":2732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2726,"name":"_CACHED_DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2673,"src":"2743:24:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2728,"name":"typeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2708,"src":"2792:8:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2729,"name":"hashedName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2690,"src":"2802:10:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2730,"name":"hashedVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2699,"src":"2814:13:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2727,"name":"_buildDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"2770:21:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32,bytes32) view returns (bytes32)"}},"id":2731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2770:58:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2743:85:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2733,"nodeType":"ExpressionStatement","src":"2743:85:23"},{"expression":{"id":2736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2734,"name":"_TYPE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2681,"src":"2838:10:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2735,"name":"typeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2708,"src":"2851:8:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2838:21:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2737,"nodeType":"ExpressionStatement","src":"2838:21:23"}]},"documentation":{"id":2682,"nodeType":"StructuredDocumentation","src":"1760:559:23","text":" @dev Initializes the domain separator and parameter caches.\n The meaning of `name` and `version` is specified in\n https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n - `version`: the current major version of the signing domain.\n NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n contract upgrade]."},"id":2739,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":2687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2684,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":2739,"src":"2336:18:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2683,"name":"string","nodeType":"ElementaryTypeName","src":"2336:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2686,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","scope":2739,"src":"2356:21:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2685,"name":"string","nodeType":"ElementaryTypeName","src":"2356:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2335:43:23"},"returnParameters":{"id":2688,"nodeType":"ParameterList","parameters":[],"src":"2379:0:23"},"scope":2817,"src":"2324:542:23","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2760,"nodeType":"Block","src":"3022:213:23","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2745,"name":"_getChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2816,"src":"3036:11:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3036:13:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2747,"name":"_CACHED_CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2675,"src":"3053:16:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3036:33:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2758,"nodeType":"Block","src":"3133:96:23","statements":[{"expression":{"arguments":[{"id":2753,"name":"_TYPE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2681,"src":"3176:10:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2754,"name":"_HASHED_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3188:12:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2755,"name":"_HASHED_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2679,"src":"3202:15:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2752,"name":"_buildDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"3154:21:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32,bytes32) view returns (bytes32)"}},"id":2756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3154:64:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2744,"id":2757,"nodeType":"Return","src":"3147:71:23"}]},"id":2759,"nodeType":"IfStatement","src":"3032:197:23","trueBody":{"id":2751,"nodeType":"Block","src":"3071:56:23","statements":[{"expression":{"id":2749,"name":"_CACHED_DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2673,"src":"3092:24:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2744,"id":2750,"nodeType":"Return","src":"3085:31:23"}]}}]},"documentation":{"id":2740,"nodeType":"StructuredDocumentation","src":"2872:75:23","text":" @dev Returns the domain separator for the current chain."},"id":2761,"implemented":true,"kind":"function","modifiers":[],"name":"_domainSeparatorV4","nodeType":"FunctionDefinition","parameters":{"id":2741,"nodeType":"ParameterList","parameters":[],"src":"2979:2:23"},"returnParameters":{"id":2744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2743,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2761,"src":"3013:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2742,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3013:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3012:9:23"},"scope":2817,"src":"2952:283:23","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2787,"nodeType":"Block","src":"3352:216:23","statements":[{"expression":{"arguments":[{"arguments":[{"id":2775,"name":"typeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2763,"src":"3420:8:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2776,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2765,"src":"3446:4:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2777,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2767,"src":"3468:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2778,"name":"_getChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2816,"src":"3493:11:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3493:13:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":2782,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3532:4:23","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$2817","typeString":"contract EIP712"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712_$2817","typeString":"contract EIP712"}],"id":2781,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3524:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2780,"name":"address","nodeType":"ElementaryTypeName","src":"3524:7:23","typeDescriptions":{}}},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3524:13:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2773,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3392:3:23","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2774,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"3392:10:23","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3392:159:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2772,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3369:9:23","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3369:192:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2771,"id":2786,"nodeType":"Return","src":"3362:199:23"}]},"id":2788,"implemented":true,"kind":"function","modifiers":[],"name":"_buildDomainSeparator","nodeType":"FunctionDefinition","parameters":{"id":2768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2763,"mutability":"mutable","name":"typeHash","nodeType":"VariableDeclaration","scope":2788,"src":"3272:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2762,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3272:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2765,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":2788,"src":"3290:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2764,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3290:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2767,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","scope":2788,"src":"3304:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2766,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3304:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3271:49:23"},"returnParameters":{"id":2771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2770,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2788,"src":"3343:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2769,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3343:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3342:9:23"},"scope":2817,"src":"3241:327:23","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":2806,"nodeType":"Block","src":"4279:97:23","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"1901","id":2799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4323:10:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},"value":"\u0019\u0001"},{"arguments":[],"expression":{"argumentTypes":[],"id":2800,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2761,"src":"4335:18:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":2801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4335:20:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2802,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2791,"src":"4357:10:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2797,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4306:3:23","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2798,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"4306:16:23","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4306:62:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2796,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4296:9:23","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4296:73:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2795,"id":2805,"nodeType":"Return","src":"4289:80:23"}]},"documentation":{"id":2789,"nodeType":"StructuredDocumentation","src":"3574:614:23","text":" @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n function returns the hash of the fully encoded EIP712 message for this domain.\n This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n ```solidity\n bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n     keccak256(\"Mail(address to,string contents)\"),\n     mailTo,\n     keccak256(bytes(mailContents))\n )));\n address signer = ECDSA.recover(digest, signature);\n ```"},"id":2807,"implemented":true,"kind":"function","modifiers":[],"name":"_hashTypedDataV4","nodeType":"FunctionDefinition","parameters":{"id":2792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2791,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":2807,"src":"4219:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2790,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4219:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4218:20:23"},"returnParameters":{"id":2795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2794,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2807,"src":"4270:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2793,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4270:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4269:9:23"},"scope":2817,"src":"4193:183:23","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2815,"nodeType":"Block","src":"4444:258:23","statements":[{"expression":{"id":2812,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4454:4:23","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$2817","typeString":"contract EIP712"}},"id":2813,"nodeType":"ExpressionStatement","src":"4454:4:23"},{"AST":{"nodeType":"YulBlock","src":"4652:44:23","statements":[{"nodeType":"YulAssignment","src":"4666:20:23","value":{"arguments":[],"functionName":{"name":"chainid","nodeType":"YulIdentifier","src":"4677:7:23"},"nodeType":"YulFunctionCall","src":"4677:9:23"},"variableNames":[{"name":"chainId","nodeType":"YulIdentifier","src":"4666:7:23"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2810,"isOffset":false,"isSlot":false,"src":"4666:7:23","valueSize":1}],"id":2814,"nodeType":"InlineAssembly","src":"4643:53:23"}]},"id":2816,"implemented":true,"kind":"function","modifiers":[],"name":"_getChainId","nodeType":"FunctionDefinition","parameters":{"id":2808,"nodeType":"ParameterList","parameters":[],"src":"4402:2:23"},"returnParameters":{"id":2811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2810,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":2816,"src":"4427:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2809,"name":"uint256","nodeType":"ElementaryTypeName","src":"4427:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4426:17:23"},"scope":2817,"src":"4382:320:23","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":2818,"src":"1209:3495:23"}],"src":"33:4672:23"},"id":23},"@openzeppelin/contracts/drafts/ERC20Permit.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/drafts/ERC20Permit.sol","exportedSymbols":{"Context":[5638],"Counters":[5688],"ECDSA":[2668],"EIP712":[2817],"ERC20":[4105],"ERC20Permit":[2963],"IERC20":[4183],"IERC20Permit":[2999],"SafeMath":[3423]},"id":2964,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2819,"literals":["solidity",">=","0.6",".5","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:24"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"../token/ERC20/ERC20.sol","id":2820,"nodeType":"ImportDirective","scope":2964,"sourceUnit":4106,"src":"66:34:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/drafts/IERC20Permit.sol","file":"./IERC20Permit.sol","id":2821,"nodeType":"ImportDirective","scope":2964,"sourceUnit":3000,"src":"101:28:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/cryptography/ECDSA.sol","file":"../cryptography/ECDSA.sol","id":2822,"nodeType":"ImportDirective","scope":2964,"sourceUnit":2669,"src":"130:35:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Counters.sol","file":"../utils/Counters.sol","id":2823,"nodeType":"ImportDirective","scope":2964,"sourceUnit":5689,"src":"166:31:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/drafts/EIP712.sol","file":"./EIP712.sol","id":2824,"nodeType":"ImportDirective","scope":2964,"sourceUnit":2818,"src":"198:22:24","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2826,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":4105,"src":"773:5:24","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$4105","typeString":"contract ERC20"}},"id":2827,"nodeType":"InheritanceSpecifier","src":"773:5:24"},{"baseName":{"id":2828,"name":"IERC20Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":2999,"src":"780:12:24","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$2999","typeString":"contract IERC20Permit"}},"id":2829,"nodeType":"InheritanceSpecifier","src":"780:12:24"},{"baseName":{"id":2830,"name":"EIP712","nodeType":"UserDefinedTypeName","referencedDeclaration":2817,"src":"794:6:24","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$2817","typeString":"contract EIP712"}},"id":2831,"nodeType":"InheritanceSpecifier","src":"794:6:24"}],"contractDependencies":[2817,2999,4105,4183,5638],"contractKind":"contract","documentation":{"id":2825,"nodeType":"StructuredDocumentation","src":"222:517:24","text":" @dev Implementation of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all.\n _Available since v3.4._"},"fullyImplemented":false,"id":2963,"linearizedBaseContracts":[2963,2817,2999,4105,4183,5638],"name":"ERC20Permit","nodeType":"ContractDefinition","nodes":[{"id":2834,"libraryName":{"id":2832,"name":"Counters","nodeType":"UserDefinedTypeName","referencedDeclaration":5688,"src":"813:8:24","typeDescriptions":{"typeIdentifier":"t_contract$_Counters_$5688","typeString":"library Counters"}},"nodeType":"UsingForDirective","src":"807:36:24","typeName":{"id":2833,"name":"Counters.Counter","nodeType":"UserDefinedTypeName","referencedDeclaration":5648,"src":"826:16:24","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$5648_storage_ptr","typeString":"struct Counters.Counter"}}},{"constant":false,"id":2838,"mutability":"mutable","name":"_nonces","nodeType":"VariableDeclaration","scope":2963,"src":"849:53:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Counter_$5648_storage_$","typeString":"mapping(address => struct Counters.Counter)"},"typeName":{"id":2837,"keyType":{"id":2835,"name":"address","nodeType":"ElementaryTypeName","src":"858:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"849:37:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Counter_$5648_storage_$","typeString":"mapping(address => struct Counters.Counter)"},"valueType":{"id":2836,"name":"Counters.Counter","nodeType":"UserDefinedTypeName","referencedDeclaration":5648,"src":"869:16:24","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$5648_storage_ptr","typeString":"struct Counters.Counter"}}},"visibility":"private"},{"constant":false,"id":2843,"mutability":"immutable","name":"_PERMIT_TYPEHASH","nodeType":"VariableDeclaration","scope":2963,"src":"961:140:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2839,"name":"bytes32","nodeType":"ElementaryTypeName","src":"961:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529","id":2841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1016:84:24","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9","typeString":"literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""},"value":"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9","typeString":"literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""}],"id":2840,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1006:9:24","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1006:95:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":2853,"nodeType":"Block","src":"1383:7:24","statements":[]},"documentation":{"id":2844,"nodeType":"StructuredDocumentation","src":"1108:220:24","text":" @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\"1\"`.\n It's a good idea to use the same `name` that is defined as the ERC20 token name."},"id":2854,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":2849,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2846,"src":"1372:4:24","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"31","id":2850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1378:3:24","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"id":2851,"modifierName":{"id":2848,"name":"EIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2817,"src":"1365:6:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EIP712_$2817_$","typeString":"type(contract EIP712)"}},"nodeType":"ModifierInvocation","src":"1365:17:24"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":2847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2846,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":2854,"src":"1345:18:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2845,"name":"string","nodeType":"ElementaryTypeName","src":"1345:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1344:20:24"},"returnParameters":{"id":2852,"nodeType":"ParameterList","parameters":[],"src":"1383:0:24"},"scope":2963,"src":"1333:57:24","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2984],"body":{"id":2934,"nodeType":"Block","src":"1587:658:24","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2874,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1659:5:24","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"1659:15:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":2876,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2863,"src":"1678:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1659:27:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332305065726d69743a206578706972656420646561646c696e65","id":2878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1688:31:24","typeDescriptions":{"typeIdentifier":"t_stringliteral_3e89525a63fb9c966b61cf8f5305156de8420bc773a2b60828a2f32c3c5797bd","typeString":"literal_string \"ERC20Permit: expired deadline\""},"value":"ERC20Permit: expired deadline"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3e89525a63fb9c966b61cf8f5305156de8420bc773a2b60828a2f32c3c5797bd","typeString":"literal_string \"ERC20Permit: expired deadline\""}],"id":2873,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1651:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1651:69:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2880,"nodeType":"ExpressionStatement","src":"1651:69:24"},{"assignments":[2882],"declarations":[{"constant":false,"id":2882,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":2934,"src":"1731:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2881,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1731:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2898,"initialValue":{"arguments":[{"arguments":[{"id":2886,"name":"_PERMIT_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2843,"src":"1803:16:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2887,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2857,"src":"1837:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2888,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2859,"src":"1860:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2861,"src":"1885:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":2890,"name":"_nonces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"1908:7:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Counter_$5648_storage_$","typeString":"mapping(address => struct Counters.Counter storage ref)"}},"id":2892,"indexExpression":{"id":2891,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2857,"src":"1916:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1908:14:24","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$5648_storage","typeString":"struct Counters.Counter storage ref"}},"id":2893,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"current","nodeType":"MemberAccess","referencedDeclaration":5659,"src":"1908:22:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Counter_$5648_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$5648_storage_ptr_$","typeString":"function (struct Counters.Counter storage pointer) view returns (uint256)"}},"id":2894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1908:24:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2895,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2863,"src":"1950:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2884,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1775:3:24","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2885,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1775:10:24","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1775:197:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2883,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1752:9:24","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1752:230:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1731:251:24"},{"assignments":[2900],"declarations":[{"constant":false,"id":2900,"mutability":"mutable","name":"hash","nodeType":"VariableDeclaration","scope":2934,"src":"1993:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2899,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1993:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2904,"initialValue":{"arguments":[{"id":2902,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2882,"src":"2025:10:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2901,"name":"_hashTypedDataV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"2008:16:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":2903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2008:28:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1993:43:24"},{"assignments":[2906],"declarations":[{"constant":false,"id":2906,"mutability":"mutable","name":"signer","nodeType":"VariableDeclaration","scope":2934,"src":"2047:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2905,"name":"address","nodeType":"ElementaryTypeName","src":"2047:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2914,"initialValue":{"arguments":[{"id":2909,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"2078:4:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2910,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2865,"src":"2084:1:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2911,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2867,"src":"2087:1:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2912,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"2090:1:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2907,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"2064:5:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ECDSA_$2668_$","typeString":"type(library ECDSA)"}},"id":2908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":2650,"src":"2064:13:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":2913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2064:28:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2047:45:24"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2916,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"2110:6:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2917,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2857,"src":"2120:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2110:15:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332305065726d69743a20696e76616c6964207369676e6174757265","id":2919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2127:32:24","typeDescriptions":{"typeIdentifier":"t_stringliteral_94ca1ab58dfda790a1782ffbb0c0a140ec51d4148dbeecc6c39e37b25ff4b124","typeString":"literal_string \"ERC20Permit: invalid signature\""},"value":"ERC20Permit: invalid signature"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_94ca1ab58dfda790a1782ffbb0c0a140ec51d4148dbeecc6c39e37b25ff4b124","typeString":"literal_string \"ERC20Permit: invalid signature\""}],"id":2915,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2102:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2102:58:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2921,"nodeType":"ExpressionStatement","src":"2102:58:24"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":2922,"name":"_nonces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"2171:7:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Counter_$5648_storage_$","typeString":"mapping(address => struct Counters.Counter storage ref)"}},"id":2924,"indexExpression":{"id":2923,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2857,"src":"2179:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2171:14:24","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$5648_storage","typeString":"struct Counters.Counter storage ref"}},"id":2925,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"increment","nodeType":"MemberAccess","referencedDeclaration":5671,"src":"2171:24:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Counter_$5648_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$5648_storage_ptr_$","typeString":"function (struct Counters.Counter storage pointer)"}},"id":2926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2171:26:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2927,"nodeType":"ExpressionStatement","src":"2171:26:24"},{"expression":{"arguments":[{"id":2929,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2857,"src":"2216:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2930,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2859,"src":"2223:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2931,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2861,"src":"2232:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2928,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4082,"src":"2207:8:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2207:31:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2933,"nodeType":"ExpressionStatement","src":"2207:31:24"}]},"documentation":{"id":2855,"nodeType":"StructuredDocumentation","src":"1396:50:24","text":" @dev See {IERC20Permit-permit}."},"functionSelector":"d505accf","id":2935,"implemented":true,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","overrides":{"id":2871,"nodeType":"OverrideSpecifier","overrides":[],"src":"1578:8:24"},"parameters":{"id":2870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2857,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2935,"src":"1467:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2856,"name":"address","nodeType":"ElementaryTypeName","src":"1467:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2859,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":2935,"src":"1482:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2858,"name":"address","nodeType":"ElementaryTypeName","src":"1482:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2861,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":2935,"src":"1499:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2860,"name":"uint256","nodeType":"ElementaryTypeName","src":"1499:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2863,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":2935,"src":"1514:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2862,"name":"uint256","nodeType":"ElementaryTypeName","src":"1514:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2865,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":2935,"src":"1532:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2864,"name":"uint8","nodeType":"ElementaryTypeName","src":"1532:5:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2867,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":2935,"src":"1541:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2866,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1541:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2869,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":2935,"src":"1552:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2868,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1552:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1466:96:24"},"returnParameters":{"id":2872,"nodeType":"ParameterList","parameters":[],"src":"1587:0:24"},"scope":2963,"src":"1451:794:24","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2992],"body":{"id":2950,"nodeType":"Block","src":"2376:48:24","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":2944,"name":"_nonces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"2393:7:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Counter_$5648_storage_$","typeString":"mapping(address => struct Counters.Counter storage ref)"}},"id":2946,"indexExpression":{"id":2945,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2938,"src":"2401:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2393:14:24","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$5648_storage","typeString":"struct Counters.Counter storage ref"}},"id":2947,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"current","nodeType":"MemberAccess","referencedDeclaration":5659,"src":"2393:22:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Counter_$5648_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$5648_storage_ptr_$","typeString":"function (struct Counters.Counter storage pointer) view returns (uint256)"}},"id":2948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2393:24:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2943,"id":2949,"nodeType":"Return","src":"2386:31:24"}]},"documentation":{"id":2936,"nodeType":"StructuredDocumentation","src":"2251:50:24","text":" @dev See {IERC20Permit-nonces}."},"functionSelector":"7ecebe00","id":2951,"implemented":true,"kind":"function","modifiers":[],"name":"nonces","nodeType":"FunctionDefinition","overrides":{"id":2940,"nodeType":"OverrideSpecifier","overrides":[],"src":"2349:8:24"},"parameters":{"id":2939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2938,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2951,"src":"2322:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2937,"name":"address","nodeType":"ElementaryTypeName","src":"2322:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2321:15:24"},"returnParameters":{"id":2943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2942,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2951,"src":"2367:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2941,"name":"uint256","nodeType":"ElementaryTypeName","src":"2367:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2366:9:24"},"scope":2963,"src":"2306:118:24","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2998],"body":{"id":2961,"nodeType":"Block","src":"2617:44:24","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2958,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2761,"src":"2634:18:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":2959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2634:20:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2957,"id":2960,"nodeType":"Return","src":"2627:27:24"}]},"documentation":{"id":2952,"nodeType":"StructuredDocumentation","src":"2430:60:24","text":" @dev See {IERC20Permit-DOMAIN_SEPARATOR}."},"functionSelector":"3644e515","id":2962,"implemented":true,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","overrides":{"id":2954,"nodeType":"OverrideSpecifier","overrides":[],"src":"2590:8:24"},"parameters":{"id":2953,"nodeType":"ParameterList","parameters":[],"src":"2573:2:24"},"returnParameters":{"id":2957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2956,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2962,"src":"2608:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2955,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2608:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2607:9:24"},"scope":2963,"src":"2548:113:24","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2964,"src":"740:1923:24"}],"src":"33:2631:24"},"id":24},"@openzeppelin/contracts/drafts/IERC20Permit.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/drafts/IERC20Permit.sol","exportedSymbols":{"IERC20Permit":[2999]},"id":3000,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2965,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:25"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2966,"nodeType":"StructuredDocumentation","src":"66:482:25","text":" @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all."},"fullyImplemented":false,"id":2999,"linearizedBaseContracts":[2999],"name":"IERC20Permit","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2967,"nodeType":"StructuredDocumentation","src":"578:788:25","text":" @dev Sets `value` as the allowance of `spender` over `owner`'s tokens,\n given `owner`'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section]."},"functionSelector":"d505accf","id":2984,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":2982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2969,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2984,"src":"1387:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2968,"name":"address","nodeType":"ElementaryTypeName","src":"1387:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2971,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":2984,"src":"1402:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2970,"name":"address","nodeType":"ElementaryTypeName","src":"1402:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2973,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":2984,"src":"1419:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2972,"name":"uint256","nodeType":"ElementaryTypeName","src":"1419:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2975,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":2984,"src":"1434:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2974,"name":"uint256","nodeType":"ElementaryTypeName","src":"1434:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2977,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":2984,"src":"1452:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2976,"name":"uint8","nodeType":"ElementaryTypeName","src":"1452:5:25","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2979,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":2984,"src":"1461:9:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2978,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1461:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2981,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":2984,"src":"1472:9:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2980,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1472:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1386:96:25"},"returnParameters":{"id":2983,"nodeType":"ParameterList","parameters":[],"src":"1491:0:25"},"scope":2999,"src":"1371:121:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2985,"nodeType":"StructuredDocumentation","src":"1498:294:25","text":" @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times."},"functionSelector":"7ecebe00","id":2992,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nodeType":"FunctionDefinition","parameters":{"id":2988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2987,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2992,"src":"1813:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2986,"name":"address","nodeType":"ElementaryTypeName","src":"1813:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1812:15:25"},"returnParameters":{"id":2991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2990,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2992,"src":"1851:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2989,"name":"uint256","nodeType":"ElementaryTypeName","src":"1851:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1850:9:25"},"scope":2999,"src":"1797:63:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2993,"nodeType":"StructuredDocumentation","src":"1866:128:25","text":" @dev Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}."},"functionSelector":"3644e515","id":2998,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","parameters":{"id":2994,"nodeType":"ParameterList","parameters":[],"src":"2077:2:25"},"returnParameters":{"id":2997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2996,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2998,"src":"2103:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2995,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2103:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2102:9:25"},"scope":2999,"src":"2052:60:25","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3000,"src":"549:1565:25"}],"src":"33:2082:25"},"id":25},"@openzeppelin/contracts/introspection/ERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/introspection/ERC165.sol","exportedSymbols":{"ERC165":[3056],"IERC165":[3068]},"id":3057,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3001,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:26"},{"absolutePath":"@openzeppelin/contracts/introspection/IERC165.sol","file":"./IERC165.sol","id":3002,"nodeType":"ImportDirective","scope":3057,"sourceUnit":3069,"src":"58:23:26","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3004,"name":"IERC165","nodeType":"UserDefinedTypeName","referencedDeclaration":3068,"src":"283:7:26","typeDescriptions":{"typeIdentifier":"t_contract$_IERC165_$3068","typeString":"contract IERC165"}},"id":3005,"nodeType":"InheritanceSpecifier","src":"283:7:26"}],"contractDependencies":[3068],"contractKind":"contract","documentation":{"id":3003,"nodeType":"StructuredDocumentation","src":"83:171:26","text":" @dev Implementation of the {IERC165} interface.\n Contracts may inherit from this and call {_registerInterface} to declare\n their support of an interface."},"fullyImplemented":true,"id":3056,"linearizedBaseContracts":[3056,3068],"name":"ERC165","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":3008,"mutability":"constant","name":"_INTERFACE_ID_ERC165","nodeType":"VariableDeclaration","scope":3056,"src":"380:57:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3006,"name":"bytes4","nodeType":"ElementaryTypeName","src":"380:6:26","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783031666663396137","id":3007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"427:10:26","typeDescriptions":{"typeIdentifier":"t_rational_33540519_by_1","typeString":"int_const 33540519"},"value":"0x01ffc9a7"},"visibility":"private"},{"constant":false,"documentation":{"id":3009,"nodeType":"StructuredDocumentation","src":"444:82:26","text":" @dev Mapping of interface ids to whether or not it's supported."},"id":3013,"mutability":"mutable","name":"_supportedInterfaces","nodeType":"VariableDeclaration","scope":3056,"src":"531:52:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"},"typeName":{"id":3012,"keyType":{"id":3010,"name":"bytes4","nodeType":"ElementaryTypeName","src":"539:6:26","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"Mapping","src":"531:23:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"},"valueType":{"id":3011,"name":"bool","nodeType":"ElementaryTypeName","src":"549:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"body":{"id":3020,"nodeType":"Block","src":"605:193:26","statements":[{"expression":{"arguments":[{"id":3017,"name":"_INTERFACE_ID_ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3008,"src":"770:20:26","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":3016,"name":"_registerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3055,"src":"751:18:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4)"}},"id":3018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"751:40:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3019,"nodeType":"ExpressionStatement","src":"751:40:26"}]},"id":3021,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":3014,"nodeType":"ParameterList","parameters":[],"src":"602:2:26"},"returnParameters":{"id":3015,"nodeType":"ParameterList","parameters":[],"src":"605:0:26"},"scope":3056,"src":"590:208:26","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3067],"body":{"id":3034,"nodeType":"Block","src":"1039:57:26","statements":[{"expression":{"baseExpression":{"id":3030,"name":"_supportedInterfaces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3013,"src":"1056:20:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":3032,"indexExpression":{"id":3031,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3024,"src":"1077:11:26","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1056:33:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3029,"id":3033,"nodeType":"Return","src":"1049:40:26"}]},"documentation":{"id":3022,"nodeType":"StructuredDocumentation","src":"804:139:26","text":" @dev See {IERC165-supportsInterface}.\n Time complexity O(1), guaranteed to always use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":3035,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nodeType":"FunctionDefinition","overrides":{"id":3026,"nodeType":"OverrideSpecifier","overrides":[],"src":"1015:8:26"},"parameters":{"id":3025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3024,"mutability":"mutable","name":"interfaceId","nodeType":"VariableDeclaration","scope":3035,"src":"975:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3023,"name":"bytes4","nodeType":"ElementaryTypeName","src":"975:6:26","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"974:20:26"},"returnParameters":{"id":3029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3028,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3035,"src":"1033:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3027,"name":"bool","nodeType":"ElementaryTypeName","src":"1033:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1032:6:26"},"scope":3056,"src":"948:148:26","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":3054,"nodeType":"Block","src":"1555:133:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3042,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3038,"src":"1573:11:26","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30786666666666666666","id":3043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1588:10:26","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"1573:25:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433136353a20696e76616c696420696e74657266616365206964","id":3045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1600:30:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_282912c0dfceceb28d77d0333f496b83948f9ba5b3154358a8b140b849289dee","typeString":"literal_string \"ERC165: invalid interface id\""},"value":"ERC165: invalid interface id"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_282912c0dfceceb28d77d0333f496b83948f9ba5b3154358a8b140b849289dee","typeString":"literal_string \"ERC165: invalid interface id\""}],"id":3041,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1565:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1565:66:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3047,"nodeType":"ExpressionStatement","src":"1565:66:26"},{"expression":{"id":3052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3048,"name":"_supportedInterfaces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3013,"src":"1641:20:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":3050,"indexExpression":{"id":3049,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3038,"src":"1662:11:26","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1641:33:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1677:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1641:40:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3053,"nodeType":"ExpressionStatement","src":"1641:40:26"}]},"documentation":{"id":3036,"nodeType":"StructuredDocumentation","src":"1102:383:26","text":" @dev Registers the contract as an implementer of the interface defined by\n `interfaceId`. Support of the actual ERC165 interface is automatic and\n registering its interface id is not required.\n See {IERC165-supportsInterface}.\n Requirements:\n - `interfaceId` cannot be the ERC165 invalid interface (`0xffffffff`)."},"id":3055,"implemented":true,"kind":"function","modifiers":[],"name":"_registerInterface","nodeType":"FunctionDefinition","parameters":{"id":3039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3038,"mutability":"mutable","name":"interfaceId","nodeType":"VariableDeclaration","scope":3055,"src":"1518:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3037,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1518:6:26","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1517:20:26"},"returnParameters":{"id":3040,"nodeType":"ParameterList","parameters":[],"src":"1555:0:26"},"scope":3056,"src":"1490:198:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":3057,"src":"255:1435:26"}],"src":"33:1658:26"},"id":26},"@openzeppelin/contracts/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/introspection/IERC165.sol","exportedSymbols":{"IERC165":[3068]},"id":3069,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3058,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:27"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":3059,"nodeType":"StructuredDocumentation","src":"58:279:27","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":3068,"linearizedBaseContracts":[3068],"name":"IERC165","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3060,"nodeType":"StructuredDocumentation","src":"362:340:27","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":3067,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nodeType":"FunctionDefinition","parameters":{"id":3063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3062,"mutability":"mutable","name":"interfaceId","nodeType":"VariableDeclaration","scope":3067,"src":"734:18:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3061,"name":"bytes4","nodeType":"ElementaryTypeName","src":"734:6:27","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"733:20:27"},"returnParameters":{"id":3066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3065,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3067,"src":"777:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3064,"name":"bool","nodeType":"ElementaryTypeName","src":"777:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"776:6:27"},"scope":3068,"src":"707:76:27","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3069,"src":"338:447:27"}],"src":"33:753:27"},"id":27},"@openzeppelin/contracts/math/SafeMath.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/math/SafeMath.sol","exportedSymbols":{"SafeMath":[3423]},"id":3424,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3070,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:28"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":3071,"nodeType":"StructuredDocumentation","src":"58:563:28","text":" @dev Wrappers over Solidity's arithmetic operations with added overflow\n checks.\n Arithmetic operations in Solidity wrap on overflow. This can easily result\n in bugs, because programmers usually assume that an overflow raises an\n error, which is the standard behavior in high level programming languages.\n `SafeMath` restores this intuition by reverting the transaction when an\n operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."},"fullyImplemented":true,"id":3423,"linearizedBaseContracts":[3423],"name":"SafeMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":3101,"nodeType":"Block","src":"857:98:28","statements":[{"assignments":[3084],"declarations":[{"constant":false,"id":3084,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":3101,"src":"867:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3083,"name":"uint256","nodeType":"ElementaryTypeName","src":"867:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3088,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3085,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3074,"src":"879:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3086,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3076,"src":"883:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"879:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"867:17:28"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3089,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3084,"src":"898:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3090,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3074,"src":"902:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"898:5:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3096,"nodeType":"IfStatement","src":"894:28:28","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":3092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"913:5:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":3093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"920:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3094,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"912:10:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":3082,"id":3095,"nodeType":"Return","src":"905:17:28"}},{"expression":{"components":[{"hexValue":"74727565","id":3097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"940:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":3098,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3084,"src":"946:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3099,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"939:9:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":3082,"id":3100,"nodeType":"Return","src":"932:16:28"}]},"documentation":{"id":3072,"nodeType":"StructuredDocumentation","src":"645:131:28","text":" @dev Returns the addition of two unsigned integers, with an overflow flag.\n _Available since v3.4._"},"id":3102,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nodeType":"FunctionDefinition","parameters":{"id":3077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3074,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3102,"src":"797:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3073,"name":"uint256","nodeType":"ElementaryTypeName","src":"797:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3076,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3102,"src":"808:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3075,"name":"uint256","nodeType":"ElementaryTypeName","src":"808:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"796:22:28"},"returnParameters":{"id":3082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3079,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3102,"src":"842:4:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3078,"name":"bool","nodeType":"ElementaryTypeName","src":"842:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3081,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3102,"src":"848:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3080,"name":"uint256","nodeType":"ElementaryTypeName","src":"848:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"841:15:28"},"scope":3423,"src":"781:174:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3128,"nodeType":"Block","src":"1177:75:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3114,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3107,"src":"1191:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3115,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3105,"src":"1195:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1191:5:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3121,"nodeType":"IfStatement","src":"1187:28:28","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":3117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1206:5:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":3118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1213:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3119,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1205:10:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":3113,"id":3120,"nodeType":"Return","src":"1198:17:28"}},{"expression":{"components":[{"hexValue":"74727565","id":3122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1233:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3123,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3105,"src":"1239:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3124,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3107,"src":"1243:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1239:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3126,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1232:13:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":3113,"id":3127,"nodeType":"Return","src":"1225:20:28"}]},"documentation":{"id":3103,"nodeType":"StructuredDocumentation","src":"961:135:28","text":" @dev Returns the substraction of two unsigned integers, with an overflow flag.\n _Available since v3.4._"},"id":3129,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nodeType":"FunctionDefinition","parameters":{"id":3108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3105,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3129,"src":"1117:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3104,"name":"uint256","nodeType":"ElementaryTypeName","src":"1117:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3107,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3129,"src":"1128:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3106,"name":"uint256","nodeType":"ElementaryTypeName","src":"1128:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1116:22:28"},"returnParameters":{"id":3113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3110,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3129,"src":"1162:4:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3109,"name":"bool","nodeType":"ElementaryTypeName","src":"1162:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3112,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3129,"src":"1168:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3111,"name":"uint256","nodeType":"ElementaryTypeName","src":"1168:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1161:15:28"},"scope":3423,"src":"1101:151:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3169,"nodeType":"Block","src":"1476:359:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3141,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3132,"src":"1708:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1713:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1708:6:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3148,"nodeType":"IfStatement","src":"1704:28:28","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":3144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1724:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":3145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1730:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3146,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1723:9:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":3140,"id":3147,"nodeType":"Return","src":"1716:16:28"}},{"assignments":[3150],"declarations":[{"constant":false,"id":3150,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":3169,"src":"1742:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3149,"name":"uint256","nodeType":"ElementaryTypeName","src":"1742:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3154,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3132,"src":"1754:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3134,"src":"1758:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1754:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1742:17:28"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3155,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3150,"src":"1773:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3156,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3132,"src":"1777:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1773:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3158,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3134,"src":"1782:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1773:10:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3164,"nodeType":"IfStatement","src":"1769:33:28","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":3160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1793:5:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":3161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1800:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3162,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1792:10:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":3140,"id":3163,"nodeType":"Return","src":"1785:17:28"}},{"expression":{"components":[{"hexValue":"74727565","id":3165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1820:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":3166,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3150,"src":"1826:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3167,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1819:9:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":3140,"id":3168,"nodeType":"Return","src":"1812:16:28"}]},"documentation":{"id":3130,"nodeType":"StructuredDocumentation","src":"1258:137:28","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n _Available since v3.4._"},"id":3170,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nodeType":"FunctionDefinition","parameters":{"id":3135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3132,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3170,"src":"1416:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3131,"name":"uint256","nodeType":"ElementaryTypeName","src":"1416:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3134,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3170,"src":"1427:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3133,"name":"uint256","nodeType":"ElementaryTypeName","src":"1427:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1415:22:28"},"returnParameters":{"id":3140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3137,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3170,"src":"1461:4:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3136,"name":"bool","nodeType":"ElementaryTypeName","src":"1461:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3139,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3170,"src":"1467:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3138,"name":"uint256","nodeType":"ElementaryTypeName","src":"1467:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1460:15:28"},"scope":3423,"src":"1400:435:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3196,"nodeType":"Block","src":"2060:76:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3182,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3175,"src":"2074:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2079:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2074:6:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3189,"nodeType":"IfStatement","src":"2070:29:28","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":3185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2090:5:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":3186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2097:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3187,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2089:10:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":3181,"id":3188,"nodeType":"Return","src":"2082:17:28"}},{"expression":{"components":[{"hexValue":"74727565","id":3190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2117:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3191,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3173,"src":"2123:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3192,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3175,"src":"2127:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2123:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3194,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2116:13:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":3181,"id":3195,"nodeType":"Return","src":"2109:20:28"}]},"documentation":{"id":3171,"nodeType":"StructuredDocumentation","src":"1841:138:28","text":" @dev Returns the division of two unsigned integers, with a division by zero flag.\n _Available since v3.4._"},"id":3197,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nodeType":"FunctionDefinition","parameters":{"id":3176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3173,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3197,"src":"2000:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3172,"name":"uint256","nodeType":"ElementaryTypeName","src":"2000:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3175,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3197,"src":"2011:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3174,"name":"uint256","nodeType":"ElementaryTypeName","src":"2011:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1999:22:28"},"returnParameters":{"id":3181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3178,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3197,"src":"2045:4:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3177,"name":"bool","nodeType":"ElementaryTypeName","src":"2045:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3180,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3197,"src":"2051:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3179,"name":"uint256","nodeType":"ElementaryTypeName","src":"2051:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2044:15:28"},"scope":3423,"src":"1984:152:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3223,"nodeType":"Block","src":"2371:76:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3209,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3202,"src":"2385:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2390:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2385:6:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3216,"nodeType":"IfStatement","src":"2381:29:28","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":3212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2401:5:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":3213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2408:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2400:10:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":3208,"id":3215,"nodeType":"Return","src":"2393:17:28"}},{"expression":{"components":[{"hexValue":"74727565","id":3217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2428:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3218,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3200,"src":"2434:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":3219,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3202,"src":"2438:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2434:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3221,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2427:13:28","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":3208,"id":3222,"nodeType":"Return","src":"2420:20:28"}]},"documentation":{"id":3198,"nodeType":"StructuredDocumentation","src":"2142:148:28","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n _Available since v3.4._"},"id":3224,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nodeType":"FunctionDefinition","parameters":{"id":3203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3200,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3224,"src":"2311:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3199,"name":"uint256","nodeType":"ElementaryTypeName","src":"2311:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3202,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3224,"src":"2322:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3201,"name":"uint256","nodeType":"ElementaryTypeName","src":"2322:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2310:22:28"},"returnParameters":{"id":3208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3205,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3224,"src":"2356:4:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3204,"name":"bool","nodeType":"ElementaryTypeName","src":"2356:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3207,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3224,"src":"2362:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3206,"name":"uint256","nodeType":"ElementaryTypeName","src":"2362:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2355:15:28"},"scope":3423,"src":"2295:152:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3249,"nodeType":"Block","src":"2749:108:28","statements":[{"assignments":[3235],"declarations":[{"constant":false,"id":3235,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":3249,"src":"2759:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3234,"name":"uint256","nodeType":"ElementaryTypeName","src":"2759:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3239,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3236,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3227,"src":"2771:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3237,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3229,"src":"2775:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2771:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2759:17:28"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3241,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3235,"src":"2794:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3242,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3227,"src":"2799:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2794:6:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206164646974696f6e206f766572666c6f77","id":3244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2802:29:28","typeDescriptions":{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""},"value":"SafeMath: addition overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"id":3240,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2786:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2786:46:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3246,"nodeType":"ExpressionStatement","src":"2786:46:28"},{"expression":{"id":3247,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3235,"src":"2849:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3233,"id":3248,"nodeType":"Return","src":"2842:8:28"}]},"documentation":{"id":3225,"nodeType":"StructuredDocumentation","src":"2453:224:28","text":" @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."},"id":3250,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":3230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3227,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3250,"src":"2695:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3226,"name":"uint256","nodeType":"ElementaryTypeName","src":"2695:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3229,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3250,"src":"2706:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3228,"name":"uint256","nodeType":"ElementaryTypeName","src":"2706:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2694:22:28"},"returnParameters":{"id":3233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3232,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3250,"src":"2740:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3231,"name":"uint256","nodeType":"ElementaryTypeName","src":"2740:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2739:9:28"},"scope":3423,"src":"2682:175:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3271,"nodeType":"Block","src":"3195:88:28","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3261,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3255,"src":"3213:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":3262,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"3218:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3213:6:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","id":3264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3221:32:28","typeDescriptions":{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""},"value":"SafeMath: subtraction overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"id":3260,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3205:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3205:49:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3266,"nodeType":"ExpressionStatement","src":"3205:49:28"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3267,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"3271:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3268,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3255,"src":"3275:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3271:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3259,"id":3270,"nodeType":"Return","src":"3264:12:28"}]},"documentation":{"id":3251,"nodeType":"StructuredDocumentation","src":"2863:260:28","text":" @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."},"id":3272,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":3256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3253,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3272,"src":"3141:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3252,"name":"uint256","nodeType":"ElementaryTypeName","src":"3141:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3255,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3272,"src":"3152:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3254,"name":"uint256","nodeType":"ElementaryTypeName","src":"3152:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3140:22:28"},"returnParameters":{"id":3259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3258,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3272,"src":"3186:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3257,"name":"uint256","nodeType":"ElementaryTypeName","src":"3186:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3185:9:28"},"scope":3423,"src":"3128:155:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3305,"nodeType":"Block","src":"3597:148:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3282,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3275,"src":"3611:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3616:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3611:6:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3287,"nodeType":"IfStatement","src":"3607:20:28","trueBody":{"expression":{"hexValue":"30","id":3285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3626:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":3281,"id":3286,"nodeType":"Return","src":"3619:8:28"}},{"assignments":[3289],"declarations":[{"constant":false,"id":3289,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":3305,"src":"3637:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3288,"name":"uint256","nodeType":"ElementaryTypeName","src":"3637:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3293,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3290,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3275,"src":"3649:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3291,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3277,"src":"3653:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3649:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3637:17:28"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3295,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3289,"src":"3672:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3296,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3275,"src":"3676:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3672:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3298,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3277,"src":"3681:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3672:10:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","id":3300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3684:35:28","typeDescriptions":{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""},"value":"SafeMath: multiplication overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"id":3294,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3664:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3664:56:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3302,"nodeType":"ExpressionStatement","src":"3664:56:28"},{"expression":{"id":3303,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3289,"src":"3737:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3281,"id":3304,"nodeType":"Return","src":"3730:8:28"}]},"documentation":{"id":3273,"nodeType":"StructuredDocumentation","src":"3289:236:28","text":" @dev Returns the multiplication of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow."},"id":3306,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":3278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3275,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3306,"src":"3543:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3274,"name":"uint256","nodeType":"ElementaryTypeName","src":"3543:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3277,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3306,"src":"3554:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3276,"name":"uint256","nodeType":"ElementaryTypeName","src":"3554:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3542:22:28"},"returnParameters":{"id":3281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3280,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3306,"src":"3588:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3279,"name":"uint256","nodeType":"ElementaryTypeName","src":"3588:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3587:9:28"},"scope":3423,"src":"3530:215:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3327,"nodeType":"Block","src":"4276:83:28","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3317,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3311,"src":"4294:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4298:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4294:5:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206469766973696f6e206279207a65726f","id":3320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4301:28:28","typeDescriptions":{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""},"value":"SafeMath: division by zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"id":3316,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4286:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4286:44:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3322,"nodeType":"ExpressionStatement","src":"4286:44:28"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3323,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3309,"src":"4347:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3324,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3311,"src":"4351:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4347:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3315,"id":3326,"nodeType":"Return","src":"4340:12:28"}]},"documentation":{"id":3307,"nodeType":"StructuredDocumentation","src":"3751:453:28","text":" @dev Returns the integer division of two unsigned integers, reverting on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."},"id":3328,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":3312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3309,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3328,"src":"4222:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3308,"name":"uint256","nodeType":"ElementaryTypeName","src":"4222:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3311,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3328,"src":"4233:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3310,"name":"uint256","nodeType":"ElementaryTypeName","src":"4233:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4221:22:28"},"returnParameters":{"id":3315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3314,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3328,"src":"4267:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3313,"name":"uint256","nodeType":"ElementaryTypeName","src":"4267:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4266:9:28"},"scope":3423,"src":"4209:150:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3349,"nodeType":"Block","src":"4879:81:28","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3333,"src":"4897:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4901:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4897:5:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536166654d6174683a206d6f64756c6f206279207a65726f","id":3342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4904:26:28","typeDescriptions":{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""},"value":"SafeMath: modulo by zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"id":3338,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4889:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4889:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3344,"nodeType":"ExpressionStatement","src":"4889:42:28"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3345,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3331,"src":"4948:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":3346,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3333,"src":"4952:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4948:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3337,"id":3348,"nodeType":"Return","src":"4941:12:28"}]},"documentation":{"id":3329,"nodeType":"StructuredDocumentation","src":"4365:442:28","text":" @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."},"id":3350,"implemented":true,"kind":"function","modifiers":[],"name":"mod","nodeType":"FunctionDefinition","parameters":{"id":3334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3331,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3350,"src":"4825:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3330,"name":"uint256","nodeType":"ElementaryTypeName","src":"4825:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3333,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3350,"src":"4836:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3332,"name":"uint256","nodeType":"ElementaryTypeName","src":"4836:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4824:22:28"},"returnParameters":{"id":3337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3336,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3350,"src":"4870:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3335,"name":"uint256","nodeType":"ElementaryTypeName","src":"4870:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4869:9:28"},"scope":3423,"src":"4812:148:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3373,"nodeType":"Block","src":"5519:68:28","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3363,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3355,"src":"5537:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":3364,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3353,"src":"5542:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5537:6:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3366,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3357,"src":"5545:12:28","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3362,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5529:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5529:29:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3368,"nodeType":"ExpressionStatement","src":"5529:29:28"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3369,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3353,"src":"5575:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3370,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3355,"src":"5579:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5575:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3361,"id":3372,"nodeType":"Return","src":"5568:12:28"}]},"documentation":{"id":3351,"nodeType":"StructuredDocumentation","src":"4966:453:28","text":" @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {trySub}.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."},"id":3374,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":3358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3353,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3374,"src":"5437:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3352,"name":"uint256","nodeType":"ElementaryTypeName","src":"5437:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3355,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3374,"src":"5448:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3354,"name":"uint256","nodeType":"ElementaryTypeName","src":"5448:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3357,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":3374,"src":"5459:26:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3356,"name":"string","nodeType":"ElementaryTypeName","src":"5459:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5436:50:28"},"returnParameters":{"id":3361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3360,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3374,"src":"5510:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3359,"name":"uint256","nodeType":"ElementaryTypeName","src":"5510:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5509:9:28"},"scope":3423,"src":"5424:163:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3397,"nodeType":"Block","src":"6339:67:28","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3387,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3379,"src":"6357:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6361:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6357:5:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3390,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3381,"src":"6364:12:28","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3386,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6349:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6349:28:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3392,"nodeType":"ExpressionStatement","src":"6349:28:28"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3393,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3377,"src":"6394:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3394,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3379,"src":"6398:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6394:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3385,"id":3396,"nodeType":"Return","src":"6387:12:28"}]},"documentation":{"id":3375,"nodeType":"StructuredDocumentation","src":"5593:646:28","text":" @dev Returns the integer division of two unsigned integers, reverting with custom message on\n division by zero. The result is rounded towards zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryDiv}.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."},"id":3398,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":3382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3377,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3398,"src":"6257:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3376,"name":"uint256","nodeType":"ElementaryTypeName","src":"6257:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3379,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3398,"src":"6268:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3378,"name":"uint256","nodeType":"ElementaryTypeName","src":"6268:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3381,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":3398,"src":"6279:26:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3380,"name":"string","nodeType":"ElementaryTypeName","src":"6279:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6256:50:28"},"returnParameters":{"id":3385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3384,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3398,"src":"6330:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3383,"name":"uint256","nodeType":"ElementaryTypeName","src":"6330:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6329:9:28"},"scope":3423,"src":"6244:162:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3421,"nodeType":"Block","src":"7147:67:28","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3411,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3403,"src":"7165:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7169:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7165:5:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3414,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3405,"src":"7172:12:28","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3410,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7157:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7157:28:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3416,"nodeType":"ExpressionStatement","src":"7157:28:28"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3417,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3401,"src":"7202:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":3418,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3403,"src":"7206:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7202:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3409,"id":3420,"nodeType":"Return","src":"7195:12:28"}]},"documentation":{"id":3399,"nodeType":"StructuredDocumentation","src":"6412:635:28","text":" @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting with custom message when dividing by zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryMod}.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."},"id":3422,"implemented":true,"kind":"function","modifiers":[],"name":"mod","nodeType":"FunctionDefinition","parameters":{"id":3406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3401,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3422,"src":"7065:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3400,"name":"uint256","nodeType":"ElementaryTypeName","src":"7065:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3403,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3422,"src":"7076:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3402,"name":"uint256","nodeType":"ElementaryTypeName","src":"7076:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3405,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":3422,"src":"7087:26:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3404,"name":"string","nodeType":"ElementaryTypeName","src":"7087:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7064:50:28"},"returnParameters":{"id":3409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3408,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3422,"src":"7138:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3407,"name":"uint256","nodeType":"ElementaryTypeName","src":"7138:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7137:9:28"},"scope":3423,"src":"7052:162:28","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3424,"src":"622:6594:28"}],"src":"33:7184:28"},"id":28},"@openzeppelin/contracts/math/SignedSafeMath.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/math/SignedSafeMath.sol","exportedSymbols":{"SignedSafeMath":[3602]},"id":3603,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3425,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:29"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":3426,"nodeType":"StructuredDocumentation","src":"58:104:29","text":" @title SignedSafeMath\n @dev Signed math operations with safety checks that revert on error."},"fullyImplemented":true,"id":3602,"linearizedBaseContracts":[3602],"name":"SignedSafeMath","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":3432,"mutability":"constant","name":"_INT256_MIN","nodeType":"VariableDeclaration","scope":3602,"src":"192:45:29","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3427,"name":"int256","nodeType":"ElementaryTypeName","src":"192:6:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"commonType":{"typeIdentifier":"t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const -578...(70 digits omitted)...9968"},"id":3431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":3429,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"230:2:29","subExpression":{"hexValue":"32","id":3428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"231:1:29","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_2_by_1","typeString":"int_const -2"}},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"323535","id":3430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"234:3:29","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"230:7:29","typeDescriptions":{"typeIdentifier":"t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const -578...(70 digits omitted)...9968"}},"visibility":"private"},{"body":{"id":3480,"nodeType":"Block","src":"547:490:29","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3442,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3435,"src":"779:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"784:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"779:6:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3448,"nodeType":"IfStatement","src":"775:45:29","trueBody":{"id":3447,"nodeType":"Block","src":"787:33:29","statements":[{"expression":{"hexValue":"30","id":3445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"808:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":3441,"id":3446,"nodeType":"Return","src":"801:8:29"}]}},{"expression":{"arguments":[{"id":3459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"838:30:29","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3450,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3435,"src":"840:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"845:2:29","subExpression":{"hexValue":"31","id":3451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"846:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}},"src":"840:7:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3454,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3437,"src":"851:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3455,"name":"_INT256_MIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3432,"src":"856:11:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"851:16:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"840:27:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3458,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"839:29:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","id":3460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"870:41:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954","typeString":"literal_string \"SignedSafeMath: multiplication overflow\""},"value":"SignedSafeMath: multiplication overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954","typeString":"literal_string \"SignedSafeMath: multiplication overflow\""}],"id":3449,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"830:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"830:82:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3462,"nodeType":"ExpressionStatement","src":"830:82:29"},{"assignments":[3464],"declarations":[{"constant":false,"id":3464,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":3480,"src":"923:8:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3463,"name":"int256","nodeType":"ElementaryTypeName","src":"923:6:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":3468,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3465,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3435,"src":"934:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3466,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3437,"src":"938:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"934:5:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"923:16:29"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3470,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"957:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3471,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3435,"src":"961:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"957:5:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3473,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3437,"src":"966:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"957:10:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","id":3475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"969:41:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954","typeString":"literal_string \"SignedSafeMath: multiplication overflow\""},"value":"SignedSafeMath: multiplication overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954","typeString":"literal_string \"SignedSafeMath: multiplication overflow\""}],"id":3469,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"949:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"949:62:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3477,"nodeType":"ExpressionStatement","src":"949:62:29"},{"expression":{"id":3478,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"1029:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":3441,"id":3479,"nodeType":"Return","src":"1022:8:29"}]},"documentation":{"id":3433,"nodeType":"StructuredDocumentation","src":"244:234:29","text":" @dev Returns the multiplication of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow."},"id":3481,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":3438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3435,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3481,"src":"496:8:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3434,"name":"int256","nodeType":"ElementaryTypeName","src":"496:6:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3437,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3481,"src":"506:8:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3436,"name":"int256","nodeType":"ElementaryTypeName","src":"506:6:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"495:20:29"},"returnParameters":{"id":3441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3440,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3481,"src":"539:6:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3439,"name":"int256","nodeType":"ElementaryTypeName","src":"539:6:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"538:8:29"},"scope":3602,"src":"483:554:29","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3520,"nodeType":"Block","src":"1561:200:29","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3492,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3486,"src":"1579:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":3493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1584:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1579:6:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e6564536166654d6174683a206469766973696f6e206279207a65726f","id":3495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1587:34:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebc4d0068c2e029285c70894a725032247a74fcdc822ba305ea67dbddf7750bd","typeString":"literal_string \"SignedSafeMath: division by zero\""},"value":"SignedSafeMath: division by zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ebc4d0068c2e029285c70894a725032247a74fcdc822ba305ea67dbddf7750bd","typeString":"literal_string \"SignedSafeMath: division by zero\""}],"id":3491,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1571:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1571:51:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3497,"nodeType":"ExpressionStatement","src":"1571:51:29"},{"expression":{"arguments":[{"id":3508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1640:30:29","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3499,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3486,"src":"1642:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1647:2:29","subExpression":{"hexValue":"31","id":3500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1648:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}},"src":"1642:7:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3503,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3484,"src":"1653:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3504,"name":"_INT256_MIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3432,"src":"1658:11:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1653:16:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1642:27:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3507,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1641:29:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f77","id":3509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1672:35:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_7bc0f3df013376568eb9f7cb8999198097051f79bdb4d07d83447767f5224b81","typeString":"literal_string \"SignedSafeMath: division overflow\""},"value":"SignedSafeMath: division overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7bc0f3df013376568eb9f7cb8999198097051f79bdb4d07d83447767f5224b81","typeString":"literal_string \"SignedSafeMath: division overflow\""}],"id":3498,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1632:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1632:76:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3511,"nodeType":"ExpressionStatement","src":"1632:76:29"},{"assignments":[3513],"declarations":[{"constant":false,"id":3513,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":3520,"src":"1719:8:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3512,"name":"int256","nodeType":"ElementaryTypeName","src":"1719:6:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":3517,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3514,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3484,"src":"1730:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3515,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3486,"src":"1734:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1730:5:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"1719:16:29"},{"expression":{"id":3518,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3513,"src":"1753:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":3490,"id":3519,"nodeType":"Return","src":"1746:8:29"}]},"documentation":{"id":3482,"nodeType":"StructuredDocumentation","src":"1043:449:29","text":" @dev Returns the integer division of two signed integers. Reverts on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."},"id":3521,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":3487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3484,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3521,"src":"1510:8:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3483,"name":"int256","nodeType":"ElementaryTypeName","src":"1510:6:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3486,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3521,"src":"1520:8:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3485,"name":"int256","nodeType":"ElementaryTypeName","src":"1520:6:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1509:20:29"},"returnParameters":{"id":3490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3489,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3521,"src":"1553:6:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3488,"name":"int256","nodeType":"ElementaryTypeName","src":"1553:6:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1552:8:29"},"scope":3602,"src":"1497:264:29","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3560,"nodeType":"Block","src":"2064:149:29","statements":[{"assignments":[3532],"declarations":[{"constant":false,"id":3532,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":3560,"src":"2074:8:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3531,"name":"int256","nodeType":"ElementaryTypeName","src":"2074:6:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":3536,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3533,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3524,"src":"2085:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3534,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3526,"src":"2089:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2085:5:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"2074:16:29"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3538,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3526,"src":"2109:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":3539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2114:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2109:6:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3541,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3532,"src":"2119:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":3542,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3524,"src":"2124:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2119:6:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2109:16:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3545,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2108:18:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3546,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3526,"src":"2131:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":3547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2135:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2131:5:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3549,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3532,"src":"2140:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3550,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3524,"src":"2144:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2140:5:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2131:14:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3553,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2130:16:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2108:38:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77","id":3555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2148:38:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_dfe37ab0612d67daeef366062296f3ebcaf7e2cc3eb392bf66a6cb5a7bed3bcd","typeString":"literal_string \"SignedSafeMath: subtraction overflow\""},"value":"SignedSafeMath: subtraction overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dfe37ab0612d67daeef366062296f3ebcaf7e2cc3eb392bf66a6cb5a7bed3bcd","typeString":"literal_string \"SignedSafeMath: subtraction overflow\""}],"id":3537,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2100:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2100:87:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3557,"nodeType":"ExpressionStatement","src":"2100:87:29"},{"expression":{"id":3558,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3532,"src":"2205:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":3530,"id":3559,"nodeType":"Return","src":"2198:8:29"}]},"documentation":{"id":3522,"nodeType":"StructuredDocumentation","src":"1767:228:29","text":" @dev Returns the subtraction of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."},"id":3561,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":3527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3524,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3561,"src":"2013:8:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3523,"name":"int256","nodeType":"ElementaryTypeName","src":"2013:6:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3526,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3561,"src":"2023:8:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3525,"name":"int256","nodeType":"ElementaryTypeName","src":"2023:6:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2012:20:29"},"returnParameters":{"id":3530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3529,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3561,"src":"2056:6:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3528,"name":"int256","nodeType":"ElementaryTypeName","src":"2056:6:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2055:8:29"},"scope":3602,"src":"2000:213:29","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3600,"nodeType":"Block","src":"2510:146:29","statements":[{"assignments":[3572],"declarations":[{"constant":false,"id":3572,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":3600,"src":"2520:8:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3571,"name":"int256","nodeType":"ElementaryTypeName","src":"2520:6:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":3576,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3573,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3564,"src":"2531:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3574,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3566,"src":"2535:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2531:5:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"2520:16:29"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3578,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3566,"src":"2555:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":3579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2560:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2555:6:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3581,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3572,"src":"2565:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3582,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3564,"src":"2570:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2565:6:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2555:16:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3585,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2554:18:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3586,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3566,"src":"2577:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":3587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2581:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2577:5:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3589,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3572,"src":"2586:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3590,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3564,"src":"2590:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2586:5:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2577:14:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3593,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2576:16:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2554:38:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77","id":3595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2594:35:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_47c8d4a3974eee4fcf9925cffefc088ed6ac723b55fb65cf621edb1b7db7b8eb","typeString":"literal_string \"SignedSafeMath: addition overflow\""},"value":"SignedSafeMath: addition overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47c8d4a3974eee4fcf9925cffefc088ed6ac723b55fb65cf621edb1b7db7b8eb","typeString":"literal_string \"SignedSafeMath: addition overflow\""}],"id":3577,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2546:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2546:84:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3597,"nodeType":"ExpressionStatement","src":"2546:84:29"},{"expression":{"id":3598,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3572,"src":"2648:1:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":3570,"id":3599,"nodeType":"Return","src":"2641:8:29"}]},"documentation":{"id":3562,"nodeType":"StructuredDocumentation","src":"2219:222:29","text":" @dev Returns the addition of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."},"id":3601,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":3567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3564,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3601,"src":"2459:8:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3563,"name":"int256","nodeType":"ElementaryTypeName","src":"2459:6:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3566,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3601,"src":"2469:8:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3565,"name":"int256","nodeType":"ElementaryTypeName","src":"2469:6:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2458:20:29"},"returnParameters":{"id":3570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3569,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3601,"src":"2502:6:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3568,"name":"int256","nodeType":"ElementaryTypeName","src":"2502:6:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2501:8:29"},"scope":3602,"src":"2446:210:29","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3603,"src":"163:2495:29"}],"src":"33:2626:29"},"id":29},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","exportedSymbols":{"Context":[5638],"ERC20":[4105],"IERC20":[4183],"SafeMath":[3423]},"id":4106,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3604,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:30"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":3605,"nodeType":"ImportDirective","scope":4106,"sourceUnit":5639,"src":"58:33:30","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"./IERC20.sol","id":3606,"nodeType":"ImportDirective","scope":4106,"sourceUnit":4184,"src":"92:22:30","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/math/SafeMath.sol","file":"../../math/SafeMath.sol","id":3607,"nodeType":"ImportDirective","scope":4106,"sourceUnit":3424,"src":"115:33:30","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3609,"name":"Context","nodeType":"UserDefinedTypeName","referencedDeclaration":5638,"src":"1331:7:30","typeDescriptions":{"typeIdentifier":"t_contract$_Context_$5638","typeString":"contract Context"}},"id":3610,"nodeType":"InheritanceSpecifier","src":"1331:7:30"},{"baseName":{"id":3611,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":4183,"src":"1340:6:30","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4183","typeString":"contract IERC20"}},"id":3612,"nodeType":"InheritanceSpecifier","src":"1340:6:30"}],"contractDependencies":[4183,5638],"contractKind":"contract","documentation":{"id":3608,"nodeType":"StructuredDocumentation","src":"150:1162:30","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin guidelines: functions revert instead\n of returning `false` on failure. This behavior is nonetheless conventional\n and does not conflict with the expectations of ERC20 applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."},"fullyImplemented":true,"id":4105,"linearizedBaseContracts":[4105,4183,5638],"name":"ERC20","nodeType":"ContractDefinition","nodes":[{"id":3615,"libraryName":{"id":3613,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":3423,"src":"1359:8:30","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$3423","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"1353:27:30","typeName":{"id":3614,"name":"uint256","nodeType":"ElementaryTypeName","src":"1372:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":3619,"mutability":"mutable","name":"_balances","nodeType":"VariableDeclaration","scope":4105,"src":"1386:46:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":3618,"keyType":{"id":3616,"name":"address","nodeType":"ElementaryTypeName","src":"1395:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1386:28:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":3617,"name":"uint256","nodeType":"ElementaryTypeName","src":"1406:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":3625,"mutability":"mutable","name":"_allowances","nodeType":"VariableDeclaration","scope":4105,"src":"1439:69:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":3624,"keyType":{"id":3620,"name":"address","nodeType":"ElementaryTypeName","src":"1448:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1439:49:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":3623,"keyType":{"id":3621,"name":"address","nodeType":"ElementaryTypeName","src":"1468:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1459:28:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":3622,"name":"uint256","nodeType":"ElementaryTypeName","src":"1479:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":3627,"mutability":"mutable","name":"_totalSupply","nodeType":"VariableDeclaration","scope":4105,"src":"1515:28:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3626,"name":"uint256","nodeType":"ElementaryTypeName","src":"1515:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":3629,"mutability":"mutable","name":"_name","nodeType":"VariableDeclaration","scope":4105,"src":"1550:20:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":3628,"name":"string","nodeType":"ElementaryTypeName","src":"1550:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":3631,"mutability":"mutable","name":"_symbol","nodeType":"VariableDeclaration","scope":4105,"src":"1576:22:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":3630,"name":"string","nodeType":"ElementaryTypeName","src":"1576:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":3633,"mutability":"mutable","name":"_decimals","nodeType":"VariableDeclaration","scope":4105,"src":"1604:23:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3632,"name":"uint8","nodeType":"ElementaryTypeName","src":"1604:5:30","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"body":{"id":3653,"nodeType":"Block","src":"2007:81:30","statements":[{"expression":{"id":3643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3641,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3629,"src":"2017:5:30","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3642,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3636,"src":"2025:5:30","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2017:13:30","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":3644,"nodeType":"ExpressionStatement","src":"2017:13:30"},{"expression":{"id":3647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3645,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3631,"src":"2040:7:30","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3646,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3638,"src":"2050:7:30","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2040:17:30","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":3648,"nodeType":"ExpressionStatement","src":"2040:17:30"},{"expression":{"id":3651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3649,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3633,"src":"2067:9:30","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3138","id":3650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2079:2:30","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"2067:14:30","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3652,"nodeType":"ExpressionStatement","src":"2067:14:30"}]},"documentation":{"id":3634,"nodeType":"StructuredDocumentation","src":"1634:311:30","text":" @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n a default value of 18.\n To select a different value for {decimals}, use {_setupDecimals}.\n All three of these values are immutable: they can only be set once during\n construction."},"id":3654,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":3639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3636,"mutability":"mutable","name":"name_","nodeType":"VariableDeclaration","scope":3654,"src":"1963:19:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3635,"name":"string","nodeType":"ElementaryTypeName","src":"1963:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3638,"mutability":"mutable","name":"symbol_","nodeType":"VariableDeclaration","scope":3654,"src":"1984:21:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3637,"name":"string","nodeType":"ElementaryTypeName","src":"1984:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1962:44:30"},"returnParameters":{"id":3640,"nodeType":"ParameterList","parameters":[],"src":"2007:0:30"},"scope":4105,"src":"1950:138:30","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":3662,"nodeType":"Block","src":"2213:29:30","statements":[{"expression":{"id":3660,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3629,"src":"2230:5:30","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":3659,"id":3661,"nodeType":"Return","src":"2223:12:30"}]},"documentation":{"id":3655,"nodeType":"StructuredDocumentation","src":"2094:54:30","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":3663,"implemented":true,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","parameters":{"id":3656,"nodeType":"ParameterList","parameters":[],"src":"2166:2:30"},"returnParameters":{"id":3659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3658,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3663,"src":"2198:13:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3657,"name":"string","nodeType":"ElementaryTypeName","src":"2198:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2197:15:30"},"scope":4105,"src":"2153:89:30","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":3671,"nodeType":"Block","src":"2417:31:30","statements":[{"expression":{"id":3669,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3631,"src":"2434:7:30","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":3668,"id":3670,"nodeType":"Return","src":"2427:14:30"}]},"documentation":{"id":3664,"nodeType":"StructuredDocumentation","src":"2248:102:30","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":3672,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","parameters":{"id":3665,"nodeType":"ParameterList","parameters":[],"src":"2370:2:30"},"returnParameters":{"id":3668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3667,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3672,"src":"2402:13:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3666,"name":"string","nodeType":"ElementaryTypeName","src":"2402:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2401:15:30"},"scope":4105,"src":"2355:93:30","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":3680,"nodeType":"Block","src":"3127:33:30","statements":[{"expression":{"id":3678,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3633,"src":"3144:9:30","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":3677,"id":3679,"nodeType":"Return","src":"3137:16:30"}]},"documentation":{"id":3673,"nodeType":"StructuredDocumentation","src":"2454:612:30","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":3681,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nodeType":"FunctionDefinition","parameters":{"id":3674,"nodeType":"ParameterList","parameters":[],"src":"3088:2:30"},"returnParameters":{"id":3677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3676,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3681,"src":"3120:5:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3675,"name":"uint8","nodeType":"ElementaryTypeName","src":"3120:5:30","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3119:7:30"},"scope":4105,"src":"3071:89:30","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4114],"body":{"id":3690,"nodeType":"Block","src":"3290:36:30","statements":[{"expression":{"id":3688,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3627,"src":"3307:12:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3687,"id":3689,"nodeType":"Return","src":"3300:19:30"}]},"documentation":{"id":3682,"nodeType":"StructuredDocumentation","src":"3166:49:30","text":" @dev See {IERC20-totalSupply}."},"functionSelector":"18160ddd","id":3691,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","overrides":{"id":3684,"nodeType":"OverrideSpecifier","overrides":[],"src":"3263:8:30"},"parameters":{"id":3683,"nodeType":"ParameterList","parameters":[],"src":"3240:2:30"},"returnParameters":{"id":3687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3686,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3691,"src":"3281:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3685,"name":"uint256","nodeType":"ElementaryTypeName","src":"3281:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3280:9:30"},"scope":4105,"src":"3220:106:30","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4122],"body":{"id":3704,"nodeType":"Block","src":"3467:42:30","statements":[{"expression":{"baseExpression":{"id":3700,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3619,"src":"3484:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3702,"indexExpression":{"id":3701,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3694,"src":"3494:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3484:18:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3699,"id":3703,"nodeType":"Return","src":"3477:25:30"}]},"documentation":{"id":3692,"nodeType":"StructuredDocumentation","src":"3332:47:30","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":3705,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","overrides":{"id":3696,"nodeType":"OverrideSpecifier","overrides":[],"src":"3440:8:30"},"parameters":{"id":3695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3694,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3705,"src":"3403:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3693,"name":"address","nodeType":"ElementaryTypeName","src":"3403:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3402:17:30"},"returnParameters":{"id":3699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3698,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3705,"src":"3458:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3697,"name":"uint256","nodeType":"ElementaryTypeName","src":"3458:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3457:9:30"},"scope":4105,"src":"3384:125:30","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4132],"body":{"id":3725,"nodeType":"Block","src":"3804:80:30","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3717,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5626,"src":"3824:10:30","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":3718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3824:12:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":3719,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3708,"src":"3838:9:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3720,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3710,"src":"3849:6:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3716,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3926,"src":"3814:9:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3814:42:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3722,"nodeType":"ExpressionStatement","src":"3814:42:30"},{"expression":{"hexValue":"74727565","id":3723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3873:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3715,"id":3724,"nodeType":"Return","src":"3866:11:30"}]},"documentation":{"id":3706,"nodeType":"StructuredDocumentation","src":"3515:192:30","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`."},"functionSelector":"a9059cbb","id":3726,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","overrides":{"id":3712,"nodeType":"OverrideSpecifier","overrides":[],"src":"3780:8:30"},"parameters":{"id":3711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3708,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3726,"src":"3730:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3707,"name":"address","nodeType":"ElementaryTypeName","src":"3730:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3710,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3726,"src":"3749:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3709,"name":"uint256","nodeType":"ElementaryTypeName","src":"3749:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3729:35:30"},"returnParameters":{"id":3715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3714,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3726,"src":"3798:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3713,"name":"bool","nodeType":"ElementaryTypeName","src":"3798:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3797:6:30"},"scope":4105,"src":"3712:172:30","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[4142],"body":{"id":3743,"nodeType":"Block","src":"4040:51:30","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":3737,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3625,"src":"4057:11:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":3739,"indexExpression":{"id":3738,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3729,"src":"4069:5:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4057:18:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3741,"indexExpression":{"id":3740,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3731,"src":"4076:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4057:27:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3736,"id":3742,"nodeType":"Return","src":"4050:34:30"}]},"documentation":{"id":3727,"nodeType":"StructuredDocumentation","src":"3890:47:30","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":3744,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","overrides":{"id":3733,"nodeType":"OverrideSpecifier","overrides":[],"src":"4013:8:30"},"parameters":{"id":3732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3729,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":3744,"src":"3961:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3728,"name":"address","nodeType":"ElementaryTypeName","src":"3961:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3731,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":3744,"src":"3976:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3730,"name":"address","nodeType":"ElementaryTypeName","src":"3976:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3960:32:30"},"returnParameters":{"id":3736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3735,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3744,"src":"4031:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3734,"name":"uint256","nodeType":"ElementaryTypeName","src":"4031:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4030:9:30"},"scope":4105,"src":"3942:149:30","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4152],"body":{"id":3764,"nodeType":"Block","src":"4318:77:30","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3756,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5626,"src":"4337:10:30","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":3757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4337:12:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":3758,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3747,"src":"4351:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3759,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3749,"src":"4360:6:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3755,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4082,"src":"4328:8:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4328:39:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3761,"nodeType":"ExpressionStatement","src":"4328:39:30"},{"expression":{"hexValue":"74727565","id":3762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4384:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3754,"id":3763,"nodeType":"Return","src":"4377:11:30"}]},"documentation":{"id":3745,"nodeType":"StructuredDocumentation","src":"4097:127:30","text":" @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":3765,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","overrides":{"id":3751,"nodeType":"OverrideSpecifier","overrides":[],"src":"4294:8:30"},"parameters":{"id":3750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3747,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":3765,"src":"4246:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3746,"name":"address","nodeType":"ElementaryTypeName","src":"4246:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3749,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3765,"src":"4263:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3748,"name":"uint256","nodeType":"ElementaryTypeName","src":"4263:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4245:33:30"},"returnParameters":{"id":3754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3753,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3765,"src":"4312:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3752,"name":"bool","nodeType":"ElementaryTypeName","src":"4312:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4311:6:30"},"scope":4105,"src":"4229:166:30","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[4164],"body":{"id":3802,"nodeType":"Block","src":"4974:205:30","statements":[{"expression":{"arguments":[{"id":3779,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3768,"src":"4994:6:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3780,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3770,"src":"5002:9:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3781,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3772,"src":"5013:6:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3778,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3926,"src":"4984:9:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4984:36:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3783,"nodeType":"ExpressionStatement","src":"4984:36:30"},{"expression":{"arguments":[{"id":3785,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3768,"src":"5039:6:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":3786,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5626,"src":"5047:10:30","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":3787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5047:12:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":3795,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3772,"src":"5099:6:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365","id":3796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5107:42:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330","typeString":"literal_string \"ERC20: transfer amount exceeds allowance\""},"value":"ERC20: transfer amount exceeds allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330","typeString":"literal_string \"ERC20: transfer amount exceeds allowance\""}],"expression":{"baseExpression":{"baseExpression":{"id":3788,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3625,"src":"5061:11:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":3790,"indexExpression":{"id":3789,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3768,"src":"5073:6:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5061:19:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3793,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3791,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5626,"src":"5081:10:30","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":3792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5081:12:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5061:33:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":3374,"src":"5061:37:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":3797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5061:89:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3784,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4082,"src":"5030:8:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5030:121:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3799,"nodeType":"ExpressionStatement","src":"5030:121:30"},{"expression":{"hexValue":"74727565","id":3800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5168:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3777,"id":3801,"nodeType":"Return","src":"5161:11:30"}]},"documentation":{"id":3766,"nodeType":"StructuredDocumentation","src":"4401:456:30","text":" @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`."},"functionSelector":"23b872dd","id":3803,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":{"id":3774,"nodeType":"OverrideSpecifier","overrides":[],"src":"4950:8:30"},"parameters":{"id":3773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3768,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3803,"src":"4884:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3767,"name":"address","nodeType":"ElementaryTypeName","src":"4884:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3770,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3803,"src":"4900:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3769,"name":"address","nodeType":"ElementaryTypeName","src":"4900:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3772,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3803,"src":"4919:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3771,"name":"uint256","nodeType":"ElementaryTypeName","src":"4919:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4883:51:30"},"returnParameters":{"id":3777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3776,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3803,"src":"4968:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3775,"name":"bool","nodeType":"ElementaryTypeName","src":"4968:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4967:6:30"},"scope":4105,"src":"4862:317:30","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":3830,"nodeType":"Block","src":"5668:121:30","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3814,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5626,"src":"5687:10:30","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":3815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5687:12:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":3816,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3806,"src":"5701:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":3824,"name":"addedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3808,"src":"5749:10:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"baseExpression":{"id":3817,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3625,"src":"5710:11:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":3820,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3818,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5626,"src":"5722:10:30","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":3819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5722:12:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5710:25:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3822,"indexExpression":{"id":3821,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3806,"src":"5736:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5710:34:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":3250,"src":"5710:38:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5710:50:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3813,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4082,"src":"5678:8:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5678:83:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3827,"nodeType":"ExpressionStatement","src":"5678:83:30"},{"expression":{"hexValue":"74727565","id":3828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5778:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3812,"id":3829,"nodeType":"Return","src":"5771:11:30"}]},"documentation":{"id":3804,"nodeType":"StructuredDocumentation","src":"5185:384:30","text":" @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"39509351","id":3831,"implemented":true,"kind":"function","modifiers":[],"name":"increaseAllowance","nodeType":"FunctionDefinition","parameters":{"id":3809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3806,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":3831,"src":"5601:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3805,"name":"address","nodeType":"ElementaryTypeName","src":"5601:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3808,"mutability":"mutable","name":"addedValue","nodeType":"VariableDeclaration","scope":3831,"src":"5618:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3807,"name":"uint256","nodeType":"ElementaryTypeName","src":"5618:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5600:37:30"},"returnParameters":{"id":3812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3811,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3831,"src":"5662:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3810,"name":"bool","nodeType":"ElementaryTypeName","src":"5662:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5661:6:30"},"scope":4105,"src":"5574:215:30","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":3859,"nodeType":"Block","src":"6375:167:30","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3842,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5626,"src":"6394:10:30","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":3843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6394:12:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":3844,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3834,"src":"6408:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":3852,"name":"subtractedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"6456:15:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","id":3853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6473:39:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8","typeString":"literal_string \"ERC20: decreased allowance below zero\""},"value":"ERC20: decreased allowance below zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8","typeString":"literal_string \"ERC20: decreased allowance below zero\""}],"expression":{"baseExpression":{"baseExpression":{"id":3845,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3625,"src":"6417:11:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":3848,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3846,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5626,"src":"6429:10:30","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":3847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6429:12:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6417:25:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3850,"indexExpression":{"id":3849,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3834,"src":"6443:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6417:34:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":3374,"src":"6417:38:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":3854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6417:96:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3841,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4082,"src":"6385:8:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6385:129:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3856,"nodeType":"ExpressionStatement","src":"6385:129:30"},{"expression":{"hexValue":"74727565","id":3857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6531:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3840,"id":3858,"nodeType":"Return","src":"6524:11:30"}]},"documentation":{"id":3832,"nodeType":"StructuredDocumentation","src":"5795:476:30","text":" @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."},"functionSelector":"a457c2d7","id":3860,"implemented":true,"kind":"function","modifiers":[],"name":"decreaseAllowance","nodeType":"FunctionDefinition","parameters":{"id":3837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3834,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":3860,"src":"6303:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3833,"name":"address","nodeType":"ElementaryTypeName","src":"6303:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3836,"mutability":"mutable","name":"subtractedValue","nodeType":"VariableDeclaration","scope":3860,"src":"6320:23:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3835,"name":"uint256","nodeType":"ElementaryTypeName","src":"6320:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6302:42:30"},"returnParameters":{"id":3840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3839,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3860,"src":"6369:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3838,"name":"bool","nodeType":"ElementaryTypeName","src":"6369:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6368:6:30"},"scope":4105,"src":"6276:266:30","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":3925,"nodeType":"Block","src":"7103:443:30","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3871,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3863,"src":"7121:6:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7139:1:30","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":3873,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7131:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3872,"name":"address","nodeType":"ElementaryTypeName","src":"7131:7:30","typeDescriptions":{}}},"id":3875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7131:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7121:20:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373","id":3877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7143:39:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea","typeString":"literal_string \"ERC20: transfer from the zero address\""},"value":"ERC20: transfer from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea","typeString":"literal_string \"ERC20: transfer from the zero address\""}],"id":3870,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7113:7:30","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7113:70:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3879,"nodeType":"ExpressionStatement","src":"7113:70:30"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3881,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3865,"src":"7201:9:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7222:1:30","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":3883,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7214:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3882,"name":"address","nodeType":"ElementaryTypeName","src":"7214:7:30","typeDescriptions":{}}},"id":3885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7214:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7201:23:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e7366657220746f20746865207a65726f2061646472657373","id":3887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7226:37:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f","typeString":"literal_string \"ERC20: transfer to the zero address\""},"value":"ERC20: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f","typeString":"literal_string \"ERC20: transfer to the zero address\""}],"id":3880,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7193:7:30","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7193:71:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3889,"nodeType":"ExpressionStatement","src":"7193:71:30"},{"expression":{"arguments":[{"id":3891,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3863,"src":"7296:6:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3892,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3865,"src":"7304:9:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3893,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3867,"src":"7315:6:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3890,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4104,"src":"7275:20:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7275:47:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3895,"nodeType":"ExpressionStatement","src":"7275:47:30"},{"expression":{"id":3906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3896,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3619,"src":"7333:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3898,"indexExpression":{"id":3897,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3863,"src":"7343:6:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7333:17:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3903,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3867,"src":"7375:6:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365","id":3904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7383:40:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","typeString":"literal_string \"ERC20: transfer amount exceeds balance\""},"value":"ERC20: transfer amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","typeString":"literal_string \"ERC20: transfer amount exceeds balance\""}],"expression":{"baseExpression":{"id":3899,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3619,"src":"7353:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3901,"indexExpression":{"id":3900,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3863,"src":"7363:6:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7353:17:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":3374,"src":"7353:21:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":3905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7353:71:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7333:91:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3907,"nodeType":"ExpressionStatement","src":"7333:91:30"},{"expression":{"id":3917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3908,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3619,"src":"7434:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3910,"indexExpression":{"id":3909,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3865,"src":"7444:9:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7434:20:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3915,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3867,"src":"7482:6:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":3911,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3619,"src":"7457:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3913,"indexExpression":{"id":3912,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3865,"src":"7467:9:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7457:20:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":3250,"src":"7457:24:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7457:32:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7434:55:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3918,"nodeType":"ExpressionStatement","src":"7434:55:30"},{"eventCall":{"arguments":[{"id":3920,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3863,"src":"7513:6:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3921,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3865,"src":"7521:9:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3922,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3867,"src":"7532:6:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3919,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4173,"src":"7504:8:30","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7504:35:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3924,"nodeType":"EmitStatement","src":"7499:40:30"}]},"documentation":{"id":3861,"nodeType":"StructuredDocumentation","src":"6548:463:30","text":" @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`."},"id":3926,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nodeType":"FunctionDefinition","parameters":{"id":3868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3863,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3926,"src":"7035:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3862,"name":"address","nodeType":"ElementaryTypeName","src":"7035:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3865,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3926,"src":"7051:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3864,"name":"address","nodeType":"ElementaryTypeName","src":"7051:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3867,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3926,"src":"7070:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3866,"name":"uint256","nodeType":"ElementaryTypeName","src":"7070:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7034:51:30"},"returnParameters":{"id":3869,"nodeType":"ParameterList","parameters":[],"src":"7103:0:30"},"scope":4105,"src":"7016:530:30","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3980,"nodeType":"Block","src":"7882:305:30","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3935,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3929,"src":"7900:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7919:1:30","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":3937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7911:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3936,"name":"address","nodeType":"ElementaryTypeName","src":"7911:7:30","typeDescriptions":{}}},"id":3939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7911:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7900:21:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206d696e7420746f20746865207a65726f2061646472657373","id":3941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7923:33:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e","typeString":"literal_string \"ERC20: mint to the zero address\""},"value":"ERC20: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e","typeString":"literal_string \"ERC20: mint to the zero address\""}],"id":3934,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7892:7:30","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7892:65:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3943,"nodeType":"ExpressionStatement","src":"7892:65:30"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":3947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7997:1:30","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":3946,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7989:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3945,"name":"address","nodeType":"ElementaryTypeName","src":"7989:7:30","typeDescriptions":{}}},"id":3948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7989:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":3949,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3929,"src":"8001:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3950,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3931,"src":"8010:6:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3944,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4104,"src":"7968:20:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7968:49:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3952,"nodeType":"ExpressionStatement","src":"7968:49:30"},{"expression":{"id":3958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3953,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3627,"src":"8028:12:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3956,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3931,"src":"8060:6:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3954,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3627,"src":"8043:12:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":3250,"src":"8043:16:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8043:24:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8028:39:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3959,"nodeType":"ExpressionStatement","src":"8028:39:30"},{"expression":{"id":3969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3960,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3619,"src":"8077:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3962,"indexExpression":{"id":3961,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3929,"src":"8087:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8077:18:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3967,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3931,"src":"8121:6:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":3963,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3619,"src":"8098:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3965,"indexExpression":{"id":3964,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3929,"src":"8108:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8098:18:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":3250,"src":"8098:22:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8098:30:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8077:51:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3970,"nodeType":"ExpressionStatement","src":"8077:51:30"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8160:1:30","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":3973,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8152:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3972,"name":"address","nodeType":"ElementaryTypeName","src":"8152:7:30","typeDescriptions":{}}},"id":3975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8152:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":3976,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3929,"src":"8164:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3977,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3931,"src":"8173:6:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3971,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4173,"src":"8143:8:30","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8143:37:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3979,"nodeType":"EmitStatement","src":"8138:42:30"}]},"documentation":{"id":3927,"nodeType":"StructuredDocumentation","src":"7552:260:30","text":"@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `to` cannot be the zero address."},"id":3981,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nodeType":"FunctionDefinition","parameters":{"id":3932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3929,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3981,"src":"7832:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3928,"name":"address","nodeType":"ElementaryTypeName","src":"7832:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3931,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3981,"src":"7849:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3930,"name":"uint256","nodeType":"ElementaryTypeName","src":"7849:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7831:33:30"},"returnParameters":{"id":3933,"nodeType":"ParameterList","parameters":[],"src":"7882:0:30"},"scope":4105,"src":"7817:370:30","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4036,"nodeType":"Block","src":"8572:345:30","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3990,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3984,"src":"8590:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8609:1:30","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":3992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8601:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3991,"name":"address","nodeType":"ElementaryTypeName","src":"8601:7:30","typeDescriptions":{}}},"id":3994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8601:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"8590:21:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206275726e2066726f6d20746865207a65726f2061646472657373","id":3996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8613:35:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f","typeString":"literal_string \"ERC20: burn from the zero address\""},"value":"ERC20: burn from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f","typeString":"literal_string \"ERC20: burn from the zero address\""}],"id":3989,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8582:7:30","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8582:67:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3998,"nodeType":"ExpressionStatement","src":"8582:67:30"},{"expression":{"arguments":[{"id":4000,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3984,"src":"8681:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8698:1:30","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":4002,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8690:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4001,"name":"address","nodeType":"ElementaryTypeName","src":"8690:7:30","typeDescriptions":{}}},"id":4004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8690:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":4005,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3986,"src":"8702:6:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3999,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4104,"src":"8660:20:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8660:49:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4007,"nodeType":"ExpressionStatement","src":"8660:49:30"},{"expression":{"id":4018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4008,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3619,"src":"8720:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4010,"indexExpression":{"id":4009,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3984,"src":"8730:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8720:18:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4015,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3986,"src":"8764:6:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365","id":4016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8772:36:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd","typeString":"literal_string \"ERC20: burn amount exceeds balance\""},"value":"ERC20: burn amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd","typeString":"literal_string \"ERC20: burn amount exceeds balance\""}],"expression":{"baseExpression":{"id":4011,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3619,"src":"8741:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4013,"indexExpression":{"id":4012,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3984,"src":"8751:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8741:18:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":3374,"src":"8741:22:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,string memory) pure returns (uint256)"}},"id":4017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8741:68:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8720:89:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4019,"nodeType":"ExpressionStatement","src":"8720:89:30"},{"expression":{"id":4025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4020,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3627,"src":"8819:12:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4023,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3986,"src":"8851:6:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4021,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3627,"src":"8834:12:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":3272,"src":"8834:16:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8834:24:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8819:39:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4026,"nodeType":"ExpressionStatement","src":"8819:39:30"},{"eventCall":{"arguments":[{"id":4028,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3984,"src":"8882:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8899:1:30","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":4030,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8891:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4029,"name":"address","nodeType":"ElementaryTypeName","src":"8891:7:30","typeDescriptions":{}}},"id":4032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8891:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":4033,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3986,"src":"8903:6:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4027,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4173,"src":"8873:8:30","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8873:37:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4035,"nodeType":"EmitStatement","src":"8868:42:30"}]},"documentation":{"id":3982,"nodeType":"StructuredDocumentation","src":"8193:309:30","text":" @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."},"id":4037,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nodeType":"FunctionDefinition","parameters":{"id":3987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3984,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":4037,"src":"8522:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3983,"name":"address","nodeType":"ElementaryTypeName","src":"8522:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3986,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":4037,"src":"8539:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3985,"name":"uint256","nodeType":"ElementaryTypeName","src":"8539:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8521:33:30"},"returnParameters":{"id":3988,"nodeType":"ParameterList","parameters":[],"src":"8572:0:30"},"scope":4105,"src":"8507:410:30","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4081,"nodeType":"Block","src":"9423:257:30","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4048,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4040,"src":"9441:5:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9458:1:30","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":4050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9450:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4049,"name":"address","nodeType":"ElementaryTypeName","src":"9450:7:30","typeDescriptions":{}}},"id":4052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9450:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"9441:19:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373","id":4054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9462:38:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208","typeString":"literal_string \"ERC20: approve from the zero address\""},"value":"ERC20: approve from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208","typeString":"literal_string \"ERC20: approve from the zero address\""}],"id":4047,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9433:7:30","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9433:68:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4056,"nodeType":"ExpressionStatement","src":"9433:68:30"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4058,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4042,"src":"9519:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9538:1:30","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":4060,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9530:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4059,"name":"address","nodeType":"ElementaryTypeName","src":"9530:7:30","typeDescriptions":{}}},"id":4062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9530:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"9519:21:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20617070726f766520746f20746865207a65726f2061646472657373","id":4064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9542:36:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029","typeString":"literal_string \"ERC20: approve to the zero address\""},"value":"ERC20: approve to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029","typeString":"literal_string \"ERC20: approve to the zero address\""}],"id":4057,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9511:7:30","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9511:68:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4066,"nodeType":"ExpressionStatement","src":"9511:68:30"},{"expression":{"id":4073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":4067,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3625,"src":"9590:11:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":4070,"indexExpression":{"id":4068,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4040,"src":"9602:5:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9590:18:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4071,"indexExpression":{"id":4069,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4042,"src":"9609:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9590:27:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4072,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4044,"src":"9620:6:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9590:36:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4074,"nodeType":"ExpressionStatement","src":"9590:36:30"},{"eventCall":{"arguments":[{"id":4076,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4040,"src":"9650:5:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4077,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4042,"src":"9657:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4078,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4044,"src":"9666:6:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4075,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4182,"src":"9641:8:30","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9641:32:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4080,"nodeType":"EmitStatement","src":"9636:37:30"}]},"documentation":{"id":4038,"nodeType":"StructuredDocumentation","src":"8923:412:30","text":" @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."},"id":4082,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nodeType":"FunctionDefinition","parameters":{"id":4045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4040,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":4082,"src":"9358:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4039,"name":"address","nodeType":"ElementaryTypeName","src":"9358:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4042,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":4082,"src":"9373:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4041,"name":"address","nodeType":"ElementaryTypeName","src":"9373:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4044,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":4082,"src":"9390:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4043,"name":"uint256","nodeType":"ElementaryTypeName","src":"9390:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9357:48:30"},"returnParameters":{"id":4046,"nodeType":"ParameterList","parameters":[],"src":"9423:0:30"},"scope":4105,"src":"9340:340:30","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4092,"nodeType":"Block","src":"10061:38:30","statements":[{"expression":{"id":4090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4088,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3633,"src":"10071:9:30","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4089,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"10083:9:30","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10071:21:30","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":4091,"nodeType":"ExpressionStatement","src":"10071:21:30"}]},"documentation":{"id":4083,"nodeType":"StructuredDocumentation","src":"9686:312:30","text":" @dev Sets {decimals} to a value other than the default one of 18.\n WARNING: This function should only be called from the constructor. Most\n applications that interact with token contracts will not expect\n {decimals} to ever change, and may work incorrectly if it does."},"id":4093,"implemented":true,"kind":"function","modifiers":[],"name":"_setupDecimals","nodeType":"FunctionDefinition","parameters":{"id":4086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4085,"mutability":"mutable","name":"decimals_","nodeType":"VariableDeclaration","scope":4093,"src":"10027:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4084,"name":"uint8","nodeType":"ElementaryTypeName","src":"10027:5:30","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"10026:17:30"},"returnParameters":{"id":4087,"nodeType":"ParameterList","parameters":[],"src":"10061:0:30"},"scope":4105,"src":"10003:96:30","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4103,"nodeType":"Block","src":"10775:3:30","statements":[]},"documentation":{"id":4094,"nodeType":"StructuredDocumentation","src":"10105:576:30","text":" @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be to transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":4104,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nodeType":"FunctionDefinition","parameters":{"id":4101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4096,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":4104,"src":"10716:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4095,"name":"address","nodeType":"ElementaryTypeName","src":"10716:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4098,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":4104,"src":"10730:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4097,"name":"address","nodeType":"ElementaryTypeName","src":"10730:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4100,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":4104,"src":"10742:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4099,"name":"uint256","nodeType":"ElementaryTypeName","src":"10742:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10715:42:30"},"returnParameters":{"id":4102,"nodeType":"ParameterList","parameters":[],"src":"10775:0:30"},"scope":4105,"src":"10686:92:30","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":4106,"src":"1313:9467:30"}],"src":"33:10748:30"},"id":30},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[4183]},"id":4184,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4107,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:31"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":4108,"nodeType":"StructuredDocumentation","src":"58:70:31","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":4183,"linearizedBaseContracts":[4183],"name":"IERC20","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4109,"nodeType":"StructuredDocumentation","src":"152:66:31","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":4114,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":4110,"nodeType":"ParameterList","parameters":[],"src":"243:2:31"},"returnParameters":{"id":4113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4112,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4114,"src":"269:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4111,"name":"uint256","nodeType":"ElementaryTypeName","src":"269:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"268:9:31"},"scope":4183,"src":"223:55:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4115,"nodeType":"StructuredDocumentation","src":"284:72:31","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":4122,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":4118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4117,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":4122,"src":"380:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4116,"name":"address","nodeType":"ElementaryTypeName","src":"380:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"379:17:31"},"returnParameters":{"id":4121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4120,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4122,"src":"420:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4119,"name":"uint256","nodeType":"ElementaryTypeName","src":"420:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"419:9:31"},"scope":4183,"src":"361:68:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4123,"nodeType":"StructuredDocumentation","src":"435:209:31","text":" @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":4132,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":4128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4125,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":4132,"src":"667:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4124,"name":"address","nodeType":"ElementaryTypeName","src":"667:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4127,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":4132,"src":"686:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4126,"name":"uint256","nodeType":"ElementaryTypeName","src":"686:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"666:35:31"},"returnParameters":{"id":4131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4130,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4132,"src":"720:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4129,"name":"bool","nodeType":"ElementaryTypeName","src":"720:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"719:6:31"},"scope":4183,"src":"649:77:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4133,"nodeType":"StructuredDocumentation","src":"732:264:31","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":4142,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":4138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4135,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":4142,"src":"1020:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4134,"name":"address","nodeType":"ElementaryTypeName","src":"1020:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4137,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":4142,"src":"1035:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4136,"name":"address","nodeType":"ElementaryTypeName","src":"1035:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1019:32:31"},"returnParameters":{"id":4141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4140,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4142,"src":"1075:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4139,"name":"uint256","nodeType":"ElementaryTypeName","src":"1075:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1074:9:31"},"scope":4183,"src":"1001:83:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4143,"nodeType":"StructuredDocumentation","src":"1090:642:31","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":4152,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":4148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4145,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":4152,"src":"1754:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4144,"name":"address","nodeType":"ElementaryTypeName","src":"1754:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4147,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":4152,"src":"1771:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4146,"name":"uint256","nodeType":"ElementaryTypeName","src":"1771:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1753:33:31"},"returnParameters":{"id":4151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4150,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4152,"src":"1805:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4149,"name":"bool","nodeType":"ElementaryTypeName","src":"1805:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1804:6:31"},"scope":4183,"src":"1737:74:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4153,"nodeType":"StructuredDocumentation","src":"1817:296:31","text":" @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":4164,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":4160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4155,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":4164,"src":"2140:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4154,"name":"address","nodeType":"ElementaryTypeName","src":"2140:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4157,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":4164,"src":"2156:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4156,"name":"address","nodeType":"ElementaryTypeName","src":"2156:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4159,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":4164,"src":"2175:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4158,"name":"uint256","nodeType":"ElementaryTypeName","src":"2175:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2139:51:31"},"returnParameters":{"id":4163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4162,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4164,"src":"2209:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4161,"name":"bool","nodeType":"ElementaryTypeName","src":"2209:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2208:6:31"},"scope":4183,"src":"2118:97:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":4165,"nodeType":"StructuredDocumentation","src":"2221:158:31","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"id":4173,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":4172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4167,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":4173,"src":"2399:20:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4166,"name":"address","nodeType":"ElementaryTypeName","src":"2399:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4169,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":4173,"src":"2421:18:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4168,"name":"address","nodeType":"ElementaryTypeName","src":"2421:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4171,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":4173,"src":"2441:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4170,"name":"uint256","nodeType":"ElementaryTypeName","src":"2441:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2398:57:31"},"src":"2384:72:31"},{"anonymous":false,"documentation":{"id":4174,"nodeType":"StructuredDocumentation","src":"2462:148:31","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"id":4182,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":4181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4176,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":4182,"src":"2630:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4175,"name":"address","nodeType":"ElementaryTypeName","src":"2630:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4178,"indexed":true,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":4182,"src":"2653:23:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4177,"name":"address","nodeType":"ElementaryTypeName","src":"2653:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4180,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":4182,"src":"2678:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4179,"name":"uint256","nodeType":"ElementaryTypeName","src":"2678:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2629:63:31"},"src":"2615:78:31"}],"scope":4184,"src":"129:2566:31"}],"src":"33:2663:31"},"id":31},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","exportedSymbols":{"Address":[5615],"Context":[5638],"ERC165":[3056],"ERC721":[5127],"EnumerableMap":[6248],"EnumerableSet":[6740],"IERC165":[3068],"IERC721":[5243],"IERC721Enumerable":[5274],"IERC721Metadata":[5301],"IERC721Receiver":[5319],"SafeMath":[3423],"Strings":[6827]},"id":5128,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4185,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:32"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":4186,"nodeType":"ImportDirective","scope":5128,"sourceUnit":5639,"src":"58:33:32","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"./IERC721.sol","id":4187,"nodeType":"ImportDirective","scope":5128,"sourceUnit":5244,"src":"92:23:32","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol","file":"./IERC721Metadata.sol","id":4188,"nodeType":"ImportDirective","scope":5128,"sourceUnit":5302,"src":"116:31:32","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol","file":"./IERC721Enumerable.sol","id":4189,"nodeType":"ImportDirective","scope":5128,"sourceUnit":5275,"src":"148:33:32","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"./IERC721Receiver.sol","id":4190,"nodeType":"ImportDirective","scope":5128,"sourceUnit":5320,"src":"182:31:32","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/introspection/ERC165.sol","file":"../../introspection/ERC165.sol","id":4191,"nodeType":"ImportDirective","scope":5128,"sourceUnit":3057,"src":"214:40:32","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/math/SafeMath.sol","file":"../../math/SafeMath.sol","id":4192,"nodeType":"ImportDirective","scope":5128,"sourceUnit":3424,"src":"255:33:32","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":4193,"nodeType":"ImportDirective","scope":5128,"sourceUnit":5616,"src":"289:33:32","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/EnumerableSet.sol","file":"../../utils/EnumerableSet.sol","id":4194,"nodeType":"ImportDirective","scope":5128,"sourceUnit":6741,"src":"323:39:32","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/EnumerableMap.sol","file":"../../utils/EnumerableMap.sol","id":4195,"nodeType":"ImportDirective","scope":5128,"sourceUnit":6249,"src":"363:39:32","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"../../utils/Strings.sol","id":4196,"nodeType":"ImportDirective","scope":5128,"sourceUnit":6828,"src":"403:33:32","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4198,"name":"Context","nodeType":"UserDefinedTypeName","referencedDeclaration":5638,"src":"582:7:32","typeDescriptions":{"typeIdentifier":"t_contract$_Context_$5638","typeString":"contract Context"}},"id":4199,"nodeType":"InheritanceSpecifier","src":"582:7:32"},{"baseName":{"id":4200,"name":"ERC165","nodeType":"UserDefinedTypeName","referencedDeclaration":3056,"src":"591:6:32","typeDescriptions":{"typeIdentifier":"t_contract$_ERC165_$3056","typeString":"contract ERC165"}},"id":4201,"nodeType":"InheritanceSpecifier","src":"591:6:32"},{"baseName":{"id":4202,"name":"IERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":5243,"src":"599:7:32","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$5243","typeString":"contract IERC721"}},"id":4203,"nodeType":"InheritanceSpecifier","src":"599:7:32"},{"baseName":{"id":4204,"name":"IERC721Metadata","nodeType":"UserDefinedTypeName","referencedDeclaration":5301,"src":"608:15:32","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Metadata_$5301","typeString":"contract IERC721Metadata"}},"id":4205,"nodeType":"InheritanceSpecifier","src":"608:15:32"},{"baseName":{"id":4206,"name":"IERC721Enumerable","nodeType":"UserDefinedTypeName","referencedDeclaration":5274,"src":"625:17:32","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Enumerable_$5274","typeString":"contract IERC721Enumerable"}},"id":4207,"nodeType":"InheritanceSpecifier","src":"625:17:32"}],"contractDependencies":[3056,3068,5243,5274,5301,5638],"contractKind":"contract","documentation":{"id":4197,"nodeType":"StructuredDocumentation","src":"438:124:32","text":" @title ERC721 Non-Fungible Token Standard basic implementation\n @dev see https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":true,"id":5127,"linearizedBaseContracts":[5127,5274,5301,5243,3056,3068,5638],"name":"ERC721","nodeType":"ContractDefinition","nodes":[{"id":4210,"libraryName":{"id":4208,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":3423,"src":"655:8:32","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$3423","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"649:27:32","typeName":{"id":4209,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":4213,"libraryName":{"id":4211,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":5615,"src":"687:7:32","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$5615","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"681:26:32","typeName":{"id":4212,"name":"address","nodeType":"ElementaryTypeName","src":"699:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"id":4216,"libraryName":{"id":4214,"name":"EnumerableSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6740,"src":"718:13:32","typeDescriptions":{"typeIdentifier":"t_contract$_EnumerableSet_$6740","typeString":"library EnumerableSet"}},"nodeType":"UsingForDirective","src":"712:46:32","typeName":{"id":4215,"name":"EnumerableSet.UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6645,"src":"736:21:32","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage_ptr","typeString":"struct EnumerableSet.UintSet"}}},{"id":4219,"libraryName":{"id":4217,"name":"EnumerableMap","nodeType":"UserDefinedTypeName","referencedDeclaration":6248,"src":"769:13:32","typeDescriptions":{"typeIdentifier":"t_contract$_EnumerableMap_$6248","typeString":"library EnumerableMap"}},"nodeType":"UsingForDirective","src":"763:55:32","typeName":{"id":4218,"name":"EnumerableMap.UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":6022,"src":"787:30:32","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}}},{"id":4222,"libraryName":{"id":4220,"name":"Strings","nodeType":"UserDefinedTypeName","referencedDeclaration":6827,"src":"829:7:32","typeDescriptions":{"typeIdentifier":"t_contract$_Strings_$6827","typeString":"library Strings"}},"nodeType":"UsingForDirective","src":"823:26:32","typeName":{"id":4221,"name":"uint256","nodeType":"ElementaryTypeName","src":"841:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":4225,"mutability":"constant","name":"_ERC721_RECEIVED","nodeType":"VariableDeclaration","scope":5127,"src":"1027:53:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4223,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1027:6:32","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783135306237613032","id":4224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1070:10:32","typeDescriptions":{"typeIdentifier":"t_rational_353073666_by_1","typeString":"int_const 353073666"},"value":"0x150b7a02"},"visibility":"private"},{"constant":false,"id":4229,"mutability":"mutable","name":"_holderTokens","nodeType":"VariableDeclaration","scope":5127,"src":"1164:64:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$6645_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet)"},"typeName":{"id":4228,"keyType":{"id":4226,"name":"address","nodeType":"ElementaryTypeName","src":"1173:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1164:42:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$6645_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet)"},"valueType":{"id":4227,"name":"EnumerableSet.UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6645,"src":"1184:21:32","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage_ptr","typeString":"struct EnumerableSet.UintSet"}}},"visibility":"private"},{"constant":false,"id":4231,"mutability":"mutable","name":"_tokenOwners","nodeType":"VariableDeclaration","scope":5127,"src":"1292:51:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":4230,"name":"EnumerableMap.UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":6022,"src":"1292:30:32","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"private"},{"constant":false,"id":4235,"mutability":"mutable","name":"_tokenApprovals","nodeType":"VariableDeclaration","scope":5127,"src":"1399:52:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":4234,"keyType":{"id":4232,"name":"uint256","nodeType":"ElementaryTypeName","src":"1408:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1399:28:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":4233,"name":"address","nodeType":"ElementaryTypeName","src":"1419:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":4241,"mutability":"mutable","name":"_operatorApprovals","nodeType":"VariableDeclaration","scope":5127,"src":"1506:73:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":4240,"keyType":{"id":4236,"name":"address","nodeType":"ElementaryTypeName","src":"1515:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1506:46:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":4239,"keyType":{"id":4237,"name":"address","nodeType":"ElementaryTypeName","src":"1535:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1526:25:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":4238,"name":"bool","nodeType":"ElementaryTypeName","src":"1546:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"constant":false,"id":4243,"mutability":"mutable","name":"_name","nodeType":"VariableDeclaration","scope":5127,"src":"1604:20:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":4242,"name":"string","nodeType":"ElementaryTypeName","src":"1604:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":4245,"mutability":"mutable","name":"_symbol","nodeType":"VariableDeclaration","scope":5127,"src":"1651:22:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":4244,"name":"string","nodeType":"ElementaryTypeName","src":"1651:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":4249,"mutability":"mutable","name":"_tokenURIs","nodeType":"VariableDeclaration","scope":5127,"src":"1719:46:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string)"},"typeName":{"id":4248,"keyType":{"id":4246,"name":"uint256","nodeType":"ElementaryTypeName","src":"1728:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1719:27:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string)"},"valueType":{"id":4247,"name":"string","nodeType":"ElementaryTypeName","src":"1739:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"visibility":"private"},{"constant":false,"id":4251,"mutability":"mutable","name":"_baseURI","nodeType":"VariableDeclaration","scope":5127,"src":"1788:23:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":4250,"name":"string","nodeType":"ElementaryTypeName","src":"1788:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":true,"id":4254,"mutability":"constant","name":"_INTERFACE_ID_ERC721","nodeType":"VariableDeclaration","scope":5127,"src":"2687:57:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4252,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2687:6:32","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783830616335386364","id":4253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2734:10:32","typeDescriptions":{"typeIdentifier":"t_rational_2158778573_by_1","typeString":"int_const 2158778573"},"value":"0x80ac58cd"},"visibility":"private"},{"constant":true,"id":4257,"mutability":"constant","name":"_INTERFACE_ID_ERC721_METADATA","nodeType":"VariableDeclaration","scope":5127,"src":"3010:66:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4255,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3010:6:32","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783562356531333966","id":4256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3066:10:32","typeDescriptions":{"typeIdentifier":"t_rational_1532892063_by_1","typeString":"int_const 1532892063"},"value":"0x5b5e139f"},"visibility":"private"},{"constant":true,"id":4260,"mutability":"constant","name":"_INTERFACE_ID_ERC721_ENUMERABLE","nodeType":"VariableDeclaration","scope":5127,"src":"3381:68:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4258,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3381:6:32","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783738306539643633","id":4259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3439:10:32","typeDescriptions":{"typeIdentifier":"t_rational_2014223715_by_1","typeString":"int_const 2014223715"},"value":"0x780e9d63"},"visibility":"private"},{"body":{"id":4288,"nodeType":"Block","src":"3626:305:32","statements":[{"expression":{"id":4270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4268,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4243,"src":"3636:5:32","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4269,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4263,"src":"3644:5:32","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3636:13:32","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":4271,"nodeType":"ExpressionStatement","src":"3636:13:32"},{"expression":{"id":4274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4272,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4245,"src":"3659:7:32","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4273,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4265,"src":"3669:7:32","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3659:17:32","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":4275,"nodeType":"ExpressionStatement","src":"3659:17:32"},{"expression":{"arguments":[{"id":4277,"name":"_INTERFACE_ID_ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4254,"src":"3783:20:32","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":4276,"name":"_registerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3055,"src":"3764:18:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4)"}},"id":4278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3764:40:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4279,"nodeType":"ExpressionStatement","src":"3764:40:32"},{"expression":{"arguments":[{"id":4281,"name":"_INTERFACE_ID_ERC721_METADATA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4257,"src":"3833:29:32","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":4280,"name":"_registerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3055,"src":"3814:18:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4)"}},"id":4282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3814:49:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4283,"nodeType":"ExpressionStatement","src":"3814:49:32"},{"expression":{"arguments":[{"id":4285,"name":"_INTERFACE_ID_ERC721_ENUMERABLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4260,"src":"3892:31:32","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":4284,"name":"_registerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3055,"src":"3873:18:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4)"}},"id":4286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3873:51:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4287,"nodeType":"ExpressionStatement","src":"3873:51:32"}]},"documentation":{"id":4261,"nodeType":"StructuredDocumentation","src":"3456:108:32","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"id":4289,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":4266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4263,"mutability":"mutable","name":"name_","nodeType":"VariableDeclaration","scope":4289,"src":"3582:19:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4262,"name":"string","nodeType":"ElementaryTypeName","src":"3582:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4265,"mutability":"mutable","name":"symbol_","nodeType":"VariableDeclaration","scope":4289,"src":"3603:21:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4264,"name":"string","nodeType":"ElementaryTypeName","src":"3603:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3581:44:32"},"returnParameters":{"id":4267,"nodeType":"ParameterList","parameters":[],"src":"3626:0:32"},"scope":5127,"src":"3569:362:32","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[5168],"body":{"id":4314,"nodeType":"Block","src":"4071:137:32","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4299,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4292,"src":"4089:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4106:1:32","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":4301,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4098:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4300,"name":"address","nodeType":"ElementaryTypeName","src":"4098:7:32","typeDescriptions":{}}},"id":4303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4098:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4089:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373","id":4305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4110:44:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba","typeString":"literal_string \"ERC721: balance query for the zero address\""},"value":"ERC721: balance query for the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba","typeString":"literal_string \"ERC721: balance query for the zero address\""}],"id":4298,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4081:7:32","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4081:74:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4307,"nodeType":"ExpressionStatement","src":"4081:74:32"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":4308,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4229,"src":"4172:13:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$6645_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":4310,"indexExpression":{"id":4309,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4292,"src":"4186:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4172:20:32","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":4311,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":6719,"src":"4172:27:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintSet_$6645_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_UintSet_$6645_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer) view returns (uint256)"}},"id":4312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4172:29:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4297,"id":4313,"nodeType":"Return","src":"4165:36:32"}]},"documentation":{"id":4290,"nodeType":"StructuredDocumentation","src":"3937:48:32","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","id":4315,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","overrides":{"id":4294,"nodeType":"OverrideSpecifier","overrides":[],"src":"4044:8:32"},"parameters":{"id":4293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4292,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":4315,"src":"4009:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4291,"name":"address","nodeType":"ElementaryTypeName","src":"4009:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4008:15:32"},"returnParameters":{"id":4297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4296,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4315,"src":"4062:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4295,"name":"uint256","nodeType":"ElementaryTypeName","src":"4062:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4061:9:32"},"scope":5127,"src":"3990:218:32","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[5176],"body":{"id":4330,"nodeType":"Block","src":"4346:94:32","statements":[{"expression":{"arguments":[{"id":4326,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4318,"src":"4380:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e","id":4327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4389:43:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397","typeString":"literal_string \"ERC721: owner query for nonexistent token\""},"value":"ERC721: owner query for nonexistent token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397","typeString":"literal_string \"ERC721: owner query for nonexistent token\""}],"expression":{"id":4324,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"4363:12:32","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":4325,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"get","nodeType":"MemberAccess","referencedDeclaration":6247,"src":"4363:16:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintToAddressMap_$6022_storage_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_address_$bound_to$_t_struct$_UintToAddressMap_$6022_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,string memory) view returns (address)"}},"id":4328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4363:70:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":4323,"id":4329,"nodeType":"Return","src":"4356:77:32"}]},"documentation":{"id":4316,"nodeType":"StructuredDocumentation","src":"4214:46:32","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","id":4331,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nodeType":"FunctionDefinition","overrides":{"id":4320,"nodeType":"OverrideSpecifier","overrides":[],"src":"4319:8:32"},"parameters":{"id":4319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4318,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4331,"src":"4282:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4317,"name":"uint256","nodeType":"ElementaryTypeName","src":"4282:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4281:17:32"},"returnParameters":{"id":4323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4322,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4331,"src":"4337:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4321,"name":"address","nodeType":"ElementaryTypeName","src":"4337:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4336:9:32"},"scope":5127,"src":"4265:175:32","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[5286],"body":{"id":4340,"nodeType":"Block","src":"4571:29:32","statements":[{"expression":{"id":4338,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4243,"src":"4588:5:32","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":4337,"id":4339,"nodeType":"Return","src":"4581:12:32"}]},"documentation":{"id":4332,"nodeType":"StructuredDocumentation","src":"4446:51:32","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","id":4341,"implemented":true,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","overrides":{"id":4334,"nodeType":"OverrideSpecifier","overrides":[],"src":"4538:8:32"},"parameters":{"id":4333,"nodeType":"ParameterList","parameters":[],"src":"4515:2:32"},"returnParameters":{"id":4337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4336,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4341,"src":"4556:13:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4335,"name":"string","nodeType":"ElementaryTypeName","src":"4556:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4555:15:32"},"scope":5127,"src":"4502:98:32","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[5292],"body":{"id":4350,"nodeType":"Block","src":"4735:31:32","statements":[{"expression":{"id":4348,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4245,"src":"4752:7:32","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":4347,"id":4349,"nodeType":"Return","src":"4745:14:32"}]},"documentation":{"id":4342,"nodeType":"StructuredDocumentation","src":"4606:53:32","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","id":4351,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","overrides":{"id":4344,"nodeType":"OverrideSpecifier","overrides":[],"src":"4702:8:32"},"parameters":{"id":4343,"nodeType":"ParameterList","parameters":[],"src":"4679:2:32"},"returnParameters":{"id":4347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4346,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4351,"src":"4720:13:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4345,"name":"string","nodeType":"ElementaryTypeName","src":"4720:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4719:15:32"},"scope":5127,"src":"4664:102:32","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[5300],"body":{"id":4418,"nodeType":"Block","src":"4920:688:32","statements":[{"expression":{"arguments":[{"arguments":[{"id":4362,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4354,"src":"4946:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4361,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4714,"src":"4938:7:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":4363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4938:16:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e","id":4364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4956:49:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb","typeString":"literal_string \"ERC721Metadata: URI query for nonexistent token\""},"value":"ERC721Metadata: URI query for nonexistent token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb","typeString":"literal_string \"ERC721Metadata: URI query for nonexistent token\""}],"id":4360,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4930:7:32","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4930:76:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4366,"nodeType":"ExpressionStatement","src":"4930:76:32"},{"assignments":[4368],"declarations":[{"constant":false,"id":4368,"mutability":"mutable","name":"_tokenURI","nodeType":"VariableDeclaration","scope":4418,"src":"5017:23:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4367,"name":"string","nodeType":"ElementaryTypeName","src":"5017:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":4372,"initialValue":{"baseExpression":{"id":4369,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4249,"src":"5043:10:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":4371,"indexExpression":{"id":4370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4354,"src":"5054:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5043:19:32","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"VariableDeclarationStatement","src":"5017:45:32"},{"assignments":[4374],"declarations":[{"constant":false,"id":4374,"mutability":"mutable","name":"base","nodeType":"VariableDeclaration","scope":4418,"src":"5072:18:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4373,"name":"string","nodeType":"ElementaryTypeName","src":"5072:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":4377,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":4375,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4428,"src":"5093:7:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":4376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5093:9:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"5072:30:32"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":4380,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"5181:4:32","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":4379,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5175:5:32","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":4378,"name":"bytes","nodeType":"ElementaryTypeName","src":"5175:5:32","typeDescriptions":{}}},"id":4381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5175:11:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5175:18:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5197:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5175:23:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4388,"nodeType":"IfStatement","src":"5171:70:32","trueBody":{"id":4387,"nodeType":"Block","src":"5200:41:32","statements":[{"expression":{"id":4385,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4368,"src":"5221:9:32","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4359,"id":4386,"nodeType":"Return","src":"5214:16:32"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":4391,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4368,"src":"5349:9:32","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":4390,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5343:5:32","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":4389,"name":"bytes","nodeType":"ElementaryTypeName","src":"5343:5:32","typeDescriptions":{}}},"id":4392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5343:16:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5343:23:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5369:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5343:27:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4406,"nodeType":"IfStatement","src":"5339:106:32","trueBody":{"id":4405,"nodeType":"Block","src":"5372:73:32","statements":[{"expression":{"arguments":[{"arguments":[{"id":4400,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"5417:4:32","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":4401,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4368,"src":"5423:9:32","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":4398,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5400:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4399,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"5400:16:32","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5400:33:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5393:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":4396,"name":"string","nodeType":"ElementaryTypeName","src":"5393:6:32","typeDescriptions":{}}},"id":4403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5393:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4359,"id":4404,"nodeType":"Return","src":"5386:48:32"}]}},{"expression":{"arguments":[{"arguments":[{"id":4411,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"5575:4:32","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4412,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4354,"src":"5581:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":6826,"src":"5581:16:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":4414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5581:18:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":4409,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5558:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"5558:16:32","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5558:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4408,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5551:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":4407,"name":"string","nodeType":"ElementaryTypeName","src":"5551:6:32","typeDescriptions":{}}},"id":4416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5551:50:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4359,"id":4417,"nodeType":"Return","src":"5544:57:32"}]},"documentation":{"id":4352,"nodeType":"StructuredDocumentation","src":"4772:55:32","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","id":4419,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nodeType":"FunctionDefinition","overrides":{"id":4356,"nodeType":"OverrideSpecifier","overrides":[],"src":"4887:8:32"},"parameters":{"id":4355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4354,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4419,"src":"4850:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4353,"name":"uint256","nodeType":"ElementaryTypeName","src":"4850:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4849:17:32"},"returnParameters":{"id":4359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4358,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4419,"src":"4905:13:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4357,"name":"string","nodeType":"ElementaryTypeName","src":"4905:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4904:15:32"},"scope":5127,"src":"4832:776:32","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":4427,"nodeType":"Block","src":"5903:32:32","statements":[{"expression":{"id":4425,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4251,"src":"5920:8:32","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":4424,"id":4426,"nodeType":"Return","src":"5913:15:32"}]},"documentation":{"id":4420,"nodeType":"StructuredDocumentation","src":"5614:221:32","text":" @dev Returns the base URI set via {_setBaseURI}. This will be\n automatically added as a prefix in {tokenURI} to each token's URI, or\n to the token ID if no specific URI is set for that token ID."},"functionSelector":"6c0360eb","id":4428,"implemented":true,"kind":"function","modifiers":[],"name":"baseURI","nodeType":"FunctionDefinition","parameters":{"id":4421,"nodeType":"ParameterList","parameters":[],"src":"5856:2:32"},"returnParameters":{"id":4424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4423,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4428,"src":"5888:13:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4422,"name":"string","nodeType":"ElementaryTypeName","src":"5888:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5887:15:32"},"scope":5127,"src":"5840:95:32","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[5265],"body":{"id":4446,"nodeType":"Block","src":"6120:54:32","statements":[{"expression":{"arguments":[{"id":4443,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"6161:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":4439,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4229,"src":"6137:13:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$6645_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":4441,"indexExpression":{"id":4440,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"6151:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6137:20:32","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":4442,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"at","nodeType":"MemberAccess","referencedDeclaration":6739,"src":"6137:23:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintSet_$6645_storage_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_struct$_UintSet_$6645_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer,uint256) view returns (uint256)"}},"id":4444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6137:30:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4438,"id":4445,"nodeType":"Return","src":"6130:37:32"}]},"documentation":{"id":4429,"nodeType":"StructuredDocumentation","src":"5941:68:32","text":" @dev See {IERC721Enumerable-tokenOfOwnerByIndex}."},"functionSelector":"2f745c59","id":4447,"implemented":true,"kind":"function","modifiers":[],"name":"tokenOfOwnerByIndex","nodeType":"FunctionDefinition","overrides":{"id":4435,"nodeType":"OverrideSpecifier","overrides":[],"src":"6093:8:32"},"parameters":{"id":4434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4431,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":4447,"src":"6043:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4430,"name":"address","nodeType":"ElementaryTypeName","src":"6043:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4433,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":4447,"src":"6058:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4432,"name":"uint256","nodeType":"ElementaryTypeName","src":"6058:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6042:30:32"},"returnParameters":{"id":4438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4437,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4447,"src":"6111:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4436,"name":"uint256","nodeType":"ElementaryTypeName","src":"6111:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6110:9:32"},"scope":5127,"src":"6014:160:32","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[5255],"body":{"id":4458,"nodeType":"Block","src":"6315:138:32","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4454,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"6425:12:32","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":4455,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":6108,"src":"6425:19:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintToAddressMap_$6022_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_UintToAddressMap_$6022_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer) view returns (uint256)"}},"id":4456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6425:21:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4453,"id":4457,"nodeType":"Return","src":"6418:28:32"}]},"documentation":{"id":4448,"nodeType":"StructuredDocumentation","src":"6180:60:32","text":" @dev See {IERC721Enumerable-totalSupply}."},"functionSelector":"18160ddd","id":4459,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","overrides":{"id":4450,"nodeType":"OverrideSpecifier","overrides":[],"src":"6288:8:32"},"parameters":{"id":4449,"nodeType":"ParameterList","parameters":[],"src":"6265:2:32"},"returnParameters":{"id":4453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4452,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4459,"src":"6306:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4451,"name":"uint256","nodeType":"ElementaryTypeName","src":"6306:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6305:9:32"},"scope":5127,"src":"6245:208:32","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[5273],"body":{"id":4477,"nodeType":"Block","src":"6609:85:32","statements":[{"assignments":[4469,null],"declarations":[{"constant":false,"id":4469,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4477,"src":"6620:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4468,"name":"uint256","nodeType":"ElementaryTypeName","src":"6620:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":4474,"initialValue":{"arguments":[{"id":4472,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4462,"src":"6657:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4470,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"6641:12:32","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":4471,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"at","nodeType":"MemberAccess","referencedDeclaration":6147,"src":"6641:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintToAddressMap_$6022_storage_ptr_$_t_uint256_$returns$_t_uint256_$_t_address_$bound_to$_t_struct$_UintToAddressMap_$6022_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) view returns (uint256,address)"}},"id":4473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6641:22:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$","typeString":"tuple(uint256,address)"}},"nodeType":"VariableDeclarationStatement","src":"6619:44:32"},{"expression":{"id":4475,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4469,"src":"6680:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4467,"id":4476,"nodeType":"Return","src":"6673:14:32"}]},"documentation":{"id":4460,"nodeType":"StructuredDocumentation","src":"6459:61:32","text":" @dev See {IERC721Enumerable-tokenByIndex}."},"functionSelector":"4f6ccce7","id":4478,"implemented":true,"kind":"function","modifiers":[],"name":"tokenByIndex","nodeType":"FunctionDefinition","overrides":{"id":4464,"nodeType":"OverrideSpecifier","overrides":[],"src":"6582:8:32"},"parameters":{"id":4463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4462,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":4478,"src":"6547:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4461,"name":"uint256","nodeType":"ElementaryTypeName","src":"6547:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6546:15:32"},"returnParameters":{"id":4467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4466,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4478,"src":"6600:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4465,"name":"uint256","nodeType":"ElementaryTypeName","src":"6600:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6599:9:32"},"scope":5127,"src":"6525:169:32","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[5204],"body":{"id":4521,"nodeType":"Block","src":"6821:325:32","statements":[{"assignments":[4488],"declarations":[{"constant":false,"id":4488,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":4521,"src":"6831:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4487,"name":"address","nodeType":"ElementaryTypeName","src":"6831:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4493,"initialValue":{"arguments":[{"id":4491,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4483,"src":"6862:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4489,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5127,"src":"6847:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$5127_$","typeString":"type(contract ERC721)"}},"id":4490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":4331,"src":"6847:14:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":4492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6847:23:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6831:39:32"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4495,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4481,"src":"6888:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4496,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4488,"src":"6894:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6888:11:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572","id":4498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6901:35:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""},"value":"ERC721: approval to current owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""}],"id":4494,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6880:7:32","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6880:57:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4500,"nodeType":"ExpressionStatement","src":"6880:57:32"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4502,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5626,"src":"6956:10:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":4503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6956:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4504,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4488,"src":"6972:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6956:21:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":4508,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4488,"src":"7005:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":4509,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5626,"src":"7012:10:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":4510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7012:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":4506,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5127,"src":"6981:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$5127_$","typeString":"type(contract ERC721)"}},"id":4507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isApprovedForAll","nodeType":"MemberAccess","referencedDeclaration":4595,"src":"6981:23:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":4511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6981:44:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6956:69:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c","id":4513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7039:58:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d","typeString":"literal_string \"ERC721: approve caller is not owner nor approved for all\""},"value":"ERC721: approve caller is not owner nor approved for all"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d","typeString":"literal_string \"ERC721: approve caller is not owner nor approved for all\""}],"id":4501,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6948:7:32","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6948:159:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4515,"nodeType":"ExpressionStatement","src":"6948:159:32"},{"expression":{"arguments":[{"id":4517,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4481,"src":"7127:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4518,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4483,"src":"7131:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4516,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5115,"src":"7118:8:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":4519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7118:21:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4520,"nodeType":"ExpressionStatement","src":"7118:21:32"}]},"documentation":{"id":4479,"nodeType":"StructuredDocumentation","src":"6700:46:32","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","id":4522,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","overrides":{"id":4485,"nodeType":"OverrideSpecifier","overrides":[],"src":"6812:8:32"},"parameters":{"id":4484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4481,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":4522,"src":"6768:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4480,"name":"address","nodeType":"ElementaryTypeName","src":"6768:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4483,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4522,"src":"6780:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4482,"name":"uint256","nodeType":"ElementaryTypeName","src":"6780:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6767:29:32"},"returnParameters":{"id":4486,"nodeType":"ParameterList","parameters":[],"src":"6821:0:32"},"scope":5127,"src":"6751:395:32","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[5212],"body":{"id":4542,"nodeType":"Block","src":"7292:132:32","statements":[{"expression":{"arguments":[{"arguments":[{"id":4533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4525,"src":"7318:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4532,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4714,"src":"7310:7:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":4534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7310:16:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e","id":4535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7328:46:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d","typeString":"literal_string \"ERC721: approved query for nonexistent token\""},"value":"ERC721: approved query for nonexistent token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d","typeString":"literal_string \"ERC721: approved query for nonexistent token\""}],"id":4531,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7302:7:32","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7302:73:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4537,"nodeType":"ExpressionStatement","src":"7302:73:32"},{"expression":{"baseExpression":{"id":4538,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4235,"src":"7393:15:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":4540,"indexExpression":{"id":4539,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4525,"src":"7409:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7393:24:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":4530,"id":4541,"nodeType":"Return","src":"7386:31:32"}]},"documentation":{"id":4523,"nodeType":"StructuredDocumentation","src":"7152:50:32","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","id":4543,"implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nodeType":"FunctionDefinition","overrides":{"id":4527,"nodeType":"OverrideSpecifier","overrides":[],"src":"7265:8:32"},"parameters":{"id":4526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4525,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4543,"src":"7228:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4524,"name":"uint256","nodeType":"ElementaryTypeName","src":"7228:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7227:17:32"},"returnParameters":{"id":4530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4529,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4543,"src":"7283:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4528,"name":"address","nodeType":"ElementaryTypeName","src":"7283:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7282:9:32"},"scope":5127,"src":"7207:217:32","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[5220],"body":{"id":4576,"nodeType":"Block","src":"7575:206:32","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4553,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4546,"src":"7593:8:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4554,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5626,"src":"7605:10:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":4555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7605:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7593:24:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","id":4557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7619:27:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""},"value":"ERC721: approve to caller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""}],"id":4552,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7585:7:32","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7585:62:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4559,"nodeType":"ExpressionStatement","src":"7585:62:32"},{"expression":{"id":4567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":4560,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"7658:18:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":4564,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4561,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5626,"src":"7677:10:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":4562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7677:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7658:32:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":4565,"indexExpression":{"id":4563,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4546,"src":"7691:8:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7658:42:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4566,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4548,"src":"7703:8:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7658:53:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4568,"nodeType":"ExpressionStatement","src":"7658:53:32"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4570,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5626,"src":"7741:10:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":4571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7741:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":4572,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4546,"src":"7755:8:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4573,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4548,"src":"7765:8:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4569,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5160,"src":"7726:14:32","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":4574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7726:48:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4575,"nodeType":"EmitStatement","src":"7721:53:32"}]},"documentation":{"id":4544,"nodeType":"StructuredDocumentation","src":"7430:56:32","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","id":4577,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nodeType":"FunctionDefinition","overrides":{"id":4550,"nodeType":"OverrideSpecifier","overrides":[],"src":"7566:8:32"},"parameters":{"id":4549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4546,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":4577,"src":"7518:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4545,"name":"address","nodeType":"ElementaryTypeName","src":"7518:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4548,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":4577,"src":"7536:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4547,"name":"bool","nodeType":"ElementaryTypeName","src":"7536:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7517:33:32"},"returnParameters":{"id":4551,"nodeType":"ParameterList","parameters":[],"src":"7575:0:32"},"scope":5127,"src":"7491:290:32","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[5230],"body":{"id":4594,"nodeType":"Block","src":"7950:59:32","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":4588,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"7967:18:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":4590,"indexExpression":{"id":4589,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4580,"src":"7986:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7967:25:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":4592,"indexExpression":{"id":4591,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4582,"src":"7993:8:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7967:35:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4587,"id":4593,"nodeType":"Return","src":"7960:42:32"}]},"documentation":{"id":4578,"nodeType":"StructuredDocumentation","src":"7787:55:32","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","id":4595,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nodeType":"FunctionDefinition","overrides":{"id":4584,"nodeType":"OverrideSpecifier","overrides":[],"src":"7926:8:32"},"parameters":{"id":4583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4580,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":4595,"src":"7873:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4579,"name":"address","nodeType":"ElementaryTypeName","src":"7873:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4582,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":4595,"src":"7888:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4581,"name":"address","nodeType":"ElementaryTypeName","src":"7888:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7872:33:32"},"returnParameters":{"id":4587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4586,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4595,"src":"7944:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4585,"name":"bool","nodeType":"ElementaryTypeName","src":"7944:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7943:6:32"},"scope":5127,"src":"7847:162:32","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[5196],"body":{"id":4621,"nodeType":"Block","src":"8160:211:32","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4608,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5626,"src":"8249:10:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":4609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8249:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":4610,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4602,"src":"8263:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4607,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4756,"src":"8230:18:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":4611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8230:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564","id":4612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8273:51:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2","typeString":"literal_string \"ERC721: transfer caller is not owner nor approved\""},"value":"ERC721: transfer caller is not owner nor approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2","typeString":"literal_string \"ERC721: transfer caller is not owner nor approved\""}],"id":4606,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8222:7:32","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8222:103:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4614,"nodeType":"ExpressionStatement","src":"8222:103:32"},{"expression":{"arguments":[{"id":4616,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4598,"src":"8346:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4617,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4600,"src":"8352:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4618,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4602,"src":"8356:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4615,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5000,"src":"8336:9:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8336:28:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4620,"nodeType":"ExpressionStatement","src":"8336:28:32"}]},"documentation":{"id":4596,"nodeType":"StructuredDocumentation","src":"8015:51:32","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","id":4622,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":{"id":4604,"nodeType":"OverrideSpecifier","overrides":[],"src":"8151:8:32"},"parameters":{"id":4603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4598,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":4622,"src":"8093:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4597,"name":"address","nodeType":"ElementaryTypeName","src":"8093:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4600,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":4622,"src":"8107:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4599,"name":"address","nodeType":"ElementaryTypeName","src":"8107:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4602,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4622,"src":"8119:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4601,"name":"uint256","nodeType":"ElementaryTypeName","src":"8119:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8092:43:32"},"returnParameters":{"id":4605,"nodeType":"ParameterList","parameters":[],"src":"8160:0:32"},"scope":5127,"src":"8071:300:32","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[5186],"body":{"id":4640,"nodeType":"Block","src":"8530:56:32","statements":[{"expression":{"arguments":[{"id":4634,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4625,"src":"8557:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4635,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"8563:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4636,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4629,"src":"8567:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":4637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8576:2:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":4633,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[4641,4671],"referencedDeclaration":4671,"src":"8540:16:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":4638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8540:39:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4639,"nodeType":"ExpressionStatement","src":"8540:39:32"}]},"documentation":{"id":4623,"nodeType":"StructuredDocumentation","src":"8377:55:32","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","id":4641,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","overrides":{"id":4631,"nodeType":"OverrideSpecifier","overrides":[],"src":"8521:8:32"},"parameters":{"id":4630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4625,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":4641,"src":"8463:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4624,"name":"address","nodeType":"ElementaryTypeName","src":"8463:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4627,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":4641,"src":"8477:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4626,"name":"address","nodeType":"ElementaryTypeName","src":"8477:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4629,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4641,"src":"8489:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4628,"name":"uint256","nodeType":"ElementaryTypeName","src":"8489:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8462:43:32"},"returnParameters":{"id":4632,"nodeType":"ParameterList","parameters":[],"src":"8530:0:32"},"scope":5127,"src":"8437:149:32","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[5242],"body":{"id":4670,"nodeType":"Block","src":"8765:169:32","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4656,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5626,"src":"8802:10:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":4657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8802:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":4658,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4648,"src":"8816:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4655,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4756,"src":"8783:18:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":4659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8783:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564","id":4660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8826:51:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2","typeString":"literal_string \"ERC721: transfer caller is not owner nor approved\""},"value":"ERC721: transfer caller is not owner nor approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2","typeString":"literal_string \"ERC721: transfer caller is not owner nor approved\""}],"id":4654,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8775:7:32","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8775:103:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4662,"nodeType":"ExpressionStatement","src":"8775:103:32"},{"expression":{"arguments":[{"id":4664,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4644,"src":"8902:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4665,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4646,"src":"8908:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4666,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4648,"src":"8912:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4667,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4650,"src":"8921:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4663,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4700,"src":"8888:13:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":4668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8888:39:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4669,"nodeType":"ExpressionStatement","src":"8888:39:32"}]},"documentation":{"id":4642,"nodeType":"StructuredDocumentation","src":"8592:55:32","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","id":4671,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","overrides":{"id":4652,"nodeType":"OverrideSpecifier","overrides":[],"src":"8756:8:32"},"parameters":{"id":4651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4644,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":4671,"src":"8678:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4643,"name":"address","nodeType":"ElementaryTypeName","src":"8678:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4646,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":4671,"src":"8692:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4645,"name":"address","nodeType":"ElementaryTypeName","src":"8692:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4648,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4671,"src":"8704:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4647,"name":"uint256","nodeType":"ElementaryTypeName","src":"8704:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4650,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":4671,"src":"8721:18:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4649,"name":"bytes","nodeType":"ElementaryTypeName","src":"8721:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8677:63:32"},"returnParameters":{"id":4653,"nodeType":"ParameterList","parameters":[],"src":"8765:0:32"},"scope":5127,"src":"8652:282:32","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":4699,"nodeType":"Block","src":"9899:166:32","statements":[{"expression":{"arguments":[{"id":4684,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4674,"src":"9919:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4685,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4676,"src":"9925:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4686,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4678,"src":"9929:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4683,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5000,"src":"9909:9:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9909:28:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4688,"nodeType":"ExpressionStatement","src":"9909:28:32"},{"expression":{"arguments":[{"arguments":[{"id":4691,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4674,"src":"9978:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4692,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4676,"src":"9984:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4693,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4678,"src":"9988:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4694,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4680,"src":"9997:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4690,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5091,"src":"9955:22:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":4695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9955:48:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":4696,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10005:52:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":4689,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9947:7:32","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9947:111:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4698,"nodeType":"ExpressionStatement","src":"9947:111:32"}]},"documentation":{"id":4672,"nodeType":"StructuredDocumentation","src":"8940:851:32","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `_data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":4700,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nodeType":"FunctionDefinition","parameters":{"id":4681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4674,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":4700,"src":"9819:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4673,"name":"address","nodeType":"ElementaryTypeName","src":"9819:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4676,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":4700,"src":"9833:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4675,"name":"address","nodeType":"ElementaryTypeName","src":"9833:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4678,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4700,"src":"9845:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4677,"name":"uint256","nodeType":"ElementaryTypeName","src":"9845:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4680,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":4700,"src":"9862:18:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4679,"name":"bytes","nodeType":"ElementaryTypeName","src":"9862:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9818:63:32"},"returnParameters":{"id":4682,"nodeType":"ParameterList","parameters":[],"src":"9899:0:32"},"scope":5127,"src":"9796:269:32","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4713,"nodeType":"Block","src":"10439:54:32","statements":[{"expression":{"arguments":[{"id":4710,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4703,"src":"10478:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4708,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"10456:12:32","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":4709,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":6094,"src":"10456:21:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_UintToAddressMap_$6022_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$6022_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) view returns (bool)"}},"id":4711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10456:30:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4707,"id":4712,"nodeType":"Return","src":"10449:37:32"}]},"documentation":{"id":4701,"nodeType":"StructuredDocumentation","src":"10071:292:32","text":" @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."},"id":4714,"implemented":true,"kind":"function","modifiers":[],"name":"_exists","nodeType":"FunctionDefinition","parameters":{"id":4704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4703,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4714,"src":"10385:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4702,"name":"uint256","nodeType":"ElementaryTypeName","src":"10385:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10384:17:32"},"returnParameters":{"id":4707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4706,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4714,"src":"10433:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4705,"name":"bool","nodeType":"ElementaryTypeName","src":"10433:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10432:6:32"},"scope":5127,"src":"10368:125:32","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":4755,"nodeType":"Block","src":"10750:252:32","statements":[{"expression":{"arguments":[{"arguments":[{"id":4726,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4719,"src":"10776:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4725,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4714,"src":"10768:7:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":4727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10768:16:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e","id":4728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10786:46:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c","typeString":"literal_string \"ERC721: operator query for nonexistent token\""},"value":"ERC721: operator query for nonexistent token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c","typeString":"literal_string \"ERC721: operator query for nonexistent token\""}],"id":4724,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10760:7:32","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10760:73:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4730,"nodeType":"ExpressionStatement","src":"10760:73:32"},{"assignments":[4732],"declarations":[{"constant":false,"id":4732,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":4755,"src":"10843:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4731,"name":"address","nodeType":"ElementaryTypeName","src":"10843:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4737,"initialValue":{"arguments":[{"id":4735,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4719,"src":"10874:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4733,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5127,"src":"10859:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$5127_$","typeString":"type(contract ERC721)"}},"id":4734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":4331,"src":"10859:14:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":4736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10859:23:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10843:39:32"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4738,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4717,"src":"10900:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4739,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"10911:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10900:16:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4742,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4719,"src":"10932:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4741,"name":"getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4543,"src":"10920:11:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":4743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10920:20:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4744,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4717,"src":"10944:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10920:31:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10900:51:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":4749,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"10979:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4750,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4717,"src":"10986:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":4747,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5127,"src":"10955:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$5127_$","typeString":"type(contract ERC721)"}},"id":4748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isApprovedForAll","nodeType":"MemberAccess","referencedDeclaration":4595,"src":"10955:23:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":4751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10955:39:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10900:94:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":4753,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10899:96:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4723,"id":4754,"nodeType":"Return","src":"10892:103:32"}]},"documentation":{"id":4715,"nodeType":"StructuredDocumentation","src":"10499:147:32","text":" @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."},"id":4756,"implemented":true,"kind":"function","modifiers":[],"name":"_isApprovedOrOwner","nodeType":"FunctionDefinition","parameters":{"id":4720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4717,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":4756,"src":"10679:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4716,"name":"address","nodeType":"ElementaryTypeName","src":"10679:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4719,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4756,"src":"10696:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4718,"name":"uint256","nodeType":"ElementaryTypeName","src":"10696:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10678:34:32"},"returnParameters":{"id":4723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4722,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4756,"src":"10744:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4721,"name":"bool","nodeType":"ElementaryTypeName","src":"10744:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10743:6:32"},"scope":5127,"src":"10651:351:32","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":4770,"nodeType":"Block","src":"11398:43:32","statements":[{"expression":{"arguments":[{"id":4765,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4759,"src":"11418:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4766,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4761,"src":"11422:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":4767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11431:2:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":4764,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[4771,4800],"referencedDeclaration":4800,"src":"11408:9:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":4768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11408:26:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4769,"nodeType":"ExpressionStatement","src":"11408:26:32"}]},"documentation":{"id":4757,"nodeType":"StructuredDocumentation","src":"11008:320:32","text":" @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\nd*\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":4771,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nodeType":"FunctionDefinition","parameters":{"id":4762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4759,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":4771,"src":"11352:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4758,"name":"address","nodeType":"ElementaryTypeName","src":"11352:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4761,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4771,"src":"11364:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4760,"name":"uint256","nodeType":"ElementaryTypeName","src":"11364:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11351:29:32"},"returnParameters":{"id":4763,"nodeType":"ParameterList","parameters":[],"src":"11398:0:32"},"scope":5127,"src":"11333:108:32","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4799,"nodeType":"Block","src":"11747:162:32","statements":[{"expression":{"arguments":[{"id":4782,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4774,"src":"11763:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4783,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4776,"src":"11767:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4781,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"11757:5:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":4784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11757:18:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4785,"nodeType":"ExpressionStatement","src":"11757:18:32"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":4790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11824:1:32","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":4789,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11816:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4788,"name":"address","nodeType":"ElementaryTypeName","src":"11816:7:32","typeDescriptions":{}}},"id":4791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11816:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":4792,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4774,"src":"11828:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4793,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4776,"src":"11832:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4794,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4778,"src":"11841:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4787,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5091,"src":"11793:22:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":4795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11793:54:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":4796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11849:52:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":4786,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11785:7:32","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11785:117:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4798,"nodeType":"ExpressionStatement","src":"11785:117:32"}]},"documentation":{"id":4772,"nodeType":"StructuredDocumentation","src":"11447:210:32","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"id":4800,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nodeType":"FunctionDefinition","parameters":{"id":4779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4774,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":4800,"src":"11681:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4773,"name":"address","nodeType":"ElementaryTypeName","src":"11681:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4776,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4800,"src":"11693:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4775,"name":"uint256","nodeType":"ElementaryTypeName","src":"11693:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4778,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":4800,"src":"11710:18:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4777,"name":"bytes","nodeType":"ElementaryTypeName","src":"11710:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11680:49:32"},"returnParameters":{"id":4780,"nodeType":"ParameterList","parameters":[],"src":"11747:0:32"},"scope":5127,"src":"11662:247:32","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4858,"nodeType":"Block","src":"12292:332:32","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4809,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4803,"src":"12310:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12324:1:32","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":4811,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12316:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4810,"name":"address","nodeType":"ElementaryTypeName","src":"12316:7:32","typeDescriptions":{}}},"id":4813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12316:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"12310:16:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","id":4815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12328:34:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""},"value":"ERC721: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""}],"id":4808,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12302:7:32","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12302:61:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4817,"nodeType":"ExpressionStatement","src":"12302:61:32"},{"expression":{"arguments":[{"id":4822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12381:17:32","subExpression":{"arguments":[{"id":4820,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"12390:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4819,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4714,"src":"12382:7:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":4821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12382:16:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":4823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12400:30:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""},"value":"ERC721: token already minted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""}],"id":4818,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12373:7:32","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12373:58:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4825,"nodeType":"ExpressionStatement","src":"12373:58:32"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":4829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12471:1:32","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":4828,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12463:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4827,"name":"address","nodeType":"ElementaryTypeName","src":"12463:7:32","typeDescriptions":{}}},"id":4830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12463:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":4831,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4803,"src":"12475:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4832,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"12479:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4826,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5126,"src":"12442:20:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12442:45:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4834,"nodeType":"ExpressionStatement","src":"12442:45:32"},{"expression":{"arguments":[{"id":4839,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"12520:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":4835,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4229,"src":"12498:13:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$6645_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":4837,"indexExpression":{"id":4836,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4803,"src":"12512:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12498:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":4838,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":6665,"src":"12498:21:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintSet_$6645_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$6645_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)"}},"id":4840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12498:30:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4841,"nodeType":"ExpressionStatement","src":"12498:30:32"},{"expression":{"arguments":[{"id":4845,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"12556:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4846,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4803,"src":"12565:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":4842,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"12539:12:32","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":4844,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"set","nodeType":"MemberAccess","referencedDeclaration":6054,"src":"12539:16:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$6022_storage_ptr_$_t_uint256_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$6022_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,address) returns (bool)"}},"id":4847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12539:29:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4848,"nodeType":"ExpressionStatement","src":"12539:29:32"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":4852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12601:1:32","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":4851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12593:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4850,"name":"address","nodeType":"ElementaryTypeName","src":"12593:7:32","typeDescriptions":{}}},"id":4853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12593:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":4854,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4803,"src":"12605:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4855,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"12609:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4849,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5142,"src":"12584:8:32","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12584:33:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4857,"nodeType":"EmitStatement","src":"12579:38:32"}]},"documentation":{"id":4801,"nodeType":"StructuredDocumentation","src":"11915:311:32","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"id":4859,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nodeType":"FunctionDefinition","parameters":{"id":4806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4803,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":4859,"src":"12246:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4802,"name":"address","nodeType":"ElementaryTypeName","src":"12246:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4805,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4859,"src":"12258:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4804,"name":"uint256","nodeType":"ElementaryTypeName","src":"12258:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12245:29:32"},"returnParameters":{"id":4807,"nodeType":"ParameterList","parameters":[],"src":"12292:0:32"},"scope":5127,"src":"12231:393:32","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4927,"nodeType":"Block","src":"12890:478:32","statements":[{"assignments":[4866],"declarations":[{"constant":false,"id":4866,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":4927,"src":"12900:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4865,"name":"address","nodeType":"ElementaryTypeName","src":"12900:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4871,"initialValue":{"arguments":[{"id":4869,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4862,"src":"12931:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4867,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5127,"src":"12916:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$5127_$","typeString":"type(contract ERC721)"}},"id":4868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":4331,"src":"12916:14:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":4870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12916:23:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12900:39:32"},{"expression":{"arguments":[{"id":4873,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4866,"src":"12989:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13004:1:32","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":4875,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12996:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4874,"name":"address","nodeType":"ElementaryTypeName","src":"12996:7:32","typeDescriptions":{}}},"id":4877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12996:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":4878,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4862,"src":"13008:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4872,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5126,"src":"12968:20:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12968:48:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4880,"nodeType":"ExpressionStatement","src":"12968:48:32"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":4884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13071:1:32","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":4883,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13063:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4882,"name":"address","nodeType":"ElementaryTypeName","src":"13063:7:32","typeDescriptions":{}}},"id":4885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13063:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":4886,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4862,"src":"13075:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4881,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5115,"src":"13054:8:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":4887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13054:29:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4888,"nodeType":"ExpressionStatement","src":"13054:29:32"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"baseExpression":{"id":4891,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4249,"src":"13139:10:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":4893,"indexExpression":{"id":4892,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4862,"src":"13150:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13139:19:32","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"id":4890,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13133:5:32","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":4889,"name":"bytes","nodeType":"ElementaryTypeName","src":"13133:5:32","typeDescriptions":{}}},"id":4894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13133:26:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes storage pointer"}},"id":4895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13133:33:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13170:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13133:38:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4904,"nodeType":"IfStatement","src":"13129:95:32","trueBody":{"id":4903,"nodeType":"Block","src":"13173:51:32","statements":[{"expression":{"id":4901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"13187:26:32","subExpression":{"baseExpression":{"id":4898,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4249,"src":"13194:10:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":4900,"indexExpression":{"id":4899,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4862,"src":"13205:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13194:19:32","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4902,"nodeType":"ExpressionStatement","src":"13187:26:32"}]}},{"expression":{"arguments":[{"id":4909,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4862,"src":"13262:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":4905,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4229,"src":"13234:13:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$6645_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":4907,"indexExpression":{"id":4906,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4866,"src":"13248:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13234:20:32","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":4908,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":6685,"src":"13234:27:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintSet_$6645_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$6645_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)"}},"id":4910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13234:36:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4911,"nodeType":"ExpressionStatement","src":"13234:36:32"},{"expression":{"arguments":[{"id":4915,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4862,"src":"13301:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4912,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"13281:12:32","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":4914,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":6074,"src":"13281:19:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$6022_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$6022_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) returns (bool)"}},"id":4916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13281:28:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4917,"nodeType":"ExpressionStatement","src":"13281:28:32"},{"eventCall":{"arguments":[{"id":4919,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4866,"src":"13334:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13349:1:32","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":4921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13341:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4920,"name":"address","nodeType":"ElementaryTypeName","src":"13341:7:32","typeDescriptions":{}}},"id":4923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13341:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":4924,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4862,"src":"13353:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4918,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5142,"src":"13325:8:32","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13325:36:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4926,"nodeType":"EmitStatement","src":"13320:41:32"}]},"documentation":{"id":4860,"nodeType":"StructuredDocumentation","src":"12630:206:32","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"id":4928,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nodeType":"FunctionDefinition","parameters":{"id":4863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4862,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":4928,"src":"12856:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4861,"name":"uint256","nodeType":"ElementaryTypeName","src":"12856:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12855:17:32"},"returnParameters":{"id":4864,"nodeType":"ParameterList","parameters":[],"src":"12890:0:32"},"scope":5127,"src":"12841:527:32","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4999,"nodeType":"Block","src":"13771:505:32","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4941,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4935,"src":"13804:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4939,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5127,"src":"13789:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$5127_$","typeString":"type(contract ERC721)"}},"id":4940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":4331,"src":"13789:14:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":4942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13789:23:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4943,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4931,"src":"13816:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13789:31:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e","id":4945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13822:43:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950","typeString":"literal_string \"ERC721: transfer of token that is not own\""},"value":"ERC721: transfer of token that is not own"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950","typeString":"literal_string \"ERC721: transfer of token that is not own\""}],"id":4938,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13781:7:32","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13781:85:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4947,"nodeType":"ExpressionStatement","src":"13781:85:32"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4949,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4933,"src":"13902:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13916:1:32","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":4951,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13908:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4950,"name":"address","nodeType":"ElementaryTypeName","src":"13908:7:32","typeDescriptions":{}}},"id":4953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13908:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"13902:16:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373","id":4955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13920:38:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""},"value":"ERC721: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""}],"id":4948,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13894:7:32","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13894:65:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4957,"nodeType":"ExpressionStatement","src":"13894:65:32"},{"expression":{"arguments":[{"id":4959,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4931,"src":"13991:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4960,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4933,"src":"13997:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4961,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4935,"src":"14001:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4958,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5126,"src":"13970:20:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13970:39:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4963,"nodeType":"ExpressionStatement","src":"13970:39:32"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":4967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14088:1:32","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":4966,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14080:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4965,"name":"address","nodeType":"ElementaryTypeName","src":"14080:7:32","typeDescriptions":{}}},"id":4968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14080:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":4969,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4935,"src":"14092:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4964,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5115,"src":"14071:8:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":4970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14071:29:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4971,"nodeType":"ExpressionStatement","src":"14071:29:32"},{"expression":{"arguments":[{"id":4976,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4935,"src":"14138:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":4972,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4229,"src":"14111:13:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$6645_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":4974,"indexExpression":{"id":4973,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4931,"src":"14125:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14111:19:32","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":4975,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":6685,"src":"14111:26:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintSet_$6645_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$6645_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)"}},"id":4977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14111:35:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4978,"nodeType":"ExpressionStatement","src":"14111:35:32"},{"expression":{"arguments":[{"id":4983,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4935,"src":"14178:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":4979,"name":"_holderTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4229,"src":"14156:13:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$6645_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet storage ref)"}},"id":4981,"indexExpression":{"id":4980,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4933,"src":"14170:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14156:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage","typeString":"struct EnumerableSet.UintSet storage ref"}},"id":4982,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":6665,"src":"14156:21:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintSet_$6645_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$6645_storage_ptr_$","typeString":"function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)"}},"id":4984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14156:30:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4985,"nodeType":"ExpressionStatement","src":"14156:30:32"},{"expression":{"arguments":[{"id":4989,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4935,"src":"14214:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4990,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4933,"src":"14223:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":4986,"name":"_tokenOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"14197:12:32","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage","typeString":"struct EnumerableMap.UintToAddressMap storage ref"}},"id":4988,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"set","nodeType":"MemberAccess","referencedDeclaration":6054,"src":"14197:16:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$6022_storage_ptr_$_t_uint256_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$6022_storage_ptr_$","typeString":"function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,address) returns (bool)"}},"id":4991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14197:29:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4992,"nodeType":"ExpressionStatement","src":"14197:29:32"},{"eventCall":{"arguments":[{"id":4994,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4931,"src":"14251:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4995,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4933,"src":"14257:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4996,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4935,"src":"14261:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4993,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5142,"src":"14242:8:32","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14242:27:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4998,"nodeType":"EmitStatement","src":"14237:32:32"}]},"documentation":{"id":4929,"nodeType":"StructuredDocumentation","src":"13374:313:32","text":" @dev Transfers `tokenId` from `from` to `to`.\n  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"id":5000,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nodeType":"FunctionDefinition","parameters":{"id":4936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4931,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":5000,"src":"13711:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4930,"name":"address","nodeType":"ElementaryTypeName","src":"13711:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4933,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":5000,"src":"13725:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4932,"name":"address","nodeType":"ElementaryTypeName","src":"13725:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4935,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5000,"src":"13737:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4934,"name":"uint256","nodeType":"ElementaryTypeName","src":"13737:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13710:43:32"},"returnParameters":{"id":4937,"nodeType":"ParameterList","parameters":[],"src":"13771:0:32"},"scope":5127,"src":"13692:584:32","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5021,"nodeType":"Block","src":"14504:131:32","statements":[{"expression":{"arguments":[{"arguments":[{"id":5010,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5003,"src":"14530:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5009,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4714,"src":"14522:7:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":5011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14522:16:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e","id":5012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14540:46:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_94be4a260caaeac1b145f03ffa2e70bc612b64982d04f24073aaf3a5f9009978","typeString":"literal_string \"ERC721Metadata: URI set of nonexistent token\""},"value":"ERC721Metadata: URI set of nonexistent token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_94be4a260caaeac1b145f03ffa2e70bc612b64982d04f24073aaf3a5f9009978","typeString":"literal_string \"ERC721Metadata: URI set of nonexistent token\""}],"id":5008,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14514:7:32","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14514:73:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5014,"nodeType":"ExpressionStatement","src":"14514:73:32"},{"expression":{"id":5019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5015,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4249,"src":"14597:10:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":5017,"indexExpression":{"id":5016,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5003,"src":"14608:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14597:19:32","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5018,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5005,"src":"14619:9:32","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"14597:31:32","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":5020,"nodeType":"ExpressionStatement","src":"14597:31:32"}]},"documentation":{"id":5001,"nodeType":"StructuredDocumentation","src":"14282:136:32","text":" @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n Requirements:\n - `tokenId` must exist."},"id":5022,"implemented":true,"kind":"function","modifiers":[],"name":"_setTokenURI","nodeType":"FunctionDefinition","parameters":{"id":5006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5003,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5022,"src":"14445:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5002,"name":"uint256","nodeType":"ElementaryTypeName","src":"14445:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5005,"mutability":"mutable","name":"_tokenURI","nodeType":"VariableDeclaration","scope":5022,"src":"14462:23:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5004,"name":"string","nodeType":"ElementaryTypeName","src":"14462:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"14444:42:32"},"returnParameters":{"id":5007,"nodeType":"ParameterList","parameters":[],"src":"14504:0:32"},"scope":5127,"src":"14423:212:32","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5032,"nodeType":"Block","src":"14920:36:32","statements":[{"expression":{"id":5030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5028,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4251,"src":"14930:8:32","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5029,"name":"baseURI_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"14941:8:32","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"14930:19:32","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":5031,"nodeType":"ExpressionStatement","src":"14930:19:32"}]},"documentation":{"id":5023,"nodeType":"StructuredDocumentation","src":"14641:212:32","text":" @dev Internal function to set the base URI for all token IDs. It is\n automatically added as a prefix to the value returned in {tokenURI},\n or to the token ID if {tokenURI} is empty."},"id":5033,"implemented":true,"kind":"function","modifiers":[],"name":"_setBaseURI","nodeType":"FunctionDefinition","parameters":{"id":5026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5025,"mutability":"mutable","name":"baseURI_","nodeType":"VariableDeclaration","scope":5033,"src":"14879:22:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5024,"name":"string","nodeType":"ElementaryTypeName","src":"14879:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"14878:24:32"},"returnParameters":{"id":5027,"nodeType":"ParameterList","parameters":[],"src":"14920:0:32"},"scope":5127,"src":"14858:98:32","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5090,"nodeType":"Block","src":"15639:459:32","statements":[{"condition":{"id":5050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15653:16:32","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5047,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5038,"src":"15654:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":5339,"src":"15654:13:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":5049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15654:15:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5054,"nodeType":"IfStatement","src":"15649:58:32","trueBody":{"id":5053,"nodeType":"Block","src":"15671:36:32","statements":[{"expression":{"hexValue":"74727565","id":5051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15692:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":5046,"id":5052,"nodeType":"Return","src":"15685:11:32"}]}},{"assignments":[5056],"declarations":[{"constant":false,"id":5056,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":5090,"src":"15716:23:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5055,"name":"bytes","nodeType":"ElementaryTypeName","src":"15716:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5074,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"arguments":[{"id":5062,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5038,"src":"15810:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5061,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5319,"src":"15794:15:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$5319_$","typeString":"type(contract IERC721Receiver)"}},"id":5063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15794:19:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$5319","typeString":"contract IERC721Receiver"}},"id":5064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":5318,"src":"15794:36:32","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":5065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"15794:45:32","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"arguments":[],"expression":{"argumentTypes":[],"id":5066,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5626,"src":"15853:10:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_payable_$","typeString":"function () view returns (address payable)"}},"id":5067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15853:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":5068,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5036,"src":"15879:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5069,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5040,"src":"15897:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5070,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5042,"src":"15918:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5059,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15758:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5060,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"15758:22:32","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":5071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15758:175:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":5072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15935:52:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"expression":{"id":5057,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5038,"src":"15742:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":5410,"src":"15742:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":5073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15742:246:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"15716:272:32"},{"assignments":[5076],"declarations":[{"constant":false,"id":5076,"mutability":"mutable","name":"retval","nodeType":"VariableDeclaration","scope":5090,"src":"15998:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5075,"name":"bytes4","nodeType":"ElementaryTypeName","src":"15998:6:32","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":5084,"initialValue":{"arguments":[{"id":5079,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5056,"src":"16025:10:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":5081,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16038:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":5080,"name":"bytes4","nodeType":"ElementaryTypeName","src":"16038:6:32","typeDescriptions":{}}}],"id":5082,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"16037:8:32","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"}],"expression":{"id":5077,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16014:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5078,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"16014:10:32","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":5083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16014:32:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"15998:48:32"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":5087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5085,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5076,"src":"16064:6:32","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5086,"name":"_ERC721_RECEIVED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4225,"src":"16074:16:32","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"16064:26:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5088,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16063:28:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5046,"id":5089,"nodeType":"Return","src":"16056:35:32"}]},"documentation":{"id":5034,"nodeType":"StructuredDocumentation","src":"14962:542:32","text":" @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param _data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"},"id":5091,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nodeType":"FunctionDefinition","parameters":{"id":5043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5036,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":5091,"src":"15541:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5035,"name":"address","nodeType":"ElementaryTypeName","src":"15541:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5038,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":5091,"src":"15555:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5037,"name":"address","nodeType":"ElementaryTypeName","src":"15555:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5040,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5091,"src":"15567:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5039,"name":"uint256","nodeType":"ElementaryTypeName","src":"15567:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5042,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":5091,"src":"15584:18:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5041,"name":"bytes","nodeType":"ElementaryTypeName","src":"15584:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15540:63:32"},"returnParameters":{"id":5046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5045,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5091,"src":"15629:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5044,"name":"bool","nodeType":"ElementaryTypeName","src":"15629:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15628:6:32"},"scope":5127,"src":"15509:589:32","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":5114,"nodeType":"Block","src":"16274:125:32","statements":[{"expression":{"id":5103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5099,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4235,"src":"16284:15:32","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":5101,"indexExpression":{"id":5100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5096,"src":"16300:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16284:24:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5102,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5094,"src":"16311:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16284:29:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5104,"nodeType":"ExpressionStatement","src":"16284:29:32"},{"eventCall":{"arguments":[{"arguments":[{"id":5108,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5096,"src":"16352:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5106,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5127,"src":"16337:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$5127_$","typeString":"type(contract ERC721)"}},"id":5107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":4331,"src":"16337:14:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":5109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16337:23:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5110,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5094,"src":"16362:2:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5111,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5096,"src":"16366:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5105,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5151,"src":"16328:8:32","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":5112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16328:46:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5113,"nodeType":"EmitStatement","src":"16323:51:32"}]},"documentation":{"id":5092,"nodeType":"StructuredDocumentation","src":"16104:101:32","text":" @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."},"id":5115,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nodeType":"FunctionDefinition","parameters":{"id":5097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5094,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":5115,"src":"16228:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5093,"name":"address","nodeType":"ElementaryTypeName","src":"16228:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5096,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5115,"src":"16240:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5095,"name":"uint256","nodeType":"ElementaryTypeName","src":"16240:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16227:29:32"},"returnParameters":{"id":5098,"nodeType":"ParameterList","parameters":[],"src":"16274:0:32"},"scope":5127,"src":"16210:189:32","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5125,"nodeType":"Block","src":"17085:3:32","statements":[]},"documentation":{"id":5116,"nodeType":"StructuredDocumentation","src":"16405:585:32","text":" @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":5126,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nodeType":"FunctionDefinition","parameters":{"id":5123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5118,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":5126,"src":"17025:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5117,"name":"address","nodeType":"ElementaryTypeName","src":"17025:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5120,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":5126,"src":"17039:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5119,"name":"address","nodeType":"ElementaryTypeName","src":"17039:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5122,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5126,"src":"17051:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5121,"name":"uint256","nodeType":"ElementaryTypeName","src":"17051:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17024:43:32"},"returnParameters":{"id":5124,"nodeType":"ParameterList","parameters":[],"src":"17085:0:32"},"scope":5127,"src":"16995:93:32","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":5128,"src":"563:16527:32"}],"src":"33:17058:32"},"id":32},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[3068],"IERC721":[5243]},"id":5244,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5129,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:33"},{"absolutePath":"@openzeppelin/contracts/introspection/IERC165.sol","file":"../../introspection/IERC165.sol","id":5130,"nodeType":"ImportDirective","scope":5244,"sourceUnit":3069,"src":"58:41:33","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5132,"name":"IERC165","nodeType":"UserDefinedTypeName","referencedDeclaration":3068,"src":"190:7:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC165_$3068","typeString":"contract IERC165"}},"id":5133,"nodeType":"InheritanceSpecifier","src":"190:7:33"}],"contractDependencies":[3068],"contractKind":"interface","documentation":{"id":5131,"nodeType":"StructuredDocumentation","src":"101:67:33","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"id":5243,"linearizedBaseContracts":[5243,3068],"name":"IERC721","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":5134,"nodeType":"StructuredDocumentation","src":"204:88:33","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"id":5142,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":5141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5136,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":5142,"src":"312:20:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5135,"name":"address","nodeType":"ElementaryTypeName","src":"312:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5138,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":5142,"src":"334:18:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5137,"name":"address","nodeType":"ElementaryTypeName","src":"334:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5140,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5142,"src":"354:23:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5139,"name":"uint256","nodeType":"ElementaryTypeName","src":"354:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"311:67:33"},"src":"297:82:33"},{"anonymous":false,"documentation":{"id":5143,"nodeType":"StructuredDocumentation","src":"385:94:33","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"id":5151,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":5150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5145,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":5151,"src":"499:21:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5144,"name":"address","nodeType":"ElementaryTypeName","src":"499:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5147,"indexed":true,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":5151,"src":"522:24:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5146,"name":"address","nodeType":"ElementaryTypeName","src":"522:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5149,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5151,"src":"548:23:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5148,"name":"uint256","nodeType":"ElementaryTypeName","src":"548:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"498:74:33"},"src":"484:89:33"},{"anonymous":false,"documentation":{"id":5152,"nodeType":"StructuredDocumentation","src":"579:117:33","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"id":5160,"name":"ApprovalForAll","nodeType":"EventDefinition","parameters":{"id":5159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5154,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":5160,"src":"722:21:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5153,"name":"address","nodeType":"ElementaryTypeName","src":"722:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5156,"indexed":true,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":5160,"src":"745:24:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5155,"name":"address","nodeType":"ElementaryTypeName","src":"745:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5158,"indexed":false,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":5160,"src":"771:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5157,"name":"bool","nodeType":"ElementaryTypeName","src":"771:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"721:64:33"},"src":"701:85:33"},{"documentation":{"id":5161,"nodeType":"StructuredDocumentation","src":"792:76:33","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":5168,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":5164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5163,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":5168,"src":"892:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5162,"name":"address","nodeType":"ElementaryTypeName","src":"892:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"891:15:33"},"returnParameters":{"id":5167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5166,"mutability":"mutable","name":"balance","nodeType":"VariableDeclaration","scope":5168,"src":"930:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5165,"name":"uint256","nodeType":"ElementaryTypeName","src":"930:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"929:17:33"},"scope":5243,"src":"873:74:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":5169,"nodeType":"StructuredDocumentation","src":"953:131:33","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":5176,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nodeType":"FunctionDefinition","parameters":{"id":5172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5171,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5176,"src":"1106:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5170,"name":"uint256","nodeType":"ElementaryTypeName","src":"1106:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1105:17:33"},"returnParameters":{"id":5175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5174,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":5176,"src":"1146:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5173,"name":"address","nodeType":"ElementaryTypeName","src":"1146:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1145:15:33"},"scope":5243,"src":"1089:72:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":5177,"nodeType":"StructuredDocumentation","src":"1167:690:33","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","id":5186,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","parameters":{"id":5184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5179,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":5186,"src":"1888:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5178,"name":"address","nodeType":"ElementaryTypeName","src":"1888:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5181,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":5186,"src":"1902:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5180,"name":"address","nodeType":"ElementaryTypeName","src":"1902:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5183,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5186,"src":"1914:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5182,"name":"uint256","nodeType":"ElementaryTypeName","src":"1914:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1887:43:33"},"returnParameters":{"id":5185,"nodeType":"ParameterList","parameters":[],"src":"1939:0:33"},"scope":5243,"src":"1862:78:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":5187,"nodeType":"StructuredDocumentation","src":"1946:504:33","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":5196,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":5194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5189,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":5196,"src":"2477:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5188,"name":"address","nodeType":"ElementaryTypeName","src":"2477:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5191,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":5196,"src":"2491:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5190,"name":"address","nodeType":"ElementaryTypeName","src":"2491:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5193,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5196,"src":"2503:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5192,"name":"uint256","nodeType":"ElementaryTypeName","src":"2503:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2476:43:33"},"returnParameters":{"id":5195,"nodeType":"ParameterList","parameters":[],"src":"2528:0:33"},"scope":5243,"src":"2455:74:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":5197,"nodeType":"StructuredDocumentation","src":"2535:452:33","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":5204,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":5202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5199,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":5204,"src":"3009:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5198,"name":"address","nodeType":"ElementaryTypeName","src":"3009:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5201,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5204,"src":"3021:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5200,"name":"uint256","nodeType":"ElementaryTypeName","src":"3021:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3008:29:33"},"returnParameters":{"id":5203,"nodeType":"ParameterList","parameters":[],"src":"3046:0:33"},"scope":5243,"src":"2992:55:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":5205,"nodeType":"StructuredDocumentation","src":"3053:139:33","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":5212,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nodeType":"FunctionDefinition","parameters":{"id":5208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5207,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5212,"src":"3218:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5206,"name":"uint256","nodeType":"ElementaryTypeName","src":"3218:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3217:17:33"},"returnParameters":{"id":5211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5210,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":5212,"src":"3258:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5209,"name":"address","nodeType":"ElementaryTypeName","src":"3258:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3257:18:33"},"scope":5243,"src":"3197:79:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":5213,"nodeType":"StructuredDocumentation","src":"3282:309:33","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the caller.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":5220,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nodeType":"FunctionDefinition","parameters":{"id":5218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5215,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":5220,"src":"3623:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5214,"name":"address","nodeType":"ElementaryTypeName","src":"3623:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5217,"mutability":"mutable","name":"_approved","nodeType":"VariableDeclaration","scope":5220,"src":"3641:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5216,"name":"bool","nodeType":"ElementaryTypeName","src":"3641:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3622:34:33"},"returnParameters":{"id":5219,"nodeType":"ParameterList","parameters":[],"src":"3665:0:33"},"scope":5243,"src":"3596:70:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":5221,"nodeType":"StructuredDocumentation","src":"3672:138:33","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":5230,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nodeType":"FunctionDefinition","parameters":{"id":5226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5223,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":5230,"src":"3841:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5222,"name":"address","nodeType":"ElementaryTypeName","src":"3841:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5225,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":5230,"src":"3856:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5224,"name":"address","nodeType":"ElementaryTypeName","src":"3856:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3840:33:33"},"returnParameters":{"id":5229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5228,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5230,"src":"3897:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5227,"name":"bool","nodeType":"ElementaryTypeName","src":"3897:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3896:6:33"},"scope":5243,"src":"3815:88:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":5231,"nodeType":"StructuredDocumentation","src":"3909:568:33","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":5242,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","parameters":{"id":5240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5233,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":5242,"src":"4508:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5232,"name":"address","nodeType":"ElementaryTypeName","src":"4508:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5235,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":5242,"src":"4522:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5234,"name":"address","nodeType":"ElementaryTypeName","src":"4522:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5237,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5242,"src":"4534:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5236,"name":"uint256","nodeType":"ElementaryTypeName","src":"4534:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5239,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":5242,"src":"4551:19:33","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5238,"name":"bytes","nodeType":"ElementaryTypeName","src":"4551:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4507:64:33"},"returnParameters":{"id":5241,"nodeType":"ParameterList","parameters":[],"src":"4580:0:33"},"scope":5243,"src":"4482:99:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":5244,"src":"169:4414:33"}],"src":"33:4551:33"},"id":33},"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol","exportedSymbols":{"IERC165":[3068],"IERC721":[5243],"IERC721Enumerable":[5274]},"id":5275,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5245,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:34"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"./IERC721.sol","id":5246,"nodeType":"ImportDirective","scope":5275,"sourceUnit":5244,"src":"58:23:34","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5248,"name":"IERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":5243,"src":"251:7:34","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$5243","typeString":"contract IERC721"}},"id":5249,"nodeType":"InheritanceSpecifier","src":"251:7:34"}],"contractDependencies":[3068,5243],"contractKind":"interface","documentation":{"id":5247,"nodeType":"StructuredDocumentation","src":"83:136:34","text":" @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":5274,"linearizedBaseContracts":[5274,5243,3068],"name":"IERC721Enumerable","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5250,"nodeType":"StructuredDocumentation","src":"266:82:34","text":" @dev Returns the total amount of tokens stored by the contract."},"functionSelector":"18160ddd","id":5255,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":5251,"nodeType":"ParameterList","parameters":[],"src":"373:2:34"},"returnParameters":{"id":5254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5253,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5255,"src":"399:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5252,"name":"uint256","nodeType":"ElementaryTypeName","src":"399:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"398:9:34"},"scope":5274,"src":"353:55:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":5256,"nodeType":"StructuredDocumentation","src":"414:171:34","text":" @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n Use along with {balanceOf} to enumerate all of ``owner``'s tokens."},"functionSelector":"2f745c59","id":5265,"implemented":false,"kind":"function","modifiers":[],"name":"tokenOfOwnerByIndex","nodeType":"FunctionDefinition","parameters":{"id":5261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5258,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":5265,"src":"619:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5257,"name":"address","nodeType":"ElementaryTypeName","src":"619:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5260,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":5265,"src":"634:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5259,"name":"uint256","nodeType":"ElementaryTypeName","src":"634:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"618:30:34"},"returnParameters":{"id":5264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5263,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5265,"src":"672:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5262,"name":"uint256","nodeType":"ElementaryTypeName","src":"672:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"671:17:34"},"scope":5274,"src":"590:99:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":5266,"nodeType":"StructuredDocumentation","src":"695:164:34","text":" @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n Use along with {totalSupply} to enumerate all tokens."},"functionSelector":"4f6ccce7","id":5273,"implemented":false,"kind":"function","modifiers":[],"name":"tokenByIndex","nodeType":"FunctionDefinition","parameters":{"id":5269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5268,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":5273,"src":"886:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5267,"name":"uint256","nodeType":"ElementaryTypeName","src":"886:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"885:15:34"},"returnParameters":{"id":5272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5271,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5273,"src":"924:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5270,"name":"uint256","nodeType":"ElementaryTypeName","src":"924:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"923:9:34"},"scope":5274,"src":"864:69:34","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5275,"src":"220:715:34"}],"src":"33:903:34"},"id":34},"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol","exportedSymbols":{"IERC165":[3068],"IERC721":[5243],"IERC721Metadata":[5301]},"id":5302,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5276,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:35"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"./IERC721.sol","id":5277,"nodeType":"ImportDirective","scope":5302,"sourceUnit":5244,"src":"58:23:35","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5279,"name":"IERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":5243,"src":"246:7:35","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$5243","typeString":"contract IERC721"}},"id":5280,"nodeType":"InheritanceSpecifier","src":"246:7:35"}],"contractDependencies":[3068,5243],"contractKind":"interface","documentation":{"id":5278,"nodeType":"StructuredDocumentation","src":"83:133:35","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":5301,"linearizedBaseContracts":[5301,5243,3068],"name":"IERC721Metadata","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5281,"nodeType":"StructuredDocumentation","src":"261:58:35","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","id":5286,"implemented":false,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","parameters":{"id":5282,"nodeType":"ParameterList","parameters":[],"src":"337:2:35"},"returnParameters":{"id":5285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5284,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5286,"src":"363:13:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5283,"name":"string","nodeType":"ElementaryTypeName","src":"363:6:35","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"362:15:35"},"scope":5301,"src":"324:54:35","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":5287,"nodeType":"StructuredDocumentation","src":"384:60:35","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","id":5292,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","parameters":{"id":5288,"nodeType":"ParameterList","parameters":[],"src":"464:2:35"},"returnParameters":{"id":5291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5290,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5292,"src":"490:13:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5289,"name":"string","nodeType":"ElementaryTypeName","src":"490:6:35","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"489:15:35"},"scope":5301,"src":"449:56:35","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":5293,"nodeType":"StructuredDocumentation","src":"511:90:35","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","id":5300,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nodeType":"FunctionDefinition","parameters":{"id":5296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5295,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5300,"src":"624:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5294,"name":"uint256","nodeType":"ElementaryTypeName","src":"624:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"623:17:35"},"returnParameters":{"id":5299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5298,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5300,"src":"664:13:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5297,"name":"string","nodeType":"ElementaryTypeName","src":"664:6:35","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"663:15:35"},"scope":5301,"src":"606:73:35","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5302,"src":"217:464:35"}],"src":"33:649:35"},"id":35},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","exportedSymbols":{"IERC721Receiver":[5319]},"id":5320,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5303,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:36"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":5304,"nodeType":"StructuredDocumentation","src":"58:152:36","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"id":5319,"linearizedBaseContracts":[5319],"name":"IERC721Receiver","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5305,"nodeType":"StructuredDocumentation","src":"243:485:36","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`."},"functionSelector":"150b7a02","id":5318,"implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nodeType":"FunctionDefinition","parameters":{"id":5314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5307,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":5318,"src":"759:16:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5306,"name":"address","nodeType":"ElementaryTypeName","src":"759:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5309,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":5318,"src":"777:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5308,"name":"address","nodeType":"ElementaryTypeName","src":"777:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5311,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":5318,"src":"791:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5310,"name":"uint256","nodeType":"ElementaryTypeName","src":"791:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5313,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":5318,"src":"808:19:36","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5312,"name":"bytes","nodeType":"ElementaryTypeName","src":"808:5:36","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"758:70:36"},"returnParameters":{"id":5317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5316,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5318,"src":"847:6:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5315,"name":"bytes4","nodeType":"ElementaryTypeName","src":"847:6:36","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"846:8:36"},"scope":5319,"src":"733:122:36","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":5320,"src":"211:646:36"}],"src":"33:825:36"},"id":36},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[5615]},"id":5616,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5321,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:37"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":5322,"nodeType":"StructuredDocumentation","src":"58:67:37","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":5615,"linearizedBaseContracts":[5615],"name":"Address","nodeType":"ContractDefinition","nodes":[{"body":{"id":5338,"nodeType":"Block","src":"784:347:37","statements":[{"assignments":[5331],"declarations":[{"constant":false,"id":5331,"mutability":"mutable","name":"size","nodeType":"VariableDeclaration","scope":5338,"src":"981:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5330,"name":"uint256","nodeType":"ElementaryTypeName","src":"981:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5332,"nodeType":"VariableDeclarationStatement","src":"981:12:37"},{"AST":{"nodeType":"YulBlock","src":"1068:32:37","statements":[{"nodeType":"YulAssignment","src":"1070:28:37","value":{"arguments":[{"name":"account","nodeType":"YulIdentifier","src":"1090:7:37"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"1078:11:37"},"nodeType":"YulFunctionCall","src":"1078:20:37"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1070:4:37"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5325,"isOffset":false,"isSlot":false,"src":"1090:7:37","valueSize":1},{"declaration":5331,"isOffset":false,"isSlot":false,"src":"1070:4:37","valueSize":1}],"id":5333,"nodeType":"InlineAssembly","src":"1059:41:37"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5334,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5331,"src":"1116:4:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1123:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1116:8:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5329,"id":5337,"nodeType":"Return","src":"1109:15:37"}]},"documentation":{"id":5323,"nodeType":"StructuredDocumentation","src":"148:565:37","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n ===="},"id":5339,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nodeType":"FunctionDefinition","parameters":{"id":5326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5325,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":5339,"src":"738:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5324,"name":"address","nodeType":"ElementaryTypeName","src":"738:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"737:17:37"},"returnParameters":{"id":5329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5328,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5339,"src":"778:4:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5327,"name":"bool","nodeType":"ElementaryTypeName","src":"778:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"777:6:37"},"scope":5615,"src":"718:413:37","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5372,"nodeType":"Block","src":"2119:320:37","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":5350,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2145:4:37","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$5615","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$5615","typeString":"library Address"}],"id":5349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2137:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5348,"name":"address","nodeType":"ElementaryTypeName","src":"2137:7:37","typeDescriptions":{}}},"id":5351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2137:13:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2137:21:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5353,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5344,"src":"2162:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2137:31:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":5355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2170:31:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":5347,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2129:7:37","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2129:73:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5357,"nodeType":"ExpressionStatement","src":"2129:73:37"},{"assignments":[5359,null],"declarations":[{"constant":false,"id":5359,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":5372,"src":"2291:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5358,"name":"bool","nodeType":"ElementaryTypeName","src":"2291:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":5366,"initialValue":{"arguments":[{"hexValue":"","id":5364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2341:2:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":5360,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5342,"src":"2309:9:37","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":5361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2309:14:37","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":5363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":5362,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5344,"src":"2332:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2309:31:37","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":5365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2309:35:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2290:54:37"},{"expression":{"arguments":[{"id":5368,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5359,"src":"2362:7:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":5369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2371:60:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":5367,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2354:7:37","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2354:78:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5371,"nodeType":"ExpressionStatement","src":"2354:78:37"}]},"documentation":{"id":5340,"nodeType":"StructuredDocumentation","src":"1137:906:37","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":5373,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nodeType":"FunctionDefinition","parameters":{"id":5345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5342,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":5373,"src":"2067:25:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":5341,"name":"address","nodeType":"ElementaryTypeName","src":"2067:15:37","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":5344,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":5373,"src":"2094:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5343,"name":"uint256","nodeType":"ElementaryTypeName","src":"2094:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2066:43:37"},"returnParameters":{"id":5346,"nodeType":"ParameterList","parameters":[],"src":"2119:0:37"},"scope":5615,"src":"2048:391:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5389,"nodeType":"Block","src":"3269:82:37","statements":[{"expression":{"arguments":[{"id":5384,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5376,"src":"3297:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5385,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5378,"src":"3305:4:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":5386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3311:32:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":5383,"name":"functionCall","nodeType":"Identifier","overloadedDeclarations":[5390,5410],"referencedDeclaration":5410,"src":"3284:12:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":5387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3284:60:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5382,"id":5388,"nodeType":"Return","src":"3277:67:37"}]},"documentation":{"id":5374,"nodeType":"StructuredDocumentation","src":"2445:730:37","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain`call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":5390,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nodeType":"FunctionDefinition","parameters":{"id":5379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5376,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":5390,"src":"3202:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5375,"name":"address","nodeType":"ElementaryTypeName","src":"3202:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5378,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":5390,"src":"3218:17:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5377,"name":"bytes","nodeType":"ElementaryTypeName","src":"3218:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3201:35:37"},"returnParameters":{"id":5382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5381,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5390,"src":"3255:12:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5380,"name":"bytes","nodeType":"ElementaryTypeName","src":"3255:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3254:14:37"},"scope":5615,"src":"3180:171:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5409,"nodeType":"Block","src":"3690:76:37","statements":[{"expression":{"arguments":[{"id":5403,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5393,"src":"3729:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5404,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5395,"src":"3737:4:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":5405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3743:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":5406,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5397,"src":"3746:12:37","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5402,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[5430,5480],"referencedDeclaration":5480,"src":"3707:21:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":5407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3707:52:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5401,"id":5408,"nodeType":"Return","src":"3700:59:37"}]},"documentation":{"id":5391,"nodeType":"StructuredDocumentation","src":"3357:211:37","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":5410,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nodeType":"FunctionDefinition","parameters":{"id":5398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5393,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":5410,"src":"3595:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5392,"name":"address","nodeType":"ElementaryTypeName","src":"3595:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5395,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":5410,"src":"3611:17:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5394,"name":"bytes","nodeType":"ElementaryTypeName","src":"3611:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5397,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":5410,"src":"3630:26:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5396,"name":"string","nodeType":"ElementaryTypeName","src":"3630:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3594:63:37"},"returnParameters":{"id":5401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5400,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5410,"src":"3676:12:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5399,"name":"bytes","nodeType":"ElementaryTypeName","src":"3676:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3675:14:37"},"scope":5615,"src":"3573:193:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5429,"nodeType":"Block","src":"4241:111:37","statements":[{"expression":{"arguments":[{"id":5423,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5413,"src":"4280:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5424,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5415,"src":"4288:4:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5425,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"4294:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":5426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4301:43:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":5422,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[5430,5480],"referencedDeclaration":5480,"src":"4258:21:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":5427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4258:87:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5421,"id":5428,"nodeType":"Return","src":"4251:94:37"}]},"documentation":{"id":5411,"nodeType":"StructuredDocumentation","src":"3772:351:37","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":5430,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nodeType":"FunctionDefinition","parameters":{"id":5418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5413,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":5430,"src":"4159:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5412,"name":"address","nodeType":"ElementaryTypeName","src":"4159:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5415,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":5430,"src":"4175:17:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5414,"name":"bytes","nodeType":"ElementaryTypeName","src":"4175:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5417,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":5430,"src":"4194:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5416,"name":"uint256","nodeType":"ElementaryTypeName","src":"4194:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4158:50:37"},"returnParameters":{"id":5421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5420,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5430,"src":"4227:12:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5419,"name":"bytes","nodeType":"ElementaryTypeName","src":"4227:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4226:14:37"},"scope":5615,"src":"4128:224:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5479,"nodeType":"Block","src":"4741:382:37","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":5447,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4767:4:37","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$5615","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$5615","typeString":"library Address"}],"id":5446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4759:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5445,"name":"address","nodeType":"ElementaryTypeName","src":"4759:7:37","typeDescriptions":{}}},"id":5448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4759:13:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"4759:21:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5450,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5437,"src":"4784:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4759:30:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":5452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4791:40:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":5444,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4751:7:37","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4751:81:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5454,"nodeType":"ExpressionStatement","src":"4751:81:37"},{"expression":{"arguments":[{"arguments":[{"id":5457,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5433,"src":"4861:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5456,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5339,"src":"4850:10:37","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":5458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4850:18:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":5459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4870:31:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":5455,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4842:7:37","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4842:60:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5461,"nodeType":"ExpressionStatement","src":"4842:60:37"},{"assignments":[5463,5465],"declarations":[{"constant":false,"id":5463,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":5479,"src":"4973:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5462,"name":"bool","nodeType":"ElementaryTypeName","src":"4973:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5465,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":5479,"src":"4987:23:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5464,"name":"bytes","nodeType":"ElementaryTypeName","src":"4987:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5472,"initialValue":{"arguments":[{"id":5470,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5435,"src":"5042:4:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5466,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5433,"src":"5014:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"5014:11:37","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":5469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":5468,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5437,"src":"5034:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5014:27:37","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":5471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5014:33:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4972:75:37"},{"expression":{"arguments":[{"id":5474,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5463,"src":"5082:7:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":5475,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5465,"src":"5091:10:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5476,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5439,"src":"5103:12:37","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5473,"name":"_verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5614,"src":"5064:17:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":5477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5064:52:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5443,"id":5478,"nodeType":"Return","src":"5057:59:37"}]},"documentation":{"id":5431,"nodeType":"StructuredDocumentation","src":"4358:237:37","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":5480,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nodeType":"FunctionDefinition","parameters":{"id":5440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5433,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":5480,"src":"4631:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5432,"name":"address","nodeType":"ElementaryTypeName","src":"4631:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5435,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":5480,"src":"4647:17:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5434,"name":"bytes","nodeType":"ElementaryTypeName","src":"4647:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5437,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":5480,"src":"4666:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5436,"name":"uint256","nodeType":"ElementaryTypeName","src":"4666:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5439,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":5480,"src":"4681:26:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5438,"name":"string","nodeType":"ElementaryTypeName","src":"4681:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4630:78:37"},"returnParameters":{"id":5443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5442,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5480,"src":"4727:12:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5441,"name":"bytes","nodeType":"ElementaryTypeName","src":"4727:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4726:14:37"},"scope":5615,"src":"4600:523:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5496,"nodeType":"Block","src":"5400:97:37","statements":[{"expression":{"arguments":[{"id":5491,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5483,"src":"5436:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5492,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5485,"src":"5444:4:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":5493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5450:39:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":5490,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[5497,5532],"referencedDeclaration":5532,"src":"5417:18:37","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":5494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5417:73:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5489,"id":5495,"nodeType":"Return","src":"5410:80:37"}]},"documentation":{"id":5481,"nodeType":"StructuredDocumentation","src":"5129:166:37","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":5497,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nodeType":"FunctionDefinition","parameters":{"id":5486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5483,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":5497,"src":"5328:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5482,"name":"address","nodeType":"ElementaryTypeName","src":"5328:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5485,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":5497,"src":"5344:17:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5484,"name":"bytes","nodeType":"ElementaryTypeName","src":"5344:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5327:35:37"},"returnParameters":{"id":5489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5488,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5497,"src":"5386:12:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5487,"name":"bytes","nodeType":"ElementaryTypeName","src":"5386:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5385:14:37"},"scope":5615,"src":"5300:197:37","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5531,"nodeType":"Block","src":"5809:288:37","statements":[{"expression":{"arguments":[{"arguments":[{"id":5511,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5500,"src":"5838:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5510,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5339,"src":"5827:10:37","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":5512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5827:18:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374","id":5513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5847:38:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9","typeString":"literal_string \"Address: static call to non-contract\""},"value":"Address: static call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9","typeString":"literal_string \"Address: static call to non-contract\""}],"id":5509,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5819:7:37","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5819:67:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5515,"nodeType":"ExpressionStatement","src":"5819:67:37"},{"assignments":[5517,5519],"declarations":[{"constant":false,"id":5517,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":5531,"src":"5957:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5516,"name":"bool","nodeType":"ElementaryTypeName","src":"5957:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5519,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":5531,"src":"5971:23:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5518,"name":"bytes","nodeType":"ElementaryTypeName","src":"5971:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5524,"initialValue":{"arguments":[{"id":5522,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5502,"src":"6016:4:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5520,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5500,"src":"5998:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"staticcall","nodeType":"MemberAccess","src":"5998:17:37","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":5523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5998:23:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5956:65:37"},{"expression":{"arguments":[{"id":5526,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5517,"src":"6056:7:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":5527,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5519,"src":"6065:10:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5528,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5504,"src":"6077:12:37","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5525,"name":"_verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5614,"src":"6038:17:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":5529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6038:52:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5508,"id":5530,"nodeType":"Return","src":"6031:59:37"}]},"documentation":{"id":5498,"nodeType":"StructuredDocumentation","src":"5503:173:37","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":5532,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nodeType":"FunctionDefinition","parameters":{"id":5505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5500,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":5532,"src":"5709:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5499,"name":"address","nodeType":"ElementaryTypeName","src":"5709:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5502,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":5532,"src":"5725:17:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5501,"name":"bytes","nodeType":"ElementaryTypeName","src":"5725:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5504,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":5532,"src":"5744:26:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5503,"name":"string","nodeType":"ElementaryTypeName","src":"5744:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5708:63:37"},"returnParameters":{"id":5508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5507,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5532,"src":"5795:12:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5506,"name":"bytes","nodeType":"ElementaryTypeName","src":"5795:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5794:14:37"},"scope":5615,"src":"5681:416:37","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5548,"nodeType":"Block","src":"6373:101:37","statements":[{"expression":{"arguments":[{"id":5543,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5535,"src":"6411:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5544,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5537,"src":"6419:4:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":5545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6425:41:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":5542,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[5549,5584],"referencedDeclaration":5584,"src":"6390:20:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":5546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6390:77:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5541,"id":5547,"nodeType":"Return","src":"6383:84:37"}]},"documentation":{"id":5533,"nodeType":"StructuredDocumentation","src":"6103:168:37","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":5549,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nodeType":"FunctionDefinition","parameters":{"id":5538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5535,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":5549,"src":"6306:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5534,"name":"address","nodeType":"ElementaryTypeName","src":"6306:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5537,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":5549,"src":"6322:17:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5536,"name":"bytes","nodeType":"ElementaryTypeName","src":"6322:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6305:35:37"},"returnParameters":{"id":5541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5540,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5549,"src":"6359:12:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5539,"name":"bytes","nodeType":"ElementaryTypeName","src":"6359:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6358:14:37"},"scope":5615,"src":"6276:198:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5583,"nodeType":"Block","src":"6785:292:37","statements":[{"expression":{"arguments":[{"arguments":[{"id":5563,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5552,"src":"6814:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5562,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5339,"src":"6803:10:37","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":5564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6803:18:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374","id":5565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6823:40:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","typeString":"literal_string \"Address: delegate call to non-contract\""},"value":"Address: delegate call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","typeString":"literal_string \"Address: delegate call to non-contract\""}],"id":5561,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6795:7:37","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6795:69:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5567,"nodeType":"ExpressionStatement","src":"6795:69:37"},{"assignments":[5569,5571],"declarations":[{"constant":false,"id":5569,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":5583,"src":"6935:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5568,"name":"bool","nodeType":"ElementaryTypeName","src":"6935:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5571,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":5583,"src":"6949:23:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5570,"name":"bytes","nodeType":"ElementaryTypeName","src":"6949:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5576,"initialValue":{"arguments":[{"id":5574,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5554,"src":"6996:4:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5572,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5552,"src":"6976:6:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"6976:19:37","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":5575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6976:25:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6934:67:37"},{"expression":{"arguments":[{"id":5578,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5569,"src":"7036:7:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":5579,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5571,"src":"7045:10:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5580,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5556,"src":"7057:12:37","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5577,"name":"_verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5614,"src":"7018:17:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":5581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7018:52:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5560,"id":5582,"nodeType":"Return","src":"7011:59:37"}]},"documentation":{"id":5550,"nodeType":"StructuredDocumentation","src":"6480:175:37","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":5584,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nodeType":"FunctionDefinition","parameters":{"id":5557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5552,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":5584,"src":"6690:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5551,"name":"address","nodeType":"ElementaryTypeName","src":"6690:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5554,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":5584,"src":"6706:17:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5553,"name":"bytes","nodeType":"ElementaryTypeName","src":"6706:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5556,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":5584,"src":"6725:26:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5555,"name":"string","nodeType":"ElementaryTypeName","src":"6725:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6689:63:37"},"returnParameters":{"id":5560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5559,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5584,"src":"6771:12:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5558,"name":"bytes","nodeType":"ElementaryTypeName","src":"6771:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6770:14:37"},"scope":5615,"src":"6660:417:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5613,"nodeType":"Block","src":"7212:596:37","statements":[{"condition":{"id":5595,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5586,"src":"7226:7:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5611,"nodeType":"Block","src":"7283:519:37","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5599,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5588,"src":"7367:10:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7367:17:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7387:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7367:21:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5609,"nodeType":"Block","src":"7739:53:37","statements":[{"expression":{"arguments":[{"id":5606,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5590,"src":"7764:12:37","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5605,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"7757:6:37","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":5607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7757:20:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5608,"nodeType":"ExpressionStatement","src":"7757:20:37"}]},"id":5610,"nodeType":"IfStatement","src":"7363:429:37","trueBody":{"id":5604,"nodeType":"Block","src":"7390:343:37","statements":[{"AST":{"nodeType":"YulBlock","src":"7574:145:37","statements":[{"nodeType":"YulVariableDeclaration","src":"7596:40:37","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"7625:10:37"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7619:5:37"},"nodeType":"YulFunctionCall","src":"7619:17:37"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"7600:15:37","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7668:2:37","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"7672:10:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7664:3:37"},"nodeType":"YulFunctionCall","src":"7664:19:37"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"7685:15:37"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7657:6:37"},"nodeType":"YulFunctionCall","src":"7657:44:37"},"nodeType":"YulExpressionStatement","src":"7657:44:37"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5588,"isOffset":false,"isSlot":false,"src":"7625:10:37","valueSize":1},{"declaration":5588,"isOffset":false,"isSlot":false,"src":"7672:10:37","valueSize":1}],"id":5603,"nodeType":"InlineAssembly","src":"7565:154:37"}]}}]},"id":5612,"nodeType":"IfStatement","src":"7222:580:37","trueBody":{"id":5598,"nodeType":"Block","src":"7235:42:37","statements":[{"expression":{"id":5596,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5588,"src":"7256:10:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5594,"id":5597,"nodeType":"Return","src":"7249:17:37"}]}}]},"id":5614,"implemented":true,"kind":"function","modifiers":[],"name":"_verifyCallResult","nodeType":"FunctionDefinition","parameters":{"id":5591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5586,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":5614,"src":"7110:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5585,"name":"bool","nodeType":"ElementaryTypeName","src":"7110:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5588,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":5614,"src":"7124:23:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5587,"name":"bytes","nodeType":"ElementaryTypeName","src":"7124:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5590,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":5614,"src":"7149:26:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5589,"name":"string","nodeType":"ElementaryTypeName","src":"7149:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7109:67:37"},"returnParameters":{"id":5594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5593,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5614,"src":"7198:12:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5592,"name":"bytes","nodeType":"ElementaryTypeName","src":"7198:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7197:14:37"},"scope":5615,"src":"7083:725:37","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":5616,"src":"126:7684:37"}],"src":"33:7778:37"},"id":37},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[5638]},"id":5639,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5617,"literals":["solidity",">=","0.6",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"33:31:38"},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":5638,"linearizedBaseContracts":[5638],"name":"Context","nodeType":"ContractDefinition","nodes":[{"body":{"id":5625,"nodeType":"Block","src":"668:34:38","statements":[{"expression":{"expression":{"id":5622,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"685:3:38","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"685:10:38","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":5621,"id":5624,"nodeType":"Return","src":"678:17:38"}]},"id":5626,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nodeType":"FunctionDefinition","parameters":{"id":5618,"nodeType":"ParameterList","parameters":[],"src":"617:2:38"},"returnParameters":{"id":5621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5620,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5626,"src":"651:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":5619,"name":"address","nodeType":"ElementaryTypeName","src":"651:15:38","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"650:17:38"},"scope":5638,"src":"598:104:38","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":5636,"nodeType":"Block","src":"773:165:38","statements":[{"expression":{"id":5631,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"783:4:38","typeDescriptions":{"typeIdentifier":"t_contract$_Context_$5638","typeString":"contract Context"}},"id":5632,"nodeType":"ExpressionStatement","src":"783:4:38"},{"expression":{"expression":{"id":5633,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"923:3:38","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","src":"923:8:38","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":5630,"id":5635,"nodeType":"Return","src":"916:15:38"}]},"id":5637,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nodeType":"FunctionDefinition","parameters":{"id":5627,"nodeType":"ParameterList","parameters":[],"src":"725:2:38"},"returnParameters":{"id":5630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5629,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5637,"src":"759:12:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5628,"name":"bytes","nodeType":"ElementaryTypeName","src":"759:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"758:14:38"},"scope":5638,"src":"708:230:38","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":5639,"src":"566:374:38"}],"src":"33:908:38"},"id":38},"@openzeppelin/contracts/utils/Counters.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Counters.sol","exportedSymbols":{"Counters":[5688],"SafeMath":[3423]},"id":5689,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5640,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:39"},{"absolutePath":"@openzeppelin/contracts/math/SafeMath.sol","file":"../math/SafeMath.sol","id":5641,"nodeType":"ImportDirective","scope":5689,"sourceUnit":3424,"src":"58:30:39","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":5642,"nodeType":"StructuredDocumentation","src":"90:571:39","text":" @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented or decremented by one. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`\n Since it is not possible to overflow a 256 bit integer with increments of one, `increment` can skip the {SafeMath}\n overflow check, thereby saving gas. This does assume however correct usage, in that the underlying `_value` is never\n directly accessed."},"fullyImplemented":true,"id":5688,"linearizedBaseContracts":[5688],"name":"Counters","nodeType":"ContractDefinition","nodes":[{"id":5645,"libraryName":{"id":5643,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":3423,"src":"691:8:39","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$3423","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"685:27:39","typeName":{"id":5644,"name":"uint256","nodeType":"ElementaryTypeName","src":"704:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"canonicalName":"Counters.Counter","id":5648,"members":[{"constant":false,"id":5647,"mutability":"mutable","name":"_value","nodeType":"VariableDeclaration","scope":5648,"src":"1057:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5646,"name":"uint256","nodeType":"ElementaryTypeName","src":"1057:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Counter","nodeType":"StructDefinition","scope":5688,"src":"718:374:39","visibility":"public"},{"body":{"id":5658,"nodeType":"Block","src":"1172:38:39","statements":[{"expression":{"expression":{"id":5655,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5650,"src":"1189:7:39","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$5648_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":5656,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5647,"src":"1189:14:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5654,"id":5657,"nodeType":"Return","src":"1182:21:39"}]},"id":5659,"implemented":true,"kind":"function","modifiers":[],"name":"current","nodeType":"FunctionDefinition","parameters":{"id":5651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5650,"mutability":"mutable","name":"counter","nodeType":"VariableDeclaration","scope":5659,"src":"1115:23:39","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$5648_storage_ptr","typeString":"struct Counters.Counter"},"typeName":{"id":5649,"name":"Counter","nodeType":"UserDefinedTypeName","referencedDeclaration":5648,"src":"1115:7:39","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$5648_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"internal"}],"src":"1114:25:39"},"returnParameters":{"id":5654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5653,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5659,"src":"1163:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5652,"name":"uint256","nodeType":"ElementaryTypeName","src":"1163:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1162:9:39"},"scope":5688,"src":"1098:112:39","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5670,"nodeType":"Block","src":"1269:125:39","statements":[{"expression":{"id":5668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5664,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5661,"src":"1368:7:39","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$5648_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":5666,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5647,"src":"1368:14:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":5667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1386:1:39","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1368:19:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5669,"nodeType":"ExpressionStatement","src":"1368:19:39"}]},"id":5671,"implemented":true,"kind":"function","modifiers":[],"name":"increment","nodeType":"FunctionDefinition","parameters":{"id":5662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5661,"mutability":"mutable","name":"counter","nodeType":"VariableDeclaration","scope":5671,"src":"1235:23:39","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$5648_storage_ptr","typeString":"struct Counters.Counter"},"typeName":{"id":5660,"name":"Counter","nodeType":"UserDefinedTypeName","referencedDeclaration":5648,"src":"1235:7:39","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$5648_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"internal"}],"src":"1234:25:39"},"returnParameters":{"id":5663,"nodeType":"ParameterList","parameters":[],"src":"1269:0:39"},"scope":5688,"src":"1216:178:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5686,"nodeType":"Block","src":"1453:55:39","statements":[{"expression":{"id":5684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":5676,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5673,"src":"1463:7:39","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$5648_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":5678,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5647,"src":"1463:14:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"31","id":5682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1499:1:39","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"expression":{"expression":{"id":5679,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5673,"src":"1480:7:39","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$5648_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":5680,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5647,"src":"1480:14:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":3272,"src":"1480:18:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1480:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1463:38:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5685,"nodeType":"ExpressionStatement","src":"1463:38:39"}]},"id":5687,"implemented":true,"kind":"function","modifiers":[],"name":"decrement","nodeType":"FunctionDefinition","parameters":{"id":5674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5673,"mutability":"mutable","name":"counter","nodeType":"VariableDeclaration","scope":5687,"src":"1419:23:39","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$5648_storage_ptr","typeString":"struct Counters.Counter"},"typeName":{"id":5672,"name":"Counter","nodeType":"UserDefinedTypeName","referencedDeclaration":5648,"src":"1419:7:39","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$5648_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"internal"}],"src":"1418:25:39"},"returnParameters":{"id":5675,"nodeType":"ParameterList","parameters":[],"src":"1453:0:39"},"scope":5688,"src":"1400:108:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":5689,"src":"662:848:39"}],"src":"33:1478:39"},"id":39},"@openzeppelin/contracts/utils/EnumerableMap.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/EnumerableMap.sol","exportedSymbols":{"EnumerableMap":[6248]},"id":6249,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5690,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:40"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":5691,"nodeType":"StructuredDocumentation","src":"58:705:40","text":" @dev Library for managing an enumerable variant of Solidity's\n https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`]\n type.\n Maps have the following properties:\n - Entries are added, removed, and checked for existence in constant time\n (O(1)).\n - Entries are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n     // Add the library methods\n     using EnumerableMap for EnumerableMap.UintToAddressMap;\n     // Declare a set state variable\n     EnumerableMap.UintToAddressMap private myMap;\n }\n ```\n As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are\n supported."},"fullyImplemented":true,"id":6248,"linearizedBaseContracts":[6248],"name":"EnumerableMap","nodeType":"ContractDefinition","nodes":[{"canonicalName":"EnumerableMap.MapEntry","id":5696,"members":[{"constant":false,"id":5693,"mutability":"mutable","name":"_key","nodeType":"VariableDeclaration","scope":5696,"src":"1276:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5692,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1276:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5695,"mutability":"mutable","name":"_value","nodeType":"VariableDeclaration","scope":5696,"src":"1298:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5694,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1298:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"MapEntry","nodeType":"StructDefinition","scope":6248,"src":"1250:69:40","visibility":"public"},{"canonicalName":"EnumerableMap.Map","id":5704,"members":[{"constant":false,"id":5699,"mutability":"mutable","name":"_entries","nodeType":"VariableDeclaration","scope":5704,"src":"1388:19:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$5696_storage_$dyn_storage_ptr","typeString":"struct EnumerableMap.MapEntry[]"},"typeName":{"baseType":{"id":5697,"name":"MapEntry","nodeType":"UserDefinedTypeName","referencedDeclaration":5696,"src":"1388:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$5696_storage_ptr","typeString":"struct EnumerableMap.MapEntry"}},"id":5698,"nodeType":"ArrayTypeName","src":"1388:10:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$5696_storage_$dyn_storage_ptr","typeString":"struct EnumerableMap.MapEntry[]"}},"visibility":"internal"},{"constant":false,"id":5703,"mutability":"mutable","name":"_indexes","nodeType":"VariableDeclaration","scope":5704,"src":"1557:37:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"typeName":{"id":5702,"keyType":{"id":5700,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1566:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1557:28:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueType":{"id":5701,"name":"uint256","nodeType":"ElementaryTypeName","src":"1577:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"Map","nodeType":"StructDefinition","scope":6248,"src":"1325:276:40","visibility":"public"},{"body":{"id":5765,"nodeType":"Block","src":"1910:596:40","statements":[{"assignments":[5717],"declarations":[{"constant":false,"id":5717,"mutability":"mutable","name":"keyIndex","nodeType":"VariableDeclaration","scope":5765,"src":"2018:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5716,"name":"uint256","nodeType":"ElementaryTypeName","src":"2018:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5722,"initialValue":{"baseExpression":{"expression":{"id":5718,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5707,"src":"2037:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":5719,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":5703,"src":"2037:12:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":5721,"indexExpression":{"id":5720,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5709,"src":"2050:3:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2037:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2018:36:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5723,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5717,"src":"2069:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2081:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2069:13:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5763,"nodeType":"Block","src":"2408:92:40","statements":[{"expression":{"id":5759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":5750,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5707,"src":"2422:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":5755,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":5699,"src":"2422:12:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$5696_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":5756,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5752,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5717,"src":"2435:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2446:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2435:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2422:26:40","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$5696_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"id":5757,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5695,"src":"2422:33:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5758,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5711,"src":"2458:5:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2422:41:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5760,"nodeType":"ExpressionStatement","src":"2422:41:40"},{"expression":{"hexValue":"66616c7365","id":5761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2484:5:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":5715,"id":5762,"nodeType":"Return","src":"2477:12:40"}]},"id":5764,"nodeType":"IfStatement","src":"2065:435:40","trueBody":{"id":5749,"nodeType":"Block","src":"2084:318:40","statements":[{"expression":{"arguments":[{"arguments":[{"id":5732,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5709,"src":"2170:3:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5733,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5711,"src":"2183:5:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5731,"name":"MapEntry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5696,"src":"2153:8:40","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MapEntry_$5696_storage_ptr_$","typeString":"type(struct EnumerableMap.MapEntry storage pointer)"}},"id":5734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["_key","_value"],"nodeType":"FunctionCall","src":"2153:38:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$5696_memory_ptr","typeString":"struct EnumerableMap.MapEntry memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_MapEntry_$5696_memory_ptr","typeString":"struct EnumerableMap.MapEntry memory"}],"expression":{"expression":{"id":5726,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5707,"src":"2135:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":5729,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":5699,"src":"2135:12:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$5696_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":5730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"2135:17:40","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_struct$_MapEntry_$5696_storage_$returns$__$","typeString":"function (struct EnumerableMap.MapEntry storage ref)"}},"id":5735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2135:57:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5736,"nodeType":"ExpressionStatement","src":"2135:57:40"},{"expression":{"id":5745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":5737,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5707,"src":"2327:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":5740,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":5703,"src":"2327:12:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":5741,"indexExpression":{"id":5739,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5709,"src":"2340:3:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2327:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":5742,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5707,"src":"2347:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":5743,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":5699,"src":"2347:12:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$5696_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":5744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2347:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2327:39:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5746,"nodeType":"ExpressionStatement","src":"2327:39:40"},{"expression":{"hexValue":"74727565","id":5747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2387:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":5715,"id":5748,"nodeType":"Return","src":"2380:11:40"}]}}]},"documentation":{"id":5705,"nodeType":"StructuredDocumentation","src":"1607:216:40","text":" @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present."},"id":5766,"implemented":true,"kind":"function","modifiers":[],"name":"_set","nodeType":"FunctionDefinition","parameters":{"id":5712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5707,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":5766,"src":"1842:15:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":5706,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":5704,"src":"1842:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":5709,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":5766,"src":"1859:11:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5708,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1859:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5711,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":5766,"src":"1872:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5710,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1872:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1841:45:40"},"returnParameters":{"id":5715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5714,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5766,"src":"1904:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5713,"name":"bool","nodeType":"ElementaryTypeName","src":"1904:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1903:6:40"},"scope":6248,"src":"1828:678:40","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":5846,"nodeType":"Block","src":"2744:1447:40","statements":[{"assignments":[5777],"declarations":[{"constant":false,"id":5777,"mutability":"mutable","name":"keyIndex","nodeType":"VariableDeclaration","scope":5846,"src":"2852:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5776,"name":"uint256","nodeType":"ElementaryTypeName","src":"2852:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5782,"initialValue":{"baseExpression":{"expression":{"id":5778,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5769,"src":"2871:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":5779,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":5703,"src":"2871:12:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":5781,"indexExpression":{"id":5780,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5771,"src":"2884:3:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2871:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2852:36:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5783,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5777,"src":"2903:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2915:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2903:13:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5844,"nodeType":"Block","src":"4148:37:40","statements":[{"expression":{"hexValue":"66616c7365","id":5842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4169:5:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":5775,"id":5843,"nodeType":"Return","src":"4162:12:40"}]},"id":5845,"nodeType":"IfStatement","src":"2899:1286:40","trueBody":{"id":5841,"nodeType":"Block","src":"2918:1224:40","statements":[{"assignments":[5787],"declarations":[{"constant":false,"id":5787,"mutability":"mutable","name":"toDeleteIndex","nodeType":"VariableDeclaration","scope":5841,"src":"3259:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5786,"name":"uint256","nodeType":"ElementaryTypeName","src":"3259:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5791,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5788,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5777,"src":"3283:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3294:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3283:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3259:36:40"},{"assignments":[5793],"declarations":[{"constant":false,"id":5793,"mutability":"mutable","name":"lastIndex","nodeType":"VariableDeclaration","scope":5841,"src":"3309:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5792,"name":"uint256","nodeType":"ElementaryTypeName","src":"3309:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5799,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":5794,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5769,"src":"3329:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":5795,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":5699,"src":"3329:12:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$5696_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":5796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3329:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3351:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3329:23:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3309:43:40"},{"assignments":[5801],"declarations":[{"constant":false,"id":5801,"mutability":"mutable","name":"lastEntry","nodeType":"VariableDeclaration","scope":5841,"src":"3592:26:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$5696_storage_ptr","typeString":"struct EnumerableMap.MapEntry"},"typeName":{"id":5800,"name":"MapEntry","nodeType":"UserDefinedTypeName","referencedDeclaration":5696,"src":"3592:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$5696_storage_ptr","typeString":"struct EnumerableMap.MapEntry"}},"visibility":"internal"}],"id":5806,"initialValue":{"baseExpression":{"expression":{"id":5802,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5769,"src":"3621:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":5803,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":5699,"src":"3621:12:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$5696_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":5805,"indexExpression":{"id":5804,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5793,"src":"3634:9:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3621:23:40","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$5696_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"nodeType":"VariableDeclarationStatement","src":"3592:52:40"},{"expression":{"id":5813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":5807,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5769,"src":"3736:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":5810,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":5699,"src":"3736:12:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$5696_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":5811,"indexExpression":{"id":5809,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5787,"src":"3749:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3736:27:40","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$5696_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5812,"name":"lastEntry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5801,"src":"3766:9:40","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$5696_storage_ptr","typeString":"struct EnumerableMap.MapEntry storage pointer"}},"src":"3736:39:40","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$5696_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"id":5814,"nodeType":"ExpressionStatement","src":"3736:39:40"},{"expression":{"id":5824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":5815,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5769,"src":"3841:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":5819,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":5703,"src":"3841:12:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":5820,"indexExpression":{"expression":{"id":5817,"name":"lastEntry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5801,"src":"3854:9:40","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$5696_storage_ptr","typeString":"struct EnumerableMap.MapEntry storage pointer"}},"id":5818,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":5693,"src":"3854:14:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3841:28:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5821,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5787,"src":"3872:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3888:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3872:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3841:48:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5825,"nodeType":"ExpressionStatement","src":"3841:48:40"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":5826,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5769,"src":"3995:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":5829,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":5699,"src":"3995:12:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$5696_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":5830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"3995:16:40","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$__$returns$__$","typeString":"function ()"}},"id":5831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3995:18:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5832,"nodeType":"ExpressionStatement","src":"3995:18:40"},{"expression":{"id":5837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"4081:24:40","subExpression":{"baseExpression":{"expression":{"id":5833,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5769,"src":"4088:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":5834,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":5703,"src":"4088:12:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":5836,"indexExpression":{"id":5835,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5771,"src":"4101:3:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4088:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5838,"nodeType":"ExpressionStatement","src":"4081:24:40"},{"expression":{"hexValue":"74727565","id":5839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4127:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":5775,"id":5840,"nodeType":"Return","src":"4120:11:40"}]}}]},"documentation":{"id":5767,"nodeType":"StructuredDocumentation","src":"2512:157:40","text":" @dev Removes a key-value pair from a map. O(1).\n Returns true if the key was removed from the map, that is if it was present."},"id":5847,"implemented":true,"kind":"function","modifiers":[],"name":"_remove","nodeType":"FunctionDefinition","parameters":{"id":5772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5769,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":5847,"src":"2691:15:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":5768,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":5704,"src":"2691:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":5771,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":5847,"src":"2708:11:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5770,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2708:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2690:30:40"},"returnParameters":{"id":5775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5774,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5847,"src":"2738:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5773,"name":"bool","nodeType":"ElementaryTypeName","src":"2738:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2737:6:40"},"scope":6248,"src":"2674:1517:40","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":5864,"nodeType":"Block","src":"4347:46:40","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":5857,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5850,"src":"4364:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":5858,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":5703,"src":"4364:12:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":5860,"indexExpression":{"id":5859,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5852,"src":"4377:3:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4364:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4385:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4364:22:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5856,"id":5863,"nodeType":"Return","src":"4357:29:40"}]},"documentation":{"id":5848,"nodeType":"StructuredDocumentation","src":"4197:68:40","text":" @dev Returns true if the key is in the map. O(1)."},"id":5865,"implemented":true,"kind":"function","modifiers":[],"name":"_contains","nodeType":"FunctionDefinition","parameters":{"id":5853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5850,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":5865,"src":"4289:15:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":5849,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":5704,"src":"4289:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":5852,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":5865,"src":"4306:11:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5851,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4306:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4288:30:40"},"returnParameters":{"id":5856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5855,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5865,"src":"4341:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5854,"name":"bool","nodeType":"ElementaryTypeName","src":"4341:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4340:6:40"},"scope":6248,"src":"4270:123:40","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":5877,"nodeType":"Block","src":"4548:43:40","statements":[{"expression":{"expression":{"expression":{"id":5873,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5868,"src":"4565:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":5874,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":5699,"src":"4565:12:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$5696_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":5875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4565:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5872,"id":5876,"nodeType":"Return","src":"4558:26:40"}]},"documentation":{"id":5866,"nodeType":"StructuredDocumentation","src":"4399:79:40","text":" @dev Returns the number of key-value pairs in the map. O(1)."},"id":5878,"implemented":true,"kind":"function","modifiers":[],"name":"_length","nodeType":"FunctionDefinition","parameters":{"id":5869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5868,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":5878,"src":"4500:15:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":5867,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":5704,"src":"4500:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"}],"src":"4499:17:40"},"returnParameters":{"id":5872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5871,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5878,"src":"4539:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5870,"name":"uint256","nodeType":"ElementaryTypeName","src":"4539:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4538:9:40"},"scope":6248,"src":"4483:108:40","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":5912,"nodeType":"Block","src":"5019:189:40","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":5891,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5881,"src":"5037:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":5892,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":5699,"src":"5037:12:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$5696_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":5893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5037:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5894,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5883,"src":"5059:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5037:27:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e6473","id":5896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5066:36:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_86631030b9066a18616a068fc09fce83d18af4765cb1d2166fa475228f4db155","typeString":"literal_string \"EnumerableMap: index out of bounds\""},"value":"EnumerableMap: index out of bounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_86631030b9066a18616a068fc09fce83d18af4765cb1d2166fa475228f4db155","typeString":"literal_string \"EnumerableMap: index out of bounds\""}],"id":5890,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5029:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5029:74:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5898,"nodeType":"ExpressionStatement","src":"5029:74:40"},{"assignments":[5900],"declarations":[{"constant":false,"id":5900,"mutability":"mutable","name":"entry","nodeType":"VariableDeclaration","scope":5912,"src":"5114:22:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$5696_storage_ptr","typeString":"struct EnumerableMap.MapEntry"},"typeName":{"id":5899,"name":"MapEntry","nodeType":"UserDefinedTypeName","referencedDeclaration":5696,"src":"5114:8:40","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$5696_storage_ptr","typeString":"struct EnumerableMap.MapEntry"}},"visibility":"internal"}],"id":5905,"initialValue":{"baseExpression":{"expression":{"id":5901,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5881,"src":"5139:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":5902,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":5699,"src":"5139:12:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$5696_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":5904,"indexExpression":{"id":5903,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5883,"src":"5152:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5139:19:40","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$5696_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"nodeType":"VariableDeclarationStatement","src":"5114:44:40"},{"expression":{"components":[{"expression":{"id":5906,"name":"entry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5900,"src":"5176:5:40","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$5696_storage_ptr","typeString":"struct EnumerableMap.MapEntry storage pointer"}},"id":5907,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":5693,"src":"5176:10:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":5908,"name":"entry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5900,"src":"5188:5:40","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$5696_storage_ptr","typeString":"struct EnumerableMap.MapEntry storage pointer"}},"id":5909,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5695,"src":"5188:12:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":5910,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5175:26:40","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bytes32,bytes32)"}},"functionReturnParameters":5889,"id":5911,"nodeType":"Return","src":"5168:33:40"}]},"documentation":{"id":5879,"nodeType":"StructuredDocumentation","src":"4596:333:40","text":" @dev Returns the key-value pair stored at position `index` in the map. O(1).\n Note that there are no guarantees on the ordering of entries inside the\n array, and it may change when more entries are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":5913,"implemented":true,"kind":"function","modifiers":[],"name":"_at","nodeType":"FunctionDefinition","parameters":{"id":5884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5881,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":5913,"src":"4947:15:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":5880,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":5704,"src":"4947:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":5883,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":5913,"src":"4964:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5882,"name":"uint256","nodeType":"ElementaryTypeName","src":"4964:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4946:32:40"},"returnParameters":{"id":5889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5886,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5913,"src":"5001:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5885,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5001:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5888,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5913,"src":"5010:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5887,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5010:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5000:18:40"},"scope":6248,"src":"4934:274:40","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":5950,"nodeType":"Block","src":"5434:220:40","statements":[{"assignments":[5926],"declarations":[{"constant":false,"id":5926,"mutability":"mutable","name":"keyIndex","nodeType":"VariableDeclaration","scope":5950,"src":"5444:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5925,"name":"uint256","nodeType":"ElementaryTypeName","src":"5444:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5931,"initialValue":{"baseExpression":{"expression":{"id":5927,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5916,"src":"5463:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":5928,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":5703,"src":"5463:12:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":5930,"indexExpression":{"id":5929,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5918,"src":"5476:3:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5463:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5444:36:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5932,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5926,"src":"5494:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5506:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5494:13:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5939,"nodeType":"IfStatement","src":"5490:36:40","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":5935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5517:5:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5524:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5937,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5516:10:40","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":5924,"id":5938,"nodeType":"Return","src":"5509:17:40"}},{"expression":{"components":[{"hexValue":"74727565","id":5940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5580:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"baseExpression":{"expression":{"id":5941,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5916,"src":"5586:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":5942,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":5699,"src":"5586:12:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$5696_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":5946,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5943,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5926,"src":"5599:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5610:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5599:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5586:26:40","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$5696_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"id":5947,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5695,"src":"5586:33:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":5948,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5579:41:40","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$","typeString":"tuple(bool,bytes32)"}},"functionReturnParameters":5924,"id":5949,"nodeType":"Return","src":"5572:48:40"}]},"documentation":{"id":5914,"nodeType":"StructuredDocumentation","src":"5214:131:40","text":" @dev Tries to returns the value associated with `key`.  O(1).\n Does not revert if `key` is not in the map."},"id":5951,"implemented":true,"kind":"function","modifiers":[],"name":"_tryGet","nodeType":"FunctionDefinition","parameters":{"id":5919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5916,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":5951,"src":"5367:15:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":5915,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":5704,"src":"5367:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":5918,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":5951,"src":"5384:11:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5917,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5384:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5366:30:40"},"returnParameters":{"id":5924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5921,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5951,"src":"5419:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5920,"name":"bool","nodeType":"ElementaryTypeName","src":"5419:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5923,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5951,"src":"5425:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5922,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5425:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5418:15:40"},"scope":6248,"src":"5350:304:40","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":5983,"nodeType":"Block","src":"5881:232:40","statements":[{"assignments":[5962],"declarations":[{"constant":false,"id":5962,"mutability":"mutable","name":"keyIndex","nodeType":"VariableDeclaration","scope":5983,"src":"5891:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5961,"name":"uint256","nodeType":"ElementaryTypeName","src":"5891:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5967,"initialValue":{"baseExpression":{"expression":{"id":5963,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5954,"src":"5910:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":5964,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":5703,"src":"5910:12:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":5966,"indexExpression":{"id":5965,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5956,"src":"5923:3:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5910:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5891:36:40"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5969,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5962,"src":"5945:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5957:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5945:13:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"456e756d657261626c654d61703a206e6f6e6578697374656e74206b6579","id":5972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5960:32:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3551e30d3095fd81287b88f7139bb09818e34280e85ee821994ebaebbed7072","typeString":"literal_string \"EnumerableMap: nonexistent key\""},"value":"EnumerableMap: nonexistent key"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d3551e30d3095fd81287b88f7139bb09818e34280e85ee821994ebaebbed7072","typeString":"literal_string \"EnumerableMap: nonexistent key\""}],"id":5968,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5937:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5937:56:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5974,"nodeType":"ExpressionStatement","src":"5937:56:40"},{"expression":{"expression":{"baseExpression":{"expression":{"id":5975,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5954,"src":"6046:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":5976,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":5699,"src":"6046:12:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$5696_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":5980,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5977,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5962,"src":"6059:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6070:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6059:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6046:26:40","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$5696_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"id":5981,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5695,"src":"6046:33:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":5960,"id":5982,"nodeType":"Return","src":"6039:40:40"}]},"documentation":{"id":5952,"nodeType":"StructuredDocumentation","src":"5660:141:40","text":" @dev Returns the value associated with `key`.  O(1).\n Requirements:\n - `key` must be in the map."},"id":5984,"implemented":true,"kind":"function","modifiers":[],"name":"_get","nodeType":"FunctionDefinition","parameters":{"id":5957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5954,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":5984,"src":"5820:15:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":5953,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":5704,"src":"5820:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":5956,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":5984,"src":"5837:11:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5955,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5837:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5819:30:40"},"returnParameters":{"id":5960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5959,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5984,"src":"5872:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5958,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5872:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5871:9:40"},"scope":6248,"src":"5806:307:40","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6018,"nodeType":"Block","src":"6498:212:40","statements":[{"assignments":[5997],"declarations":[{"constant":false,"id":5997,"mutability":"mutable","name":"keyIndex","nodeType":"VariableDeclaration","scope":6018,"src":"6508:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5996,"name":"uint256","nodeType":"ElementaryTypeName","src":"6508:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6002,"initialValue":{"baseExpression":{"expression":{"id":5998,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"6527:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":5999,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":5703,"src":"6527:12:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6001,"indexExpression":{"id":6000,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5989,"src":"6540:3:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6527:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6508:36:40"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6004,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5997,"src":"6562:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6574:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6562:13:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6007,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5991,"src":"6577:12:40","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":6003,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6554:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6554:36:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6009,"nodeType":"ExpressionStatement","src":"6554:36:40"},{"expression":{"expression":{"baseExpression":{"expression":{"id":6010,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"6643:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map storage pointer"}},"id":6011,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_entries","nodeType":"MemberAccess","referencedDeclaration":5699,"src":"6643:12:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MapEntry_$5696_storage_$dyn_storage","typeString":"struct EnumerableMap.MapEntry storage ref[] storage ref"}},"id":6015,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6012,"name":"keyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5997,"src":"6656:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6667:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6656:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6643:26:40","typeDescriptions":{"typeIdentifier":"t_struct$_MapEntry_$5696_storage","typeString":"struct EnumerableMap.MapEntry storage ref"}},"id":6016,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5695,"src":"6643:33:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":5995,"id":6017,"nodeType":"Return","src":"6636:40:40"}]},"documentation":{"id":5985,"nodeType":"StructuredDocumentation","src":"6119:271:40","text":" @dev Same as {_get}, with a custom error message when `key` is not in the map.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {_tryGet}."},"id":6019,"implemented":true,"kind":"function","modifiers":[],"name":"_get","nodeType":"FunctionDefinition","parameters":{"id":5992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5987,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":6019,"src":"6409:15:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":5986,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":5704,"src":"6409:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"},{"constant":false,"id":5989,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":6019,"src":"6426:11:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5988,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6426:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5991,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":6019,"src":"6439:26:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5990,"name":"string","nodeType":"ElementaryTypeName","src":"6439:6:40","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6408:58:40"},"returnParameters":{"id":5995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5994,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6019,"src":"6489:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5993,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6489:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6488:9:40"},"scope":6248,"src":"6395:315:40","stateMutability":"view","virtual":false,"visibility":"private"},{"canonicalName":"EnumerableMap.UintToAddressMap","id":6022,"members":[{"constant":false,"id":6021,"mutability":"mutable","name":"_inner","nodeType":"VariableDeclaration","scope":6022,"src":"6775:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map"},"typeName":{"id":6020,"name":"Map","nodeType":"UserDefinedTypeName","referencedDeclaration":5704,"src":"6775:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage_ptr","typeString":"struct EnumerableMap.Map"}},"visibility":"internal"}],"name":"UintToAddressMap","nodeType":"StructDefinition","scope":6248,"src":"6741:51:40","visibility":"public"},{"body":{"id":6053,"nodeType":"Block","src":"7114:88:40","statements":[{"expression":{"arguments":[{"expression":{"id":6035,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6025,"src":"7136:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":6036,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6021,"src":"7136:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":6039,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6027,"src":"7156:3:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7148:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6037,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7148:7:40","typeDescriptions":{}}},"id":6040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7148:12:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"arguments":[{"id":6047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6029,"src":"7186:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7178:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6045,"name":"uint160","nodeType":"ElementaryTypeName","src":"7178:7:40","typeDescriptions":{}}},"id":6048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7178:14:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6044,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7170:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6043,"name":"uint256","nodeType":"ElementaryTypeName","src":"7170:7:40","typeDescriptions":{}}},"id":6049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7170:23:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6042,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7162:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6041,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7162:7:40","typeDescriptions":{}}},"id":6050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7162:32:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$5704_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6034,"name":"_set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5766,"src":"7131:4:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Map_$5704_storage_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32,bytes32) returns (bool)"}},"id":6051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7131:64:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6033,"id":6052,"nodeType":"Return","src":"7124:71:40"}]},"documentation":{"id":6023,"nodeType":"StructuredDocumentation","src":"6798:216:40","text":" @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present."},"id":6054,"implemented":true,"kind":"function","modifiers":[],"name":"set","nodeType":"FunctionDefinition","parameters":{"id":6030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6025,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":6054,"src":"7032:28:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":6024,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":6022,"src":"7032:16:40","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":6027,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":6054,"src":"7062:11:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6026,"name":"uint256","nodeType":"ElementaryTypeName","src":"7062:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6029,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6054,"src":"7075:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6028,"name":"address","nodeType":"ElementaryTypeName","src":"7075:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7031:58:40"},"returnParameters":{"id":6033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6032,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6054,"src":"7108:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6031,"name":"bool","nodeType":"ElementaryTypeName","src":"7108:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7107:6:40"},"scope":6248,"src":"7019:183:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6073,"nodeType":"Block","src":"7444:57:40","statements":[{"expression":{"arguments":[{"expression":{"id":6065,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6057,"src":"7469:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":6066,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6021,"src":"7469:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":6069,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6059,"src":"7489:3:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6068,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7481:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6067,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7481:7:40","typeDescriptions":{}}},"id":6070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7481:12:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$5704_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6064,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5847,"src":"7461:7:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Map_$5704_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32) returns (bool)"}},"id":6071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7461:33:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6063,"id":6072,"nodeType":"Return","src":"7454:40:40"}]},"documentation":{"id":6055,"nodeType":"StructuredDocumentation","src":"7208:148:40","text":" @dev Removes a value from a set. O(1).\n Returns true if the key was removed from the map, that is if it was present."},"id":6074,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":6060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6057,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":6074,"src":"7377:28:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":6056,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":6022,"src":"7377:16:40","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":6059,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":6074,"src":"7407:11:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6058,"name":"uint256","nodeType":"ElementaryTypeName","src":"7407:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7376:43:40"},"returnParameters":{"id":6063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6062,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6074,"src":"7438:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6061,"name":"bool","nodeType":"ElementaryTypeName","src":"7438:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7437:6:40"},"scope":6248,"src":"7361:140:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6093,"nodeType":"Block","src":"7670:59:40","statements":[{"expression":{"arguments":[{"expression":{"id":6085,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6077,"src":"7697:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":6086,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6021,"src":"7697:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":6089,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6079,"src":"7717:3:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6088,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7709:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6087,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7709:7:40","typeDescriptions":{}}},"id":6090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7709:12:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$5704_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6084,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5865,"src":"7687:9:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$5704_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bool)"}},"id":6091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7687:35:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6083,"id":6092,"nodeType":"Return","src":"7680:42:40"}]},"documentation":{"id":6075,"nodeType":"StructuredDocumentation","src":"7507:68:40","text":" @dev Returns true if the key is in the map. O(1)."},"id":6094,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":6080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6077,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":6094,"src":"7598:28:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":6076,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":6022,"src":"7598:16:40","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":6079,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":6094,"src":"7628:11:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6078,"name":"uint256","nodeType":"ElementaryTypeName","src":"7628:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7597:43:40"},"returnParameters":{"id":6083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6082,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6094,"src":"7664:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6081,"name":"bool","nodeType":"ElementaryTypeName","src":"7664:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7663:6:40"},"scope":6248,"src":"7580:149:40","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6107,"nodeType":"Block","src":"7890:43:40","statements":[{"expression":{"arguments":[{"expression":{"id":6103,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6097,"src":"7915:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":6104,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6021,"src":"7915:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage","typeString":"struct EnumerableMap.Map storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$5704_storage","typeString":"struct EnumerableMap.Map storage ref"}],"id":6102,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5878,"src":"7907:7:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$5704_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableMap.Map storage pointer) view returns (uint256)"}},"id":6105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7907:19:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6101,"id":6106,"nodeType":"Return","src":"7900:26:40"}]},"documentation":{"id":6095,"nodeType":"StructuredDocumentation","src":"7735:72:40","text":" @dev Returns the number of elements in the map. O(1)."},"id":6108,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":6098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6097,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":6108,"src":"7828:28:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":6096,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":6022,"src":"7828:16:40","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"}],"src":"7827:30:40"},"returnParameters":{"id":6101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6100,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6108,"src":"7881:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6099,"name":"uint256","nodeType":"ElementaryTypeName","src":"7881:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7880:9:40"},"scope":6248,"src":"7812:121:40","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6146,"nodeType":"Block","src":"8359:135:40","statements":[{"assignments":[6121,6123],"declarations":[{"constant":false,"id":6121,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":6146,"src":"8370:11:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6120,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8370:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6123,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6146,"src":"8383:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6122,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8383:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":6129,"initialValue":{"arguments":[{"expression":{"id":6125,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6111,"src":"8404:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":6126,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6021,"src":"8404:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"id":6127,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6113,"src":"8416:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$5704_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6124,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5913,"src":"8400:3:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$5704_storage_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$","typeString":"function (struct EnumerableMap.Map storage pointer,uint256) view returns (bytes32,bytes32)"}},"id":6128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8400:22:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bytes32,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"8369:53:40"},{"expression":{"components":[{"arguments":[{"id":6132,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6121,"src":"8448:3:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6131,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8440:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6130,"name":"uint256","nodeType":"ElementaryTypeName","src":"8440:7:40","typeDescriptions":{}}},"id":6133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8440:12:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"arguments":[{"arguments":[{"id":6140,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6123,"src":"8478:5:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6139,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8470:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6138,"name":"uint256","nodeType":"ElementaryTypeName","src":"8470:7:40","typeDescriptions":{}}},"id":6141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8470:14:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6137,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8462:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6136,"name":"uint160","nodeType":"ElementaryTypeName","src":"8462:7:40","typeDescriptions":{}}},"id":6142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8462:23:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8454:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6134,"name":"address","nodeType":"ElementaryTypeName","src":"8454:7:40","typeDescriptions":{}}},"id":6143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8454:32:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"id":6144,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8439:48:40","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_payable_$","typeString":"tuple(uint256,address payable)"}},"functionReturnParameters":6119,"id":6145,"nodeType":"Return","src":"8432:55:40"}]},"documentation":{"id":6109,"nodeType":"StructuredDocumentation","src":"7938:318:40","text":" @dev Returns the element stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":6147,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":6114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6111,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":6147,"src":"8273:28:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":6110,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":6022,"src":"8273:16:40","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":6113,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":6147,"src":"8303:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6112,"name":"uint256","nodeType":"ElementaryTypeName","src":"8303:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8272:45:40"},"returnParameters":{"id":6119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6116,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6147,"src":"8341:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6115,"name":"uint256","nodeType":"ElementaryTypeName","src":"8341:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6118,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6147,"src":"8350:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6117,"name":"address","nodeType":"ElementaryTypeName","src":"8350:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8340:18:40"},"scope":6248,"src":"8261:233:40","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6185,"nodeType":"Block","src":"8771:142:40","statements":[{"assignments":[6160,6162],"declarations":[{"constant":false,"id":6160,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":6185,"src":"8782:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6159,"name":"bool","nodeType":"ElementaryTypeName","src":"8782:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6162,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6185,"src":"8796:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6161,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8796:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":6171,"initialValue":{"arguments":[{"expression":{"id":6164,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"8821:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":6165,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6021,"src":"8821:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":6168,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6152,"src":"8841:3:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8833:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6166,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8833:7:40","typeDescriptions":{}}},"id":6169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8833:12:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$5704_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6163,"name":"_tryGet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5951,"src":"8813:7:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$5704_storage_ptr_$_t_bytes32_$returns$_t_bool_$_t_bytes32_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bool,bytes32)"}},"id":6170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8813:33:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$","typeString":"tuple(bool,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"8781:65:40"},{"expression":{"components":[{"id":6172,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6160,"src":"8864:7:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"arguments":[{"arguments":[{"id":6179,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6162,"src":"8897:5:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6178,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8889:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6177,"name":"uint256","nodeType":"ElementaryTypeName","src":"8889:7:40","typeDescriptions":{}}},"id":6180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8889:14:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6176,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8881:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6175,"name":"uint160","nodeType":"ElementaryTypeName","src":"8881:7:40","typeDescriptions":{}}},"id":6181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8881:23:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6174,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8873:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6173,"name":"address","nodeType":"ElementaryTypeName","src":"8873:7:40","typeDescriptions":{}}},"id":6182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8873:32:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"id":6183,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8863:43:40","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_payable_$","typeString":"tuple(bool,address payable)"}},"functionReturnParameters":6158,"id":6184,"nodeType":"Return","src":"8856:50:40"}]},"documentation":{"id":6148,"nodeType":"StructuredDocumentation","src":"8500:169:40","text":" @dev Tries to returns the value associated with `key`.  O(1).\n Does not revert if `key` is not in the map.\n _Available since v3.4._"},"id":6186,"implemented":true,"kind":"function","modifiers":[],"name":"tryGet","nodeType":"FunctionDefinition","parameters":{"id":6153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6150,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":6186,"src":"8690:28:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":6149,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":6022,"src":"8690:16:40","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":6152,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":6186,"src":"8720:11:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6151,"name":"uint256","nodeType":"ElementaryTypeName","src":"8720:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8689:43:40"},"returnParameters":{"id":6158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6155,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6186,"src":"8756:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6154,"name":"bool","nodeType":"ElementaryTypeName","src":"8756:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6157,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6186,"src":"8762:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6156,"name":"address","nodeType":"ElementaryTypeName","src":"8762:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8755:15:40"},"scope":6248,"src":"8674:239:40","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6214,"nodeType":"Block","src":"9153:81:40","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":6203,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6189,"src":"9199:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":6204,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6021,"src":"9199:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":6207,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6191,"src":"9219:3:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6206,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9211:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6205,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9211:7:40","typeDescriptions":{}}},"id":6208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9211:12:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$5704_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6202,"name":"_get","nodeType":"Identifier","overloadedDeclarations":[5984,6019],"referencedDeclaration":5984,"src":"9194:4:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$5704_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bytes32)"}},"id":6209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9194:30:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9186:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6200,"name":"uint256","nodeType":"ElementaryTypeName","src":"9186:7:40","typeDescriptions":{}}},"id":6210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9186:39:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6199,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9178:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6198,"name":"uint160","nodeType":"ElementaryTypeName","src":"9178:7:40","typeDescriptions":{}}},"id":6211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9178:48:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6197,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9170:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6196,"name":"address","nodeType":"ElementaryTypeName","src":"9170:7:40","typeDescriptions":{}}},"id":6212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9170:57:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":6195,"id":6213,"nodeType":"Return","src":"9163:64:40"}]},"documentation":{"id":6187,"nodeType":"StructuredDocumentation","src":"8919:141:40","text":" @dev Returns the value associated with `key`.  O(1).\n Requirements:\n - `key` must be in the map."},"id":6215,"implemented":true,"kind":"function","modifiers":[],"name":"get","nodeType":"FunctionDefinition","parameters":{"id":6192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6189,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":6215,"src":"9078:28:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":6188,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":6022,"src":"9078:16:40","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":6191,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":6215,"src":"9108:11:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6190,"name":"uint256","nodeType":"ElementaryTypeName","src":"9108:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9077:43:40"},"returnParameters":{"id":6195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6194,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6215,"src":"9144:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6193,"name":"address","nodeType":"ElementaryTypeName","src":"9144:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9143:9:40"},"scope":6248,"src":"9065:169:40","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6246,"nodeType":"Block","src":"9630:95:40","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":6234,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6218,"src":"9676:3:40","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap storage pointer"}},"id":6235,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6021,"src":"9676:10:40","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$5704_storage","typeString":"struct EnumerableMap.Map storage ref"}},{"arguments":[{"id":6238,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6220,"src":"9696:3:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6237,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9688:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6236,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9688:7:40","typeDescriptions":{}}},"id":6239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9688:12:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6240,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6222,"src":"9702:12:40","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Map_$5704_storage","typeString":"struct EnumerableMap.Map storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":6233,"name":"_get","nodeType":"Identifier","overloadedDeclarations":[5984,6019],"referencedDeclaration":6019,"src":"9671:4:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$5704_storage_ptr_$_t_bytes32_$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct EnumerableMap.Map storage pointer,bytes32,string memory) view returns (bytes32)"}},"id":6241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9671:44:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9663:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6231,"name":"uint256","nodeType":"ElementaryTypeName","src":"9663:7:40","typeDescriptions":{}}},"id":6242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9663:53:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9655:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6229,"name":"uint160","nodeType":"ElementaryTypeName","src":"9655:7:40","typeDescriptions":{}}},"id":6243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9655:62:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6228,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9647:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6227,"name":"address","nodeType":"ElementaryTypeName","src":"9647:7:40","typeDescriptions":{}}},"id":6244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9647:71:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":6226,"id":6245,"nodeType":"Return","src":"9640:78:40"}]},"documentation":{"id":6216,"nodeType":"StructuredDocumentation","src":"9240:269:40","text":" @dev Same as {get}, with a custom error message when `key` is not in the map.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryGet}."},"id":6247,"implemented":true,"kind":"function","modifiers":[],"name":"get","nodeType":"FunctionDefinition","parameters":{"id":6223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6218,"mutability":"mutable","name":"map","nodeType":"VariableDeclaration","scope":6247,"src":"9527:28:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"},"typeName":{"id":6217,"name":"UintToAddressMap","nodeType":"UserDefinedTypeName","referencedDeclaration":6022,"src":"9527:16:40","typeDescriptions":{"typeIdentifier":"t_struct$_UintToAddressMap_$6022_storage_ptr","typeString":"struct EnumerableMap.UintToAddressMap"}},"visibility":"internal"},{"constant":false,"id":6220,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":6247,"src":"9557:11:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6219,"name":"uint256","nodeType":"ElementaryTypeName","src":"9557:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6222,"mutability":"mutable","name":"errorMessage","nodeType":"VariableDeclaration","scope":6247,"src":"9570:26:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6221,"name":"string","nodeType":"ElementaryTypeName","src":"9570:6:40","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"9526:71:40"},"returnParameters":{"id":6226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6225,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6247,"src":"9621:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6224,"name":"address","nodeType":"ElementaryTypeName","src":"9621:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9620:9:40"},"scope":6248,"src":"9514:211:40","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":6249,"src":"764:8963:40"}],"src":"33:9695:40"},"id":40},"@openzeppelin/contracts/utils/EnumerableSet.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/EnumerableSet.sol","exportedSymbols":{"EnumerableSet":[6740]},"id":6741,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6250,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:41"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":6251,"nodeType":"StructuredDocumentation","src":"58:686:41","text":" @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n     // Add the library methods\n     using EnumerableSet for EnumerableSet.AddressSet;\n     // Declare a set state variable\n     EnumerableSet.AddressSet private mySet;\n }\n ```\n As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n and `uint256` (`UintSet`) are supported."},"fullyImplemented":true,"id":6740,"linearizedBaseContracts":[6740],"name":"EnumerableSet","nodeType":"ContractDefinition","nodes":[{"canonicalName":"EnumerableSet.Set","id":6259,"members":[{"constant":false,"id":6254,"mutability":"mutable","name":"_values","nodeType":"VariableDeclaration","scope":6259,"src":"1267:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":6252,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1267:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6253,"nodeType":"ArrayTypeName","src":"1267:9:41","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":6258,"mutability":"mutable","name":"_indexes","nodeType":"VariableDeclaration","scope":6259,"src":"1418:37:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"typeName":{"id":6257,"keyType":{"id":6255,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1427:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1418:28:41","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueType":{"id":6256,"name":"uint256","nodeType":"ElementaryTypeName","src":"1438:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"Set","nodeType":"StructDefinition","scope":6740,"src":"1213:249:41","visibility":"public"},{"body":{"id":6299,"nodeType":"Block","src":"1701:335:41","statements":[{"condition":{"id":6273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1715:22:41","subExpression":{"arguments":[{"id":6270,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6262,"src":"1726:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},{"id":6271,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6264,"src":"1731:5:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6269,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6398,"src":"1716:9:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6259_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":6272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1716:21:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6297,"nodeType":"Block","src":"1993:37:41","statements":[{"expression":{"hexValue":"66616c7365","id":6295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2014:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":6268,"id":6296,"nodeType":"Return","src":"2007:12:41"}]},"id":6298,"nodeType":"IfStatement","src":"1711:319:41","trueBody":{"id":6294,"nodeType":"Block","src":"1739:248:41","statements":[{"expression":{"arguments":[{"id":6279,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6264,"src":"1770:5:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"expression":{"id":6274,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6262,"src":"1753:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6277,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6254,"src":"1753:11:41","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"1753:16:41","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":6280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1753:23:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6281,"nodeType":"ExpressionStatement","src":"1753:23:41"},{"expression":{"id":6290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6282,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6262,"src":"1911:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6285,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6258,"src":"1911:12:41","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6286,"indexExpression":{"id":6284,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6264,"src":"1924:5:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1911:19:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":6287,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6262,"src":"1933:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6288,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6254,"src":"1933:11:41","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1933:18:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1911:40:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6291,"nodeType":"ExpressionStatement","src":"1911:40:41"},{"expression":{"hexValue":"74727565","id":6292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1972:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6268,"id":6293,"nodeType":"Return","src":"1965:11:41"}]}}]},"documentation":{"id":6260,"nodeType":"StructuredDocumentation","src":"1468:159:41","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":6300,"implemented":true,"kind":"function","modifiers":[],"name":"_add","nodeType":"FunctionDefinition","parameters":{"id":6265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6262,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6300,"src":"1646:15:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6261,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6259,"src":"1646:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":6264,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6300,"src":"1663:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6263,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1663:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1645:32:41"},"returnParameters":{"id":6268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6267,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6300,"src":"1695:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6266,"name":"bool","nodeType":"ElementaryTypeName","src":"1695:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1694:6:41"},"scope":6740,"src":"1632:404:41","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":6379,"nodeType":"Block","src":"2276:1440:41","statements":[{"assignments":[6311],"declarations":[{"constant":false,"id":6311,"mutability":"mutable","name":"valueIndex","nodeType":"VariableDeclaration","scope":6379,"src":"2386:18:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6310,"name":"uint256","nodeType":"ElementaryTypeName","src":"2386:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6316,"initialValue":{"baseExpression":{"expression":{"id":6312,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6303,"src":"2407:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6313,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6258,"src":"2407:12:41","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6315,"indexExpression":{"id":6314,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"2420:5:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2407:19:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2386:40:41"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6317,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6311,"src":"2441:10:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2455:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2441:15:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6377,"nodeType":"Block","src":"3673:37:41","statements":[{"expression":{"hexValue":"66616c7365","id":6375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3694:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":6309,"id":6376,"nodeType":"Return","src":"3687:12:41"}]},"id":6378,"nodeType":"IfStatement","src":"2437:1273:41","trueBody":{"id":6374,"nodeType":"Block","src":"2458:1209:41","statements":[{"assignments":[6321],"declarations":[{"constant":false,"id":6321,"mutability":"mutable","name":"toDeleteIndex","nodeType":"VariableDeclaration","scope":6374,"src":"2798:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6320,"name":"uint256","nodeType":"ElementaryTypeName","src":"2798:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6325,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6322,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6311,"src":"2822:10:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2835:1:41","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2822:14:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2798:38:41"},{"assignments":[6327],"declarations":[{"constant":false,"id":6327,"mutability":"mutable","name":"lastIndex","nodeType":"VariableDeclaration","scope":6374,"src":"2850:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6326,"name":"uint256","nodeType":"ElementaryTypeName","src":"2850:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6333,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":6328,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6303,"src":"2870:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6329,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6254,"src":"2870:11:41","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2870:18:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2891:1:41","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2870:22:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2850:42:41"},{"assignments":[6335],"declarations":[{"constant":false,"id":6335,"mutability":"mutable","name":"lastvalue","nodeType":"VariableDeclaration","scope":6374,"src":"3132:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6334,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3132:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":6340,"initialValue":{"baseExpression":{"expression":{"id":6336,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6303,"src":"3152:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6337,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6254,"src":"3152:11:41","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6339,"indexExpression":{"id":6338,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6327,"src":"3164:9:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3152:22:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3132:42:41"},{"expression":{"id":6347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6341,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6303,"src":"3266:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6344,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6254,"src":"3266:11:41","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6345,"indexExpression":{"id":6343,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6321,"src":"3278:13:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3266:26:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6346,"name":"lastvalue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6335,"src":"3295:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3266:38:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6348,"nodeType":"ExpressionStatement","src":"3266:38:41"},{"expression":{"id":6357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6349,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6303,"src":"3370:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6352,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6258,"src":"3370:12:41","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6353,"indexExpression":{"id":6351,"name":"lastvalue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6335,"src":"3383:9:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3370:23:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6354,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6321,"src":"3396:13:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3412:1:41","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3396:17:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3370:43:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6358,"nodeType":"ExpressionStatement","src":"3370:43:41"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":6359,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6303,"src":"3519:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6362,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6254,"src":"3519:11:41","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"3519:15:41","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$__$returns$__$","typeString":"function ()"}},"id":6364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3519:17:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6365,"nodeType":"ExpressionStatement","src":"3519:17:41"},{"expression":{"id":6370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"3604:26:41","subExpression":{"baseExpression":{"expression":{"id":6366,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6303,"src":"3611:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6367,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6258,"src":"3611:12:41","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6369,"indexExpression":{"id":6368,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"3624:5:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3611:19:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6371,"nodeType":"ExpressionStatement","src":"3604:26:41"},{"expression":{"hexValue":"74727565","id":6372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3652:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6309,"id":6373,"nodeType":"Return","src":"3645:11:41"}]}}]},"documentation":{"id":6301,"nodeType":"StructuredDocumentation","src":"2042:157:41","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":6380,"implemented":true,"kind":"function","modifiers":[],"name":"_remove","nodeType":"FunctionDefinition","parameters":{"id":6306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6303,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6380,"src":"2221:15:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6302,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6259,"src":"2221:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":6305,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6380,"src":"2238:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6304,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2238:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2220:32:41"},"returnParameters":{"id":6309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6308,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6380,"src":"2270:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6307,"name":"bool","nodeType":"ElementaryTypeName","src":"2270:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2269:6:41"},"scope":6740,"src":"2204:1512:41","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":6397,"nodeType":"Block","src":"3876:48:41","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":6390,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6383,"src":"3893:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6391,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6258,"src":"3893:12:41","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6393,"indexExpression":{"id":6392,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6385,"src":"3906:5:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3893:19:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3916:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3893:24:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6389,"id":6396,"nodeType":"Return","src":"3886:31:41"}]},"documentation":{"id":6381,"nodeType":"StructuredDocumentation","src":"3722:70:41","text":" @dev Returns true if the value is in the set. O(1)."},"id":6398,"implemented":true,"kind":"function","modifiers":[],"name":"_contains","nodeType":"FunctionDefinition","parameters":{"id":6386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6383,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6398,"src":"3816:15:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6382,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6259,"src":"3816:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":6385,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6398,"src":"3833:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6384,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3833:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3815:32:41"},"returnParameters":{"id":6389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6388,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6398,"src":"3870:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6387,"name":"bool","nodeType":"ElementaryTypeName","src":"3870:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3869:6:41"},"scope":6740,"src":"3797:127:41","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6410,"nodeType":"Block","src":"4070:42:41","statements":[{"expression":{"expression":{"expression":{"id":6406,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6401,"src":"4087:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6407,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6254,"src":"4087:11:41","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4087:18:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6405,"id":6409,"nodeType":"Return","src":"4080:25:41"}]},"documentation":{"id":6399,"nodeType":"StructuredDocumentation","src":"3930:70:41","text":" @dev Returns the number of values on the set. O(1)."},"id":6411,"implemented":true,"kind":"function","modifiers":[],"name":"_length","nodeType":"FunctionDefinition","parameters":{"id":6402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6401,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6411,"src":"4022:15:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6400,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6259,"src":"4022:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"src":"4021:17:41"},"returnParameters":{"id":6405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6404,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6411,"src":"4061:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6403,"name":"uint256","nodeType":"ElementaryTypeName","src":"4061:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4060:9:41"},"scope":6740,"src":"4005:107:41","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6435,"nodeType":"Block","src":"4520:125:41","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":6422,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6414,"src":"4538:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6423,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6254,"src":"4538:11:41","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4538:18:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":6425,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6416,"src":"4559:5:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4538:26:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473","id":6427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4566:36:41","typeDescriptions":{"typeIdentifier":"t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb","typeString":"literal_string \"EnumerableSet: index out of bounds\""},"value":"EnumerableSet: index out of bounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb","typeString":"literal_string \"EnumerableSet: index out of bounds\""}],"id":6421,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4530:7:41","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4530:73:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6429,"nodeType":"ExpressionStatement","src":"4530:73:41"},{"expression":{"baseExpression":{"expression":{"id":6430,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6414,"src":"4620:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6431,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6254,"src":"4620:11:41","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6433,"indexExpression":{"id":6432,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6416,"src":"4632:5:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4620:18:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6420,"id":6434,"nodeType":"Return","src":"4613:25:41"}]},"documentation":{"id":6412,"nodeType":"StructuredDocumentation","src":"4117:322:41","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":6436,"implemented":true,"kind":"function","modifiers":[],"name":"_at","nodeType":"FunctionDefinition","parameters":{"id":6417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6414,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6436,"src":"4457:15:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6413,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6259,"src":"4457:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":6416,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":6436,"src":"4474:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6415,"name":"uint256","nodeType":"ElementaryTypeName","src":"4474:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4456:32:41"},"returnParameters":{"id":6420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6419,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6436,"src":"4511:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6418,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4511:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4510:9:41"},"scope":6740,"src":"4444:201:41","stateMutability":"view","virtual":false,"visibility":"private"},{"canonicalName":"EnumerableSet.Bytes32Set","id":6439,"members":[{"constant":false,"id":6438,"mutability":"mutable","name":"_inner","nodeType":"VariableDeclaration","scope":6439,"src":"4698:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6437,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6259,"src":"4698:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"name":"Bytes32Set","nodeType":"StructDefinition","scope":6740,"src":"4670:45:41","visibility":"public"},{"body":{"id":6455,"nodeType":"Block","src":"4961:47:41","statements":[{"expression":{"arguments":[{"expression":{"id":6450,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6442,"src":"4983:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6439_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6451,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6438,"src":"4983:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":6452,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6444,"src":"4995:5:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6449,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6300,"src":"4978:4:41","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6259_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":6453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4978:23:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6448,"id":6454,"nodeType":"Return","src":"4971:30:41"}]},"documentation":{"id":6440,"nodeType":"StructuredDocumentation","src":"4721:159:41","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":6456,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":6445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6442,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6456,"src":"4898:22:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6439_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":6441,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6439,"src":"4898:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6439_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":6444,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6456,"src":"4922:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6443,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4922:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4897:39:41"},"returnParameters":{"id":6448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6447,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6456,"src":"4955:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6446,"name":"bool","nodeType":"ElementaryTypeName","src":"4955:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4954:6:41"},"scope":6740,"src":"4885:123:41","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6472,"nodeType":"Block","src":"5255:50:41","statements":[{"expression":{"arguments":[{"expression":{"id":6467,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6459,"src":"5280:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6439_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6468,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6438,"src":"5280:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":6469,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6461,"src":"5292:5:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6466,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6380,"src":"5272:7:41","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6259_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":6470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5272:26:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6465,"id":6471,"nodeType":"Return","src":"5265:33:41"}]},"documentation":{"id":6457,"nodeType":"StructuredDocumentation","src":"5014:157:41","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":6473,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":6462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6459,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6473,"src":"5192:22:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6439_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":6458,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6439,"src":"5192:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6439_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":6461,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6473,"src":"5216:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6460,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5216:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5191:39:41"},"returnParameters":{"id":6465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6464,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6473,"src":"5249:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6463,"name":"bool","nodeType":"ElementaryTypeName","src":"5249:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5248:6:41"},"scope":6740,"src":"5176:129:41","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6489,"nodeType":"Block","src":"5472:52:41","statements":[{"expression":{"arguments":[{"expression":{"id":6484,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6476,"src":"5499:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6439_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6485,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6438,"src":"5499:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":6486,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6478,"src":"5511:5:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6483,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6398,"src":"5489:9:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6259_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":6487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5489:28:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6482,"id":6488,"nodeType":"Return","src":"5482:35:41"}]},"documentation":{"id":6474,"nodeType":"StructuredDocumentation","src":"5311:70:41","text":" @dev Returns true if the value is in the set. O(1)."},"id":6490,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":6479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6476,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6490,"src":"5404:22:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6439_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":6475,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6439,"src":"5404:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6439_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":6478,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6490,"src":"5428:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6477,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5428:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5403:39:41"},"returnParameters":{"id":6482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6481,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6490,"src":"5466:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6480,"name":"bool","nodeType":"ElementaryTypeName","src":"5466:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5465:6:41"},"scope":6740,"src":"5386:138:41","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6503,"nodeType":"Block","src":"5677:43:41","statements":[{"expression":{"arguments":[{"expression":{"id":6499,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6493,"src":"5702:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6439_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6500,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6438,"src":"5702:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":6498,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6411,"src":"5694:7:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6259_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (uint256)"}},"id":6501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5694:19:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6497,"id":6502,"nodeType":"Return","src":"5687:26:41"}]},"documentation":{"id":6491,"nodeType":"StructuredDocumentation","src":"5530:70:41","text":" @dev Returns the number of values in the set. O(1)."},"id":6504,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":6494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6493,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6504,"src":"5621:22:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6439_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":6492,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6439,"src":"5621:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6439_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"}],"src":"5620:24:41"},"returnParameters":{"id":6497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6496,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6504,"src":"5668:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6495,"name":"uint256","nodeType":"ElementaryTypeName","src":"5668:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5667:9:41"},"scope":6740,"src":"5605:115:41","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6520,"nodeType":"Block","src":"6135:46:41","statements":[{"expression":{"arguments":[{"expression":{"id":6515,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6507,"src":"6156:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6439_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6516,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6438,"src":"6156:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":6517,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6509,"src":"6168:5:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6514,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6436,"src":"6152:3:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6259_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"}},"id":6518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6152:22:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6513,"id":6519,"nodeType":"Return","src":"6145:29:41"}]},"documentation":{"id":6505,"nodeType":"StructuredDocumentation","src":"5725:322:41","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":6521,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":6510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6507,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6521,"src":"6064:22:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6439_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":6506,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6439,"src":"6064:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6439_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":6509,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":6521,"src":"6088:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6508,"name":"uint256","nodeType":"ElementaryTypeName","src":"6088:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6063:39:41"},"returnParameters":{"id":6513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6512,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6521,"src":"6126:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6511,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6126:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6125:9:41"},"scope":6740,"src":"6052:129:41","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"EnumerableSet.AddressSet","id":6524,"members":[{"constant":false,"id":6523,"mutability":"mutable","name":"_inner","nodeType":"VariableDeclaration","scope":6524,"src":"6234:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6522,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6259,"src":"6234:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"name":"AddressSet","nodeType":"StructDefinition","scope":6740,"src":"6206:45:41","visibility":"public"},{"body":{"id":6549,"nodeType":"Block","src":"6497:74:41","statements":[{"expression":{"arguments":[{"expression":{"id":6535,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6527,"src":"6519:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6524_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6536,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6523,"src":"6519:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"arguments":[{"arguments":[{"id":6543,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6529,"src":"6555:5:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6542,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6547:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6541,"name":"uint160","nodeType":"ElementaryTypeName","src":"6547:7:41","typeDescriptions":{}}},"id":6544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6547:14:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6540,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6539:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6539,"name":"uint256","nodeType":"ElementaryTypeName","src":"6539:7:41","typeDescriptions":{}}},"id":6545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6539:23:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6538,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6531:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6537,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6531:7:41","typeDescriptions":{}}},"id":6546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6531:32:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6534,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6300,"src":"6514:4:41","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6259_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":6547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6514:50:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6533,"id":6548,"nodeType":"Return","src":"6507:57:41"}]},"documentation":{"id":6525,"nodeType":"StructuredDocumentation","src":"6257:159:41","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":6550,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":6530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6527,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6550,"src":"6434:22:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6524_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6526,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6524,"src":"6434:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6524_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6529,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6550,"src":"6458:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6528,"name":"address","nodeType":"ElementaryTypeName","src":"6458:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6433:39:41"},"returnParameters":{"id":6533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6532,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6550,"src":"6491:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6531,"name":"bool","nodeType":"ElementaryTypeName","src":"6491:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6490:6:41"},"scope":6740,"src":"6421:150:41","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6575,"nodeType":"Block","src":"6818:77:41","statements":[{"expression":{"arguments":[{"expression":{"id":6561,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6553,"src":"6843:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6524_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6562,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6523,"src":"6843:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"arguments":[{"arguments":[{"id":6569,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6555,"src":"6879:5:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6568,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6871:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6567,"name":"uint160","nodeType":"ElementaryTypeName","src":"6871:7:41","typeDescriptions":{}}},"id":6570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6871:14:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6566,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6863:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6565,"name":"uint256","nodeType":"ElementaryTypeName","src":"6863:7:41","typeDescriptions":{}}},"id":6571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6863:23:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6564,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6855:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6563,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6855:7:41","typeDescriptions":{}}},"id":6572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6855:32:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6560,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6380,"src":"6835:7:41","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6259_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":6573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6835:53:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6559,"id":6574,"nodeType":"Return","src":"6828:60:41"}]},"documentation":{"id":6551,"nodeType":"StructuredDocumentation","src":"6577:157:41","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":6576,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":6556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6553,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6576,"src":"6755:22:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6524_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6552,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6524,"src":"6755:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6524_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6555,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6576,"src":"6779:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6554,"name":"address","nodeType":"ElementaryTypeName","src":"6779:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6754:39:41"},"returnParameters":{"id":6559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6558,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6576,"src":"6812:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6557,"name":"bool","nodeType":"ElementaryTypeName","src":"6812:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6811:6:41"},"scope":6740,"src":"6739:156:41","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6601,"nodeType":"Block","src":"7062:79:41","statements":[{"expression":{"arguments":[{"expression":{"id":6587,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6579,"src":"7089:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6524_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6588,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6523,"src":"7089:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"arguments":[{"arguments":[{"id":6595,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6581,"src":"7125:5:41","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6594,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7117:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6593,"name":"uint160","nodeType":"ElementaryTypeName","src":"7117:7:41","typeDescriptions":{}}},"id":6596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7117:14:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7109:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6591,"name":"uint256","nodeType":"ElementaryTypeName","src":"7109:7:41","typeDescriptions":{}}},"id":6597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7109:23:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6590,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7101:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6589,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7101:7:41","typeDescriptions":{}}},"id":6598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7101:32:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6586,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6398,"src":"7079:9:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6259_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":6599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7079:55:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6585,"id":6600,"nodeType":"Return","src":"7072:62:41"}]},"documentation":{"id":6577,"nodeType":"StructuredDocumentation","src":"6901:70:41","text":" @dev Returns true if the value is in the set. O(1)."},"id":6602,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":6582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6579,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6602,"src":"6994:22:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6524_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6578,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6524,"src":"6994:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6524_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6581,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6602,"src":"7018:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6580,"name":"address","nodeType":"ElementaryTypeName","src":"7018:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6993:39:41"},"returnParameters":{"id":6585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6584,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6602,"src":"7056:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6583,"name":"bool","nodeType":"ElementaryTypeName","src":"7056:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7055:6:41"},"scope":6740,"src":"6976:165:41","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6615,"nodeType":"Block","src":"7294:43:41","statements":[{"expression":{"arguments":[{"expression":{"id":6611,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6605,"src":"7319:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6524_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6612,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6523,"src":"7319:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":6610,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6411,"src":"7311:7:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6259_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (uint256)"}},"id":6613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7311:19:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6609,"id":6614,"nodeType":"Return","src":"7304:26:41"}]},"documentation":{"id":6603,"nodeType":"StructuredDocumentation","src":"7147:70:41","text":" @dev Returns the number of values in the set. O(1)."},"id":6616,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":6606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6605,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6616,"src":"7238:22:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6524_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6604,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6524,"src":"7238:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6524_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"src":"7237:24:41"},"returnParameters":{"id":6609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6608,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6616,"src":"7285:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6607,"name":"uint256","nodeType":"ElementaryTypeName","src":"7285:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7284:9:41"},"scope":6740,"src":"7222:115:41","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6641,"nodeType":"Block","src":"7752:73:41","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":6633,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6619,"src":"7797:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6524_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6634,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6523,"src":"7797:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":6635,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6621,"src":"7809:5:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6632,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6436,"src":"7793:3:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6259_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"}},"id":6636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7793:22:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6631,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7785:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6630,"name":"uint256","nodeType":"ElementaryTypeName","src":"7785:7:41","typeDescriptions":{}}},"id":6637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7785:31:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6629,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7777:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6628,"name":"uint160","nodeType":"ElementaryTypeName","src":"7777:7:41","typeDescriptions":{}}},"id":6638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7777:40:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6627,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7769:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6626,"name":"address","nodeType":"ElementaryTypeName","src":"7769:7:41","typeDescriptions":{}}},"id":6639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7769:49:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":6625,"id":6640,"nodeType":"Return","src":"7762:56:41"}]},"documentation":{"id":6617,"nodeType":"StructuredDocumentation","src":"7342:322:41","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":6642,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":6622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6619,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6642,"src":"7681:22:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6524_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6618,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6524,"src":"7681:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6524_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6621,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":6642,"src":"7705:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6620,"name":"uint256","nodeType":"ElementaryTypeName","src":"7705:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7680:39:41"},"returnParameters":{"id":6625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6624,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6642,"src":"7743:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6623,"name":"address","nodeType":"ElementaryTypeName","src":"7743:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7742:9:41"},"scope":6740,"src":"7669:156:41","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"EnumerableSet.UintSet","id":6645,"members":[{"constant":false,"id":6644,"mutability":"mutable","name":"_inner","nodeType":"VariableDeclaration","scope":6645,"src":"7873:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6643,"name":"Set","nodeType":"UserDefinedTypeName","referencedDeclaration":6259,"src":"7873:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"name":"UintSet","nodeType":"StructDefinition","scope":6740,"src":"7848:42:41","visibility":"public"},{"body":{"id":6664,"nodeType":"Block","src":"8133:56:41","statements":[{"expression":{"arguments":[{"expression":{"id":6656,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6648,"src":"8155:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":6657,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6644,"src":"8155:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"id":6660,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6650,"src":"8175:5:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6659,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8167:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6658,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8167:7:41","typeDescriptions":{}}},"id":6661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8167:14:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6655,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6300,"src":"8150:4:41","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6259_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":6662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8150:32:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6654,"id":6663,"nodeType":"Return","src":"8143:39:41"}]},"documentation":{"id":6646,"nodeType":"StructuredDocumentation","src":"7896:159:41","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":6665,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":6651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6648,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6665,"src":"8073:19:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":6647,"name":"UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6645,"src":"8073:7:41","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":6650,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6665,"src":"8094:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6649,"name":"uint256","nodeType":"ElementaryTypeName","src":"8094:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8072:36:41"},"returnParameters":{"id":6654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6653,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6665,"src":"8127:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6652,"name":"bool","nodeType":"ElementaryTypeName","src":"8127:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8126:6:41"},"scope":6740,"src":"8060:129:41","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6684,"nodeType":"Block","src":"8433:59:41","statements":[{"expression":{"arguments":[{"expression":{"id":6676,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6668,"src":"8458:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":6677,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6644,"src":"8458:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"id":6680,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6670,"src":"8478:5:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6679,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8470:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6678,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8470:7:41","typeDescriptions":{}}},"id":6681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8470:14:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6675,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6380,"src":"8450:7:41","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6259_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":6682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8450:35:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6674,"id":6683,"nodeType":"Return","src":"8443:42:41"}]},"documentation":{"id":6666,"nodeType":"StructuredDocumentation","src":"8195:157:41","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":6685,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":6671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6668,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6685,"src":"8373:19:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":6667,"name":"UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6645,"src":"8373:7:41","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":6670,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6685,"src":"8394:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6669,"name":"uint256","nodeType":"ElementaryTypeName","src":"8394:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8372:36:41"},"returnParameters":{"id":6674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6673,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6685,"src":"8427:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6672,"name":"bool","nodeType":"ElementaryTypeName","src":"8427:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8426:6:41"},"scope":6740,"src":"8357:135:41","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6704,"nodeType":"Block","src":"8656:61:41","statements":[{"expression":{"arguments":[{"expression":{"id":6696,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6688,"src":"8683:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":6697,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6644,"src":"8683:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"id":6700,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6690,"src":"8703:5:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6699,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8695:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6698,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8695:7:41","typeDescriptions":{}}},"id":6701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8695:14:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6695,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6398,"src":"8673:9:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6259_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":6702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8673:37:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6694,"id":6703,"nodeType":"Return","src":"8666:44:41"}]},"documentation":{"id":6686,"nodeType":"StructuredDocumentation","src":"8498:70:41","text":" @dev Returns true if the value is in the set. O(1)."},"id":6705,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":6691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6688,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6705,"src":"8591:19:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":6687,"name":"UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6645,"src":"8591:7:41","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":6690,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6705,"src":"8612:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6689,"name":"uint256","nodeType":"ElementaryTypeName","src":"8612:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8590:36:41"},"returnParameters":{"id":6694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6693,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6705,"src":"8650:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6692,"name":"bool","nodeType":"ElementaryTypeName","src":"8650:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8649:6:41"},"scope":6740,"src":"8573:144:41","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6718,"nodeType":"Block","src":"8867:43:41","statements":[{"expression":{"arguments":[{"expression":{"id":6714,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6708,"src":"8892:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":6715,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6644,"src":"8892:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":6713,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6411,"src":"8884:7:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6259_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (uint256)"}},"id":6716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8884:19:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6712,"id":6717,"nodeType":"Return","src":"8877:26:41"}]},"documentation":{"id":6706,"nodeType":"StructuredDocumentation","src":"8723:70:41","text":" @dev Returns the number of values on the set. O(1)."},"id":6719,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":6709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6708,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6719,"src":"8814:19:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":6707,"name":"UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6645,"src":"8814:7:41","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"}],"src":"8813:21:41"},"returnParameters":{"id":6712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6711,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6719,"src":"8858:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6710,"name":"uint256","nodeType":"ElementaryTypeName","src":"8858:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8857:9:41"},"scope":6740,"src":"8798:112:41","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6738,"nodeType":"Block","src":"9322:55:41","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":6732,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6722,"src":"9351:3:41","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":6733,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6644,"src":"9351:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":6734,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6724,"src":"9363:5:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6259_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6731,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6436,"src":"9347:3:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6259_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"}},"id":6735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9347:22:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6730,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9339:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6729,"name":"uint256","nodeType":"ElementaryTypeName","src":"9339:7:41","typeDescriptions":{}}},"id":6736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9339:31:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6728,"id":6737,"nodeType":"Return","src":"9332:38:41"}]},"documentation":{"id":6720,"nodeType":"StructuredDocumentation","src":"8915:322:41","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":6739,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":6725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6722,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":6739,"src":"9254:19:41","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":6721,"name":"UintSet","nodeType":"UserDefinedTypeName","referencedDeclaration":6645,"src":"9254:7:41","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6645_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":6724,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":6739,"src":"9275:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6723,"name":"uint256","nodeType":"ElementaryTypeName","src":"9275:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9253:36:41"},"returnParameters":{"id":6728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6727,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6739,"src":"9313:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6726,"name":"uint256","nodeType":"ElementaryTypeName","src":"9313:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9312:9:41"},"scope":6740,"src":"9242:135:41","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":6741,"src":"745:8634:41"}],"src":"33:9347:41"},"id":41},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Strings":[6827]},"id":6828,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6742,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:42"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":6743,"nodeType":"StructuredDocumentation","src":"58:34:42","text":" @dev String operations."},"fullyImplemented":true,"id":6827,"linearizedBaseContracts":[6827],"name":"Strings","nodeType":"ContractDefinition","nodes":[{"body":{"id":6825,"nodeType":"Block","src":"273:654:42","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6751,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6746,"src":"475:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"484:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"475:10:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6757,"nodeType":"IfStatement","src":"471:51:42","trueBody":{"id":6756,"nodeType":"Block","src":"487:35:42","statements":[{"expression":{"hexValue":"30","id":6754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"508:3:42","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"functionReturnParameters":6750,"id":6755,"nodeType":"Return","src":"501:10:42"}]}},{"assignments":[6759],"declarations":[{"constant":false,"id":6759,"mutability":"mutable","name":"temp","nodeType":"VariableDeclaration","scope":6825,"src":"531:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6758,"name":"uint256","nodeType":"ElementaryTypeName","src":"531:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6761,"initialValue":{"id":6760,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6746,"src":"546:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"531:20:42"},{"assignments":[6763],"declarations":[{"constant":false,"id":6763,"mutability":"mutable","name":"digits","nodeType":"VariableDeclaration","scope":6825,"src":"561:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6762,"name":"uint256","nodeType":"ElementaryTypeName","src":"561:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6764,"nodeType":"VariableDeclarationStatement","src":"561:14:42"},{"body":{"id":6775,"nodeType":"Block","src":"603:57:42","statements":[{"expression":{"id":6769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"617:8:42","subExpression":{"id":6768,"name":"digits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6763,"src":"617:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6770,"nodeType":"ExpressionStatement","src":"617:8:42"},{"expression":{"id":6773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6771,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6759,"src":"639:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":6772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"647:2:42","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"639:10:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6774,"nodeType":"ExpressionStatement","src":"639:10:42"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6765,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6759,"src":"592:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"600:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"592:9:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6776,"nodeType":"WhileStatement","src":"585:75:42"},{"assignments":[6778],"declarations":[{"constant":false,"id":6778,"mutability":"mutable","name":"buffer","nodeType":"VariableDeclaration","scope":6825,"src":"669:19:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6777,"name":"bytes","nodeType":"ElementaryTypeName","src":"669:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":6783,"initialValue":{"arguments":[{"id":6781,"name":"digits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6763,"src":"701:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6780,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"691:9:42","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":6779,"name":"bytes","nodeType":"ElementaryTypeName","src":"695:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":6782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"691:17:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"669:39:42"},{"assignments":[6785],"declarations":[{"constant":false,"id":6785,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":6825,"src":"718:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6784,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6789,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6786,"name":"digits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6763,"src":"734:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"743:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"734:10:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"718:26:42"},{"expression":{"id":6792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6790,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6759,"src":"754:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6791,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6746,"src":"761:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"754:12:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6793,"nodeType":"ExpressionStatement","src":"754:12:42"},{"body":{"id":6818,"nodeType":"Block","src":"794:96:42","statements":[{"expression":{"id":6812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6797,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6778,"src":"808:6:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6800,"indexExpression":{"id":6799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"815:7:42","subExpression":{"id":6798,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6785,"src":"815:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"808:15:42","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3438","id":6805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"839:2:42","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6806,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6759,"src":"844:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"3130","id":6807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"851:2:42","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"844:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"839:14:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"833:5:42","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6803,"name":"uint8","nodeType":"ElementaryTypeName","src":"833:5:42","typeDescriptions":{}}},"id":6810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"833:21:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":6802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"826:6:42","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":6801,"name":"bytes1","nodeType":"ElementaryTypeName","src":"826:6:42","typeDescriptions":{}}},"id":6811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"826:29:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"808:47:42","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":6813,"nodeType":"ExpressionStatement","src":"808:47:42"},{"expression":{"id":6816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6814,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6759,"src":"869:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":6815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"877:2:42","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"869:10:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6817,"nodeType":"ExpressionStatement","src":"869:10:42"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6794,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6759,"src":"783:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"791:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"783:9:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6819,"nodeType":"WhileStatement","src":"776:114:42"},{"expression":{"arguments":[{"id":6822,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6778,"src":"913:6:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6821,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"906:6:42","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":6820,"name":"string","nodeType":"ElementaryTypeName","src":"906:6:42","typeDescriptions":{}}},"id":6823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"906:14:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":6750,"id":6824,"nodeType":"Return","src":"899:21:42"}]},"documentation":{"id":6744,"nodeType":"StructuredDocumentation","src":"115:82:42","text":" @dev Converts a `uint256` to its ASCII `string` representation."},"id":6826,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nodeType":"FunctionDefinition","parameters":{"id":6747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6746,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6826,"src":"220:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6745,"name":"uint256","nodeType":"ElementaryTypeName","src":"220:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"219:15:42"},"returnParameters":{"id":6750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6749,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6826,"src":"258:13:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6748,"name":"string","nodeType":"ElementaryTypeName","src":"258:6:42","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"257:15:42"},"scope":6827,"src":"202:725:42","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6828,"src":"93:836:42"}],"src":"33:897:42"},"id":42},"base64-sol/base64.sol":{"ast":{"absolutePath":"base64-sol/base64.sol","exportedSymbols":{"Base64":[6877]},"id":6878,"license":"MIT","nodeType":"SourceUnit","nodes":[{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":6829,"nodeType":"StructuredDocumentation","src":"33:133:43","text":"@title Base64\n @author Brecht Devos - <brecht@loopring.org>\n @notice Provides a function for encoding some bytes in base64"},"fullyImplemented":true,"id":6877,"linearizedBaseContracts":[6877],"name":"Base64","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":6832,"mutability":"constant","name":"TABLE","nodeType":"VariableDeclaration","scope":6877,"src":"187:99:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6830,"name":"string","nodeType":"ElementaryTypeName","src":"187:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f","id":6831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"220:66:43","typeDescriptions":{"typeIdentifier":"t_stringliteral_84d8a590de33e00cbdc16e1f28c3506f5ec15c599fab9a6a4bcd575cc2f110ce","typeString":"literal_string \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\""},"value":"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"},"visibility":"internal"},{"body":{"id":6875,"nodeType":"Block","src":"366:1912:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6839,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6834,"src":"380:4:43","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"380:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"395:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"380:16:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6845,"nodeType":"IfStatement","src":"376:31:43","trueBody":{"expression":{"hexValue":"","id":6843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"405:2:43","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":6838,"id":6844,"nodeType":"Return","src":"398:9:43"}},{"assignments":[6847],"declarations":[{"constant":false,"id":6847,"mutability":"mutable","name":"table","nodeType":"VariableDeclaration","scope":6875,"src":"464:19:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6846,"name":"string","nodeType":"ElementaryTypeName","src":"464:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":6849,"initialValue":{"id":6848,"name":"TABLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6832,"src":"486:5:43","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"464:27:43"},{"assignments":[6851],"declarations":[{"constant":false,"id":6851,"mutability":"mutable","name":"encodedLen","nodeType":"VariableDeclaration","scope":6875,"src":"540:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6850,"name":"uint256","nodeType":"ElementaryTypeName","src":"540:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6862,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"34","id":6852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"561:1:43","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6853,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6834,"src":"567:4:43","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"567:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":6855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"581:1:43","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"567:15:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6857,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"566:17:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":6858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"586:1:43","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"566:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6860,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"565:23:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"561:27:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"540:48:43"},{"assignments":[6864],"declarations":[{"constant":false,"id":6864,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":6875,"src":"668:20:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6863,"name":"string","nodeType":"ElementaryTypeName","src":"668:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":6871,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6867,"name":"encodedLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6851,"src":"702:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3332","id":6868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"715:2:43","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"702:15:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6866,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"691:10:43","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":6865,"name":"string","nodeType":"ElementaryTypeName","src":"695:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":6870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"691:27:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"668:50:43"},{"AST":{"nodeType":"YulBlock","src":"738:1502:43","statements":[{"expression":{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"803:6:43"},{"name":"encodedLen","nodeType":"YulIdentifier","src":"811:10:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"796:6:43"},"nodeType":"YulFunctionCall","src":"796:26:43"},"nodeType":"YulExpressionStatement","src":"796:26:43"},{"nodeType":"YulVariableDeclaration","src":"888:29:43","value":{"arguments":[{"name":"table","nodeType":"YulIdentifier","src":"908:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"915:1:43","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"904:3:43"},"nodeType":"YulFunctionCall","src":"904:13:43"},"variables":[{"name":"tablePtr","nodeType":"YulTypedName","src":"892:8:43","type":""}]},{"nodeType":"YulVariableDeclaration","src":"968:19:43","value":{"name":"data","nodeType":"YulIdentifier","src":"983:4:43"},"variables":[{"name":"dataPtr","nodeType":"YulTypedName","src":"972:7:43","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1000:39:43","value":{"arguments":[{"name":"dataPtr","nodeType":"YulIdentifier","src":"1018:7:43"},{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1033:4:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1027:5:43"},"nodeType":"YulFunctionCall","src":"1027:11:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1014:3:43"},"nodeType":"YulFunctionCall","src":"1014:25:43"},"variables":[{"name":"endPtr","nodeType":"YulTypedName","src":"1004:6:43","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1109:32:43","value":{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"1130:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"1138:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1126:3:43"},"nodeType":"YulFunctionCall","src":"1126:15:43"},"variables":[{"name":"resultPtr","nodeType":"YulTypedName","src":"1113:9:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"1262:752:43","statements":[{"nodeType":"YulAssignment","src":"1279:26:43","value":{"arguments":[{"name":"dataPtr","nodeType":"YulIdentifier","src":"1294:7:43"},{"kind":"number","nodeType":"YulLiteral","src":"1303:1:43","type":"","value":"3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1290:3:43"},"nodeType":"YulFunctionCall","src":"1290:15:43"},"variableNames":[{"name":"dataPtr","nodeType":"YulIdentifier","src":"1279:7:43"}]},{"nodeType":"YulVariableDeclaration","src":"1368:27:43","value":{"arguments":[{"name":"dataPtr","nodeType":"YulIdentifier","src":"1387:7:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1381:5:43"},"nodeType":"YulFunctionCall","src":"1381:14:43"},"variables":[{"name":"input","nodeType":"YulTypedName","src":"1372:5:43","type":""}]},{"expression":{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"1471:9:43"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1486:3:43","type":"","value":"248"},{"arguments":[{"arguments":[{"name":"tablePtr","nodeType":"YulIdentifier","src":"1501:8:43"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1519:2:43","type":"","value":"18"},{"name":"input","nodeType":"YulIdentifier","src":"1523:5:43"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1515:3:43"},"nodeType":"YulFunctionCall","src":"1515:14:43"},{"kind":"number","nodeType":"YulLiteral","src":"1531:4:43","type":"","value":"0x3F"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1511:3:43"},"nodeType":"YulFunctionCall","src":"1511:25:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1497:3:43"},"nodeType":"YulFunctionCall","src":"1497:40:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1491:5:43"},"nodeType":"YulFunctionCall","src":"1491:47:43"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1482:3:43"},"nodeType":"YulFunctionCall","src":"1482:57:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1464:6:43"},"nodeType":"YulFunctionCall","src":"1464:76:43"},"nodeType":"YulExpressionStatement","src":"1464:76:43"},{"nodeType":"YulAssignment","src":"1556:30:43","value":{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"1573:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"1584:1:43","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1569:3:43"},"nodeType":"YulFunctionCall","src":"1569:17:43"},"variableNames":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"1556:9:43"}]},{"expression":{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"1609:9:43"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1624:3:43","type":"","value":"248"},{"arguments":[{"arguments":[{"name":"tablePtr","nodeType":"YulIdentifier","src":"1639:8:43"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1657:2:43","type":"","value":"12"},{"name":"input","nodeType":"YulIdentifier","src":"1661:5:43"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1653:3:43"},"nodeType":"YulFunctionCall","src":"1653:14:43"},{"kind":"number","nodeType":"YulLiteral","src":"1669:4:43","type":"","value":"0x3F"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1649:3:43"},"nodeType":"YulFunctionCall","src":"1649:25:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1635:3:43"},"nodeType":"YulFunctionCall","src":"1635:40:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1629:5:43"},"nodeType":"YulFunctionCall","src":"1629:47:43"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1620:3:43"},"nodeType":"YulFunctionCall","src":"1620:57:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1602:6:43"},"nodeType":"YulFunctionCall","src":"1602:76:43"},"nodeType":"YulExpressionStatement","src":"1602:76:43"},{"nodeType":"YulAssignment","src":"1694:30:43","value":{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"1711:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"1722:1:43","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1707:3:43"},"nodeType":"YulFunctionCall","src":"1707:17:43"},"variableNames":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"1694:9:43"}]},{"expression":{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"1747:9:43"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1762:3:43","type":"","value":"248"},{"arguments":[{"arguments":[{"name":"tablePtr","nodeType":"YulIdentifier","src":"1777:8:43"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1796:1:43","type":"","value":"6"},{"name":"input","nodeType":"YulIdentifier","src":"1799:5:43"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1791:3:43"},"nodeType":"YulFunctionCall","src":"1791:14:43"},{"kind":"number","nodeType":"YulLiteral","src":"1807:4:43","type":"","value":"0x3F"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1787:3:43"},"nodeType":"YulFunctionCall","src":"1787:25:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1773:3:43"},"nodeType":"YulFunctionCall","src":"1773:40:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1767:5:43"},"nodeType":"YulFunctionCall","src":"1767:47:43"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1758:3:43"},"nodeType":"YulFunctionCall","src":"1758:57:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1740:6:43"},"nodeType":"YulFunctionCall","src":"1740:76:43"},"nodeType":"YulExpressionStatement","src":"1740:76:43"},{"nodeType":"YulAssignment","src":"1832:30:43","value":{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"1849:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"1860:1:43","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1845:3:43"},"nodeType":"YulFunctionCall","src":"1845:17:43"},"variableNames":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"1832:9:43"}]},{"expression":{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"1885:9:43"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1900:3:43","type":"","value":"248"},{"arguments":[{"arguments":[{"name":"tablePtr","nodeType":"YulIdentifier","src":"1915:8:43"},{"arguments":[{"name":"input","nodeType":"YulIdentifier","src":"1937:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"1945:4:43","type":"","value":"0x3F"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1925:3:43"},"nodeType":"YulFunctionCall","src":"1925:25:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1911:3:43"},"nodeType":"YulFunctionCall","src":"1911:40:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1905:5:43"},"nodeType":"YulFunctionCall","src":"1905:47:43"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1896:3:43"},"nodeType":"YulFunctionCall","src":"1896:57:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1878:6:43"},"nodeType":"YulFunctionCall","src":"1878:76:43"},"nodeType":"YulExpressionStatement","src":"1878:76:43"},{"nodeType":"YulAssignment","src":"1970:30:43","value":{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"1987:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"1998:1:43","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1983:3:43"},"nodeType":"YulFunctionCall","src":"1983:17:43"},"variableNames":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"1970:9:43"}]}]},"condition":{"arguments":[{"name":"dataPtr","nodeType":"YulIdentifier","src":"1230:7:43"},{"name":"endPtr","nodeType":"YulIdentifier","src":"1239:6:43"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1227:2:43"},"nodeType":"YulFunctionCall","src":"1227:19:43"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1247:2:43","statements":[]},"pre":{"nodeType":"YulBlock","src":"1224:2:43","statements":[]},"src":"1220:794:43"},{"cases":[{"body":{"nodeType":"YulBlock","src":"2118:47:43","statements":[{"expression":{"arguments":[{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"2131:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"2142:1:43","type":"","value":"2"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2127:3:43"},"nodeType":"YulFunctionCall","src":"2127:17:43"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2150:3:43","type":"","value":"240"},{"kind":"number","nodeType":"YulLiteral","src":"2155:6:43","type":"","value":"0x3d3d"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2146:3:43"},"nodeType":"YulFunctionCall","src":"2146:16:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2120:6:43"},"nodeType":"YulFunctionCall","src":"2120:43:43"},"nodeType":"YulExpressionStatement","src":"2120:43:43"}]},"nodeType":"YulCase","src":"2111:54:43","value":{"kind":"number","nodeType":"YulLiteral","src":"2116:1:43","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"2185:45:43","statements":[{"expression":{"arguments":[{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"2198:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"2209:1:43","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2194:3:43"},"nodeType":"YulFunctionCall","src":"2194:17:43"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2217:3:43","type":"","value":"248"},{"kind":"number","nodeType":"YulLiteral","src":"2222:4:43","type":"","value":"0x3d"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2213:3:43"},"nodeType":"YulFunctionCall","src":"2213:14:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2187:6:43"},"nodeType":"YulFunctionCall","src":"2187:41:43"},"nodeType":"YulExpressionStatement","src":"2187:41:43"}]},"nodeType":"YulCase","src":"2178:52:43","value":{"kind":"number","nodeType":"YulLiteral","src":"2183:1:43","type":"","value":"2"}}],"expression":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2089:4:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2083:5:43"},"nodeType":"YulFunctionCall","src":"2083:11:43"},{"kind":"number","nodeType":"YulLiteral","src":"2096:1:43","type":"","value":"3"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"2079:3:43"},"nodeType":"YulFunctionCall","src":"2079:19:43"},"nodeType":"YulSwitch","src":"2072:158:43"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":6834,"isOffset":false,"isSlot":false,"src":"1033:4:43","valueSize":1},{"declaration":6834,"isOffset":false,"isSlot":false,"src":"2089:4:43","valueSize":1},{"declaration":6834,"isOffset":false,"isSlot":false,"src":"983:4:43","valueSize":1},{"declaration":6851,"isOffset":false,"isSlot":false,"src":"811:10:43","valueSize":1},{"declaration":6864,"isOffset":false,"isSlot":false,"src":"1130:6:43","valueSize":1},{"declaration":6864,"isOffset":false,"isSlot":false,"src":"803:6:43","valueSize":1},{"declaration":6847,"isOffset":false,"isSlot":false,"src":"908:5:43","valueSize":1}],"id":6872,"nodeType":"InlineAssembly","src":"729:1511:43"},{"expression":{"id":6873,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6864,"src":"2265:6:43","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":6838,"id":6874,"nodeType":"Return","src":"2258:13:43"}]},"id":6876,"implemented":true,"kind":"function","modifiers":[],"name":"encode","nodeType":"FunctionDefinition","parameters":{"id":6835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6834,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":6876,"src":"309:17:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6833,"name":"bytes","nodeType":"ElementaryTypeName","src":"309:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"308:19:43"},"returnParameters":{"id":6838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6837,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6876,"src":"351:13:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6836,"name":"string","nodeType":"ElementaryTypeName","src":"351:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"350:15:43"},"scope":6877,"src":"293:1985:43","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6878,"src":"166:2114:43"}],"src":"166:2115:43"},"id":43},"contracts/CLMigrator.sol":{"ast":{"absolutePath":"contracts/CLMigrator.sol","exportedSymbols":{"CLMigrator":[7179],"IAstraCLFactory":[82],"IAstraCLPool":[110],"IAstraCLPoolActions":[248],"IAstraCLPoolDerivedState":[279],"IAstraCLPoolEvents":[398],"IAstraCLPoolImmutables":[438],"IAstraCLPoolOwnerActions":[464],"IAstraCLPoolState":[572],"IAstraPair":[10406],"ICLMigrator":[9451],"IERC165":[3068],"IERC20":[4183],"IERC20Permit":[2999],"IERC20PermitAllowed":[10444],"IERC721":[5243],"IERC721Enumerable":[5274],"IERC721Metadata":[5301],"IERC721Permit":[9511],"IMulticall":[9526],"INonfungiblePositionManager":[9720],"IPeripheryImmutableState":[9751],"IPeripheryPayments":[9777],"IPoolInitializer":[9829],"ISAMB":[10461],"ISelfPermit":[10045],"LowGasSafeMath":[1223],"Multicall":[8369],"PeripheryImmutableState":[8400],"PoolInitializer":[8903],"SelfPermit":[9070],"TransferHelper":[15676]},"id":7180,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":6879,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:44"},{"id":6880,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"69:19:44"},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol","file":"@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol","id":6881,"nodeType":"ImportDirective","scope":7180,"sourceUnit":1224,"src":"143:70:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/classic/IAstraPair.sol","file":"./interfaces/classic/IAstraPair.sol","id":6882,"nodeType":"ImportDirective","scope":7180,"sourceUnit":10407,"src":"262:45:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/INonfungiblePositionManager.sol","file":"./interfaces/INonfungiblePositionManager.sol","id":6883,"nodeType":"ImportDirective","scope":7180,"sourceUnit":9721,"src":"309:54:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/TransferHelper.sol","file":"./libraries/TransferHelper.sol","id":6884,"nodeType":"ImportDirective","scope":7180,"sourceUnit":15677,"src":"365:40:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/ICLMigrator.sol","file":"./interfaces/ICLMigrator.sol","id":6885,"nodeType":"ImportDirective","scope":7180,"sourceUnit":9452,"src":"407:38:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/PeripheryImmutableState.sol","file":"./base/PeripheryImmutableState.sol","id":6886,"nodeType":"ImportDirective","scope":7180,"sourceUnit":8401,"src":"446:44:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/Multicall.sol","file":"./base/Multicall.sol","id":6887,"nodeType":"ImportDirective","scope":7180,"sourceUnit":8370,"src":"491:30:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/SelfPermit.sol","file":"./base/SelfPermit.sol","id":6888,"nodeType":"ImportDirective","scope":7180,"sourceUnit":9071,"src":"522:31:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/external/ISAMB.sol","file":"./interfaces/external/ISAMB.sol","id":6889,"nodeType":"ImportDirective","scope":7180,"sourceUnit":10462,"src":"554:41:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/PoolInitializer.sol","file":"./base/PoolInitializer.sol","id":6890,"nodeType":"ImportDirective","scope":7180,"sourceUnit":8904,"src":"596:36:44","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6892,"name":"ICLMigrator","nodeType":"UserDefinedTypeName","referencedDeclaration":9451,"src":"689:11:44","typeDescriptions":{"typeIdentifier":"t_contract$_ICLMigrator_$9451","typeString":"contract ICLMigrator"}},"id":6893,"nodeType":"InheritanceSpecifier","src":"689:11:44"},{"baseName":{"id":6894,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":8400,"src":"702:23:44","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$8400","typeString":"contract PeripheryImmutableState"}},"id":6895,"nodeType":"InheritanceSpecifier","src":"702:23:44"},{"baseName":{"id":6896,"name":"PoolInitializer","nodeType":"UserDefinedTypeName","referencedDeclaration":8903,"src":"727:15:44","typeDescriptions":{"typeIdentifier":"t_contract$_PoolInitializer_$8903","typeString":"contract PoolInitializer"}},"id":6897,"nodeType":"InheritanceSpecifier","src":"727:15:44"},{"baseName":{"id":6898,"name":"Multicall","nodeType":"UserDefinedTypeName","referencedDeclaration":8369,"src":"744:9:44","typeDescriptions":{"typeIdentifier":"t_contract$_Multicall_$8369","typeString":"contract Multicall"}},"id":6899,"nodeType":"InheritanceSpecifier","src":"744:9:44"},{"baseName":{"id":6900,"name":"SelfPermit","nodeType":"UserDefinedTypeName","referencedDeclaration":9070,"src":"755:10:44","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$9070","typeString":"contract SelfPermit"}},"id":6901,"nodeType":"InheritanceSpecifier","src":"755:10:44"}],"contractDependencies":[8369,8400,8903,9070,9451,9526,9751,9829,10045],"contractKind":"contract","documentation":{"id":6891,"nodeType":"StructuredDocumentation","src":"634:32:44","text":"@title AstraDEX CL Migrator"},"fullyImplemented":true,"id":7179,"linearizedBaseContracts":[7179,9070,8369,8903,8400,9751,9451,9829,10045,9526],"name":"CLMigrator","nodeType":"ContractDefinition","nodes":[{"id":6904,"libraryName":{"id":6902,"name":"LowGasSafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":1223,"src":"778:14:44","typeDescriptions":{"typeIdentifier":"t_contract$_LowGasSafeMath_$1223","typeString":"library LowGasSafeMath"}},"nodeType":"UsingForDirective","src":"772:33:44","typeName":{"id":6903,"name":"uint256","nodeType":"ElementaryTypeName","src":"797:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"functionSelector":"b44a2722","id":6906,"mutability":"immutable","name":"nonfungiblePositionManager","nodeType":"VariableDeclaration","scope":7179,"src":"811:51:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6905,"name":"address","nodeType":"ElementaryTypeName","src":"811:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"body":{"id":6923,"nodeType":"Block","src":"1022:73:44","statements":[{"expression":{"id":6921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6919,"name":"nonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6906,"src":"1032:26:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6920,"name":"_nonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6912,"src":"1061:27:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1032:56:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6922,"nodeType":"ExpressionStatement","src":"1032:56:44"}]},"id":6924,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":6915,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6908,"src":"1005:8:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6916,"name":"_SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"1015:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":6917,"modifierName":{"id":6914,"name":"PeripheryImmutableState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8400,"src":"981:23:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PeripheryImmutableState_$8400_$","typeString":"type(contract PeripheryImmutableState)"}},"nodeType":"ModifierInvocation","src":"981:40:44"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":6913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6908,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":6924,"src":"890:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6907,"name":"address","nodeType":"ElementaryTypeName","src":"890:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6910,"mutability":"mutable","name":"_SAMB","nodeType":"VariableDeclaration","scope":6924,"src":"916:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6909,"name":"address","nodeType":"ElementaryTypeName","src":"916:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6912,"mutability":"mutable","name":"_nonfungiblePositionManager","nodeType":"VariableDeclaration","scope":6924,"src":"939:35:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6911,"name":"address","nodeType":"ElementaryTypeName","src":"939:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"880:100:44"},"returnParameters":{"id":6918,"nodeType":"ParameterList","parameters":[],"src":"1022:0:44"},"scope":7179,"src":"869:226:44","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":6935,"nodeType":"Block","src":"1128:56:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6928,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1146:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1146:10:44","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6930,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8383,"src":"1160:4:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1146:18:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f742053414d42","id":6932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1166:10:44","typeDescriptions":{"typeIdentifier":"t_stringliteral_9742e45cbdcfb33441b71c5e16cad2d39cf9a5067bcabd680e872cd9d5b8a313","typeString":"literal_string \"Not SAMB\""},"value":"Not SAMB"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9742e45cbdcfb33441b71c5e16cad2d39cf9a5067bcabd680e872cd9d5b8a313","typeString":"literal_string \"Not SAMB\""}],"id":6927,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1138:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1138:39:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6934,"nodeType":"ExpressionStatement","src":"1138:39:44"}]},"id":6936,"implemented":true,"kind":"receive","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":6925,"nodeType":"ParameterList","parameters":[],"src":"1108:2:44"},"returnParameters":{"id":6926,"nodeType":"ParameterList","parameters":[],"src":"1128:0:44"},"scope":7179,"src":"1101:83:44","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[9450],"body":{"id":7177,"nodeType":"Block","src":"1256:2840:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6943,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"1274:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":6944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"percentageToMigrate","nodeType":"MemberAccess","referencedDeclaration":9423,"src":"1274:26:44","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1303:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1274:30:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50657263656e7461676520746f6f20736d616c6c","id":6947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1306:22:44","typeDescriptions":{"typeIdentifier":"t_stringliteral_441c69a76c2d33fd9de54332033d9c05337cb9707baa639e0118d8dc01b47be7","typeString":"literal_string \"Percentage too small\""},"value":"Percentage too small"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_441c69a76c2d33fd9de54332033d9c05337cb9707baa639e0118d8dc01b47be7","typeString":"literal_string \"Percentage too small\""}],"id":6942,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1266:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1266:63:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6949,"nodeType":"ExpressionStatement","src":"1266:63:44"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6951,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"1347:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":6952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"percentageToMigrate","nodeType":"MemberAccess","referencedDeclaration":9423,"src":"1347:26:44","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"313030","id":6953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1377:3:44","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"1347:33:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50657263656e7461676520746f6f206c61726765","id":6955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1382:22:44","typeDescriptions":{"typeIdentifier":"t_stringliteral_9a769b63cd4026b5e7e44da6e571c3cde616fe3a40029eab2d6b59e7b569424b","typeString":"literal_string \"Percentage too large\""},"value":"Percentage too large"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9a769b63cd4026b5e7e44da6e571c3cde616fe3a40029eab2d6b59e7b569424b","typeString":"literal_string \"Percentage too large\""}],"id":6950,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1339:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1339:66:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6957,"nodeType":"ExpressionStatement","src":"1339:66:44"},{"expression":{"arguments":[{"expression":{"id":6963,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1503:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1503:10:44","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":6965,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"1515:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":6966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pair","nodeType":"MemberAccess","referencedDeclaration":9419,"src":"1515:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6967,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"1528:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":6968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"liquidityToMigrate","nodeType":"MemberAccess","referencedDeclaration":9421,"src":"1528:25:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":6959,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"1477:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":6960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pair","nodeType":"MemberAccess","referencedDeclaration":9419,"src":"1477:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6958,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10406,"src":"1466:10:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$10406_$","typeString":"type(contract IAstraPair)"}},"id":6961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1466:23:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$10406","typeString":"contract IAstraPair"}},"id":6962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":10247,"src":"1466:36:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":6969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1466:88:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6970,"nodeType":"ExpressionStatement","src":"1466:88:44"},{"assignments":[6972,6974],"declarations":[{"constant":false,"id":6972,"mutability":"mutable","name":"amount0Classic","nodeType":"VariableDeclaration","scope":7177,"src":"1565:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6971,"name":"uint256","nodeType":"ElementaryTypeName","src":"1565:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6974,"mutability":"mutable","name":"amount1Classic","nodeType":"VariableDeclaration","scope":7177,"src":"1589:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6973,"name":"uint256","nodeType":"ElementaryTypeName","src":"1589:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6985,"initialValue":{"arguments":[{"arguments":[{"id":6982,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1652:4:44","typeDescriptions":{"typeIdentifier":"t_contract$_CLMigrator_$7179","typeString":"contract CLMigrator"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CLMigrator_$7179","typeString":"contract CLMigrator"}],"id":6981,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1644:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6980,"name":"address","nodeType":"ElementaryTypeName","src":"1644:7:44","typeDescriptions":{}}},"id":6983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1644:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"arguments":[{"expression":{"id":6976,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"1626:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":6977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pair","nodeType":"MemberAccess","referencedDeclaration":9419,"src":"1626:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6975,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10406,"src":"1615:10:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$10406_$","typeString":"type(contract IAstraPair)"}},"id":6978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1615:23:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$10406","typeString":"contract IAstraPair"}},"id":6979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"burn","nodeType":"MemberAccess","referencedDeclaration":10379,"src":"1615:28:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address) external returns (uint256,uint256)"}},"id":6984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1615:43:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1564:94:44"},{"assignments":[6987],"declarations":[{"constant":false,"id":6987,"mutability":"mutable","name":"amount0ClassicToMigrate","nodeType":"VariableDeclaration","scope":7177,"src":"1719:31:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6986,"name":"uint256","nodeType":"ElementaryTypeName","src":"1719:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6995,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":6990,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"1772:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":6991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"percentageToMigrate","nodeType":"MemberAccess","referencedDeclaration":9423,"src":"1772:26:44","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":6988,"name":"amount0Classic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6972,"src":"1753:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":1168,"src":"1753:18:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1753:46:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":6993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1802:3:44","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"1753:52:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1719:86:44"},{"assignments":[6997],"declarations":[{"constant":false,"id":6997,"mutability":"mutable","name":"amount1ClassicToMigrate","nodeType":"VariableDeclaration","scope":7177,"src":"1815:31:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6996,"name":"uint256","nodeType":"ElementaryTypeName","src":"1815:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7005,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":7000,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"1868:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":7001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"percentageToMigrate","nodeType":"MemberAccess","referencedDeclaration":9423,"src":"1868:26:44","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":6998,"name":"amount1Classic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6974,"src":"1849:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":1168,"src":"1849:18:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1849:46:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":7003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1898:3:44","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"1849:52:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1815:86:44"},{"expression":{"arguments":[{"expression":{"id":7009,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"2011:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":7010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":9425,"src":"2011:13:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7011,"name":"nonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6906,"src":"2026:26:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7012,"name":"amount0ClassicToMigrate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6987,"src":"2054:23:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7006,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15676,"src":"1984:14:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$15676_$","typeString":"type(library TransferHelper)"}},"id":7008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":15649,"src":"1984:26:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1984:94:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7014,"nodeType":"ExpressionStatement","src":"1984:94:44"},{"expression":{"arguments":[{"expression":{"id":7018,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"2115:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":7019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":9427,"src":"2115:13:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7020,"name":"nonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6906,"src":"2130:26:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7021,"name":"amount1ClassicToMigrate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6997,"src":"2158:23:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7015,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15676,"src":"2088:14:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$15676_$","typeString":"type(library TransferHelper)"}},"id":7017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":15649,"src":"2088:26:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2088:94:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7023,"nodeType":"ExpressionStatement","src":"2088:94:44"},{"assignments":[null,null,7025,7027],"declarations":[null,null,{"constant":false,"id":7025,"mutability":"mutable","name":"amount0CL","nodeType":"VariableDeclaration","scope":7177,"src":"2226:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7024,"name":"uint256","nodeType":"ElementaryTypeName","src":"2226:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7027,"mutability":"mutable","name":"amount1CL","nodeType":"VariableDeclaration","scope":7177,"src":"2245:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7026,"name":"uint256","nodeType":"ElementaryTypeName","src":"2245:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7056,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":7034,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"2405:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":7035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":9425,"src":"2405:13:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7036,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"2444:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":7037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":9427,"src":"2444:13:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7038,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"2480:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":7039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":9429,"src":"2480:10:44","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"expression":{"id":7040,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"2519:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":7041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":9431,"src":"2519:16:44","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":7042,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"2564:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":7043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":9433,"src":"2564:16:44","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":7044,"name":"amount0ClassicToMigrate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6987,"src":"2614:23:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7045,"name":"amount1ClassicToMigrate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6997,"src":"2671:23:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7046,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"2724:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":7047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount0Min","nodeType":"MemberAccess","referencedDeclaration":9435,"src":"2724:17:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7048,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"2771:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":7049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount1Min","nodeType":"MemberAccess","referencedDeclaration":9437,"src":"2771:17:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7050,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"2817:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":7051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":9439,"src":"2817:16:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7052,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"2861:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":7053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":9441,"src":"2861:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7032,"name":"INonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9720,"src":"2340:27:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_INonfungiblePositionManager_$9720_$","typeString":"type(contract INonfungiblePositionManager)"}},"id":7033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MintParams","nodeType":"MemberAccess","referencedDeclaration":9634,"src":"2340:38:44","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MintParams_$9634_storage_ptr_$","typeString":"type(struct INonfungiblePositionManager.MintParams storage pointer)"}},"id":7054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee","tickLower","tickUpper","amount0Desired","amount1Desired","amount0Min","amount1Min","recipient","deadline"],"nodeType":"FunctionCall","src":"2340:551:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$9634_memory_ptr","typeString":"struct INonfungiblePositionManager.MintParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_MintParams_$9634_memory_ptr","typeString":"struct INonfungiblePositionManager.MintParams memory"}],"expression":{"arguments":[{"id":7029,"name":"nonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6906,"src":"2294:26:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7028,"name":"INonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9720,"src":"2266:27:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_INonfungiblePositionManager_$9720_$","typeString":"type(contract INonfungiblePositionManager)"}},"id":7030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2266:55:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},"id":7031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":9648,"src":"2266:60:44","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_MintParams_$9634_memory_ptr_$returns$_t_uint256_$_t_uint128_$_t_uint256_$_t_uint256_$","typeString":"function (struct INonfungiblePositionManager.MintParams memory) payable external returns (uint256,uint128,uint256,uint256)"}},"id":7055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2266:635:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint128_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint128,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"2221:680:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7057,"name":"amount0CL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7025,"src":"2973:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7058,"name":"amount0Classic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6972,"src":"2985:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2973:26:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7116,"nodeType":"IfStatement","src":"2969:556:44","trueBody":{"id":7115,"nodeType":"Block","src":"3001:524:44","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7060,"name":"amount0CL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7025,"src":"3019:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7061,"name":"amount0ClassicToMigrate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6987,"src":"3031:23:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3019:35:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7073,"nodeType":"IfStatement","src":"3015:146:44","trueBody":{"id":7072,"nodeType":"Block","src":"3056:105:44","statements":[{"expression":{"arguments":[{"expression":{"id":7066,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"3101:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":7067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":9425,"src":"3101:13:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7068,"name":"nonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6906,"src":"3116:26:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":7069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3144:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":7063,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15676,"src":"3074:14:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$15676_$","typeString":"type(library TransferHelper)"}},"id":7065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":15649,"src":"3074:26:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3074:72:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7071,"nodeType":"ExpressionStatement","src":"3074:72:44"}]}},{"assignments":[7075],"declarations":[{"constant":false,"id":7075,"mutability":"mutable","name":"refund0","nodeType":"VariableDeclaration","scope":7115,"src":"3175:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7074,"name":"uint256","nodeType":"ElementaryTypeName","src":"3175:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7079,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7076,"name":"amount0Classic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6972,"src":"3193:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7077,"name":"amount0CL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7025,"src":"3210:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3193:26:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3175:44:44"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7080,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"3237:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":7081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"refundAsAMB","nodeType":"MemberAccess","referencedDeclaration":9443,"src":"3237:18:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7082,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"3259:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":7083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":9425,"src":"3259:13:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7084,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8383,"src":"3276:4:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3259:21:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3237:43:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7113,"nodeType":"Block","src":"3419:96:44","statements":[{"expression":{"arguments":[{"expression":{"id":7106,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"3465:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":7107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":9425,"src":"3465:13:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7108,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3480:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3480:10:44","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7110,"name":"refund0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7075,"src":"3492:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7103,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15676,"src":"3437:14:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$15676_$","typeString":"type(library TransferHelper)"}},"id":7105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":15603,"src":"3437:27:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3437:63:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7112,"nodeType":"ExpressionStatement","src":"3437:63:44"}]},"id":7114,"nodeType":"IfStatement","src":"3233:282:44","trueBody":{"id":7102,"nodeType":"Block","src":"3282:131:44","statements":[{"expression":{"arguments":[{"id":7091,"name":"refund0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7075,"src":"3321:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":7088,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8383,"src":"3306:4:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7087,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10461,"src":"3300:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$10461_$","typeString":"type(contract ISAMB)"}},"id":7089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3300:11:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$10461","typeString":"contract ISAMB"}},"id":7090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":10460,"src":"3300:20:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":7092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3300:29:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7093,"nodeType":"ExpressionStatement","src":"3300:29:44"},{"expression":{"arguments":[{"expression":{"id":7097,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3378:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3378:10:44","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7099,"name":"refund0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7075,"src":"3390:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7094,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15676,"src":"3347:14:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$15676_$","typeString":"type(library TransferHelper)"}},"id":7096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAMB","nodeType":"MemberAccess","referencedDeclaration":15675,"src":"3347:30:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":7100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3347:51:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7101,"nodeType":"ExpressionStatement","src":"3347:51:44"}]}}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7117,"name":"amount1CL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7027,"src":"3538:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7118,"name":"amount1Classic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6974,"src":"3550:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3538:26:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7176,"nodeType":"IfStatement","src":"3534:556:44","trueBody":{"id":7175,"nodeType":"Block","src":"3566:524:44","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7120,"name":"amount1CL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7027,"src":"3584:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7121,"name":"amount1ClassicToMigrate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6997,"src":"3596:23:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3584:35:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7133,"nodeType":"IfStatement","src":"3580:146:44","trueBody":{"id":7132,"nodeType":"Block","src":"3621:105:44","statements":[{"expression":{"arguments":[{"expression":{"id":7126,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"3666:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":7127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":9427,"src":"3666:13:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7128,"name":"nonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6906,"src":"3681:26:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":7129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3709:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":7123,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15676,"src":"3639:14:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$15676_$","typeString":"type(library TransferHelper)"}},"id":7125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":15649,"src":"3639:26:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3639:72:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7131,"nodeType":"ExpressionStatement","src":"3639:72:44"}]}},{"assignments":[7135],"declarations":[{"constant":false,"id":7135,"mutability":"mutable","name":"refund1","nodeType":"VariableDeclaration","scope":7175,"src":"3740:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7134,"name":"uint256","nodeType":"ElementaryTypeName","src":"3740:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7139,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7136,"name":"amount1Classic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6974,"src":"3758:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7137,"name":"amount1CL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7027,"src":"3775:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3758:26:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3740:44:44"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7140,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"3802:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":7141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"refundAsAMB","nodeType":"MemberAccess","referencedDeclaration":9443,"src":"3802:18:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7142,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"3824:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":7143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":9427,"src":"3824:13:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7144,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8383,"src":"3841:4:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3824:21:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3802:43:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7173,"nodeType":"Block","src":"3984:96:44","statements":[{"expression":{"arguments":[{"expression":{"id":7166,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6938,"src":"4030:6:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams calldata"}},"id":7167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":9427,"src":"4030:13:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7168,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4045:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4045:10:44","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7170,"name":"refund1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7135,"src":"4057:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7163,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15676,"src":"4002:14:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$15676_$","typeString":"type(library TransferHelper)"}},"id":7165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":15603,"src":"4002:27:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4002:63:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7172,"nodeType":"ExpressionStatement","src":"4002:63:44"}]},"id":7174,"nodeType":"IfStatement","src":"3798:282:44","trueBody":{"id":7162,"nodeType":"Block","src":"3847:131:44","statements":[{"expression":{"arguments":[{"id":7151,"name":"refund1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7135,"src":"3886:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":7148,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8383,"src":"3871:4:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7147,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10461,"src":"3865:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$10461_$","typeString":"type(contract ISAMB)"}},"id":7149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3865:11:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$10461","typeString":"contract ISAMB"}},"id":7150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":10460,"src":"3865:20:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":7152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3865:29:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7153,"nodeType":"ExpressionStatement","src":"3865:29:44"},{"expression":{"arguments":[{"expression":{"id":7157,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3943:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3943:10:44","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7159,"name":"refund1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7135,"src":"3955:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7154,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15676,"src":"3912:14:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$15676_$","typeString":"type(library TransferHelper)"}},"id":7156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAMB","nodeType":"MemberAccess","referencedDeclaration":15675,"src":"3912:30:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":7160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3912:51:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7161,"nodeType":"ExpressionStatement","src":"3912:51:44"}]}}]}}]},"functionSelector":"d44f2bf2","id":7178,"implemented":true,"kind":"function","modifiers":[],"name":"migrate","nodeType":"FunctionDefinition","overrides":{"id":6940,"nodeType":"OverrideSpecifier","overrides":[],"src":"1247:8:44"},"parameters":{"id":6939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6938,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":7178,"src":"1207:29:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams"},"typeName":{"id":6937,"name":"MigrateParams","nodeType":"UserDefinedTypeName","referencedDeclaration":9444,"src":"1207:13:44","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_storage_ptr","typeString":"struct ICLMigrator.MigrateParams"}},"visibility":"internal"}],"src":"1206:31:44"},"returnParameters":{"id":6941,"nodeType":"ParameterList","parameters":[],"src":"1256:0:44"},"scope":7179,"src":"1190:2906:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7180,"src":"666:3432:44"}],"src":"45:4054:44"},"id":44},"contracts/SwapRouter.sol":{"ast":{"absolutePath":"contracts/SwapRouter.sol","exportedSymbols":{"BlockTimestamp":[7859],"BytesLib":[12063],"CallbackValidation":[12125],"IAstraCLPool":[110],"IAstraCLPoolActions":[248],"IAstraCLPoolDerivedState":[279],"IAstraCLPoolEvents":[398],"IAstraCLPoolImmutables":[438],"IAstraCLPoolOwnerActions":[464],"IAstraCLPoolState":[572],"IAstraCLSwapCallback":[152],"IERC20":[4183],"IERC20Permit":[2999],"IERC20PermitAllowed":[10444],"IMulticall":[9526],"IPeripheryImmutableState":[9751],"IPeripheryPayments":[9777],"IPeripheryPaymentsWithFee":[9810],"ISAMB":[10461],"ISelfPermit":[10045],"ISwapRouter":[10141],"LowGasSafeMath":[1223],"Multicall":[8369],"Path":[14272],"PeripheryImmutableState":[8400],"PeripheryPayments":[8610],"PeripheryPaymentsWithFee":[8791],"PeripheryValidation":[8811],"PoolAddress":[14364],"SafeCast":[1293],"SelfPermit":[9070],"SwapRouter":[7845],"TickMath":[2536],"TransferHelper":[15676]},"id":7846,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":7181,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:45"},{"id":7182,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"69:19:45"},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol","file":"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol","id":7183,"nodeType":"ImportDirective","scope":7846,"sourceUnit":1294,"src":"143:64:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/TickMath.sol","file":"@airdao/astra-cl-core/contracts/libraries/TickMath.sol","id":7184,"nodeType":"ImportDirective","scope":7846,"sourceUnit":2537,"src":"261:64:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","file":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","id":7185,"nodeType":"ImportDirective","scope":7846,"sourceUnit":111,"src":"379:69:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/ISwapRouter.sol","file":"./interfaces/ISwapRouter.sol","id":7186,"nodeType":"ImportDirective","scope":7846,"sourceUnit":10142,"src":"450:38:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/PeripheryImmutableState.sol","file":"./base/PeripheryImmutableState.sol","id":7187,"nodeType":"ImportDirective","scope":7846,"sourceUnit":8401,"src":"489:44:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/PeripheryValidation.sol","file":"./base/PeripheryValidation.sol","id":7188,"nodeType":"ImportDirective","scope":7846,"sourceUnit":8812,"src":"534:40:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/PeripheryPaymentsWithFee.sol","file":"./base/PeripheryPaymentsWithFee.sol","id":7189,"nodeType":"ImportDirective","scope":7846,"sourceUnit":8792,"src":"575:45:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/Multicall.sol","file":"./base/Multicall.sol","id":7190,"nodeType":"ImportDirective","scope":7846,"sourceUnit":8370,"src":"621:30:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/SelfPermit.sol","file":"./base/SelfPermit.sol","id":7191,"nodeType":"ImportDirective","scope":7846,"sourceUnit":9071,"src":"652:31:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/Path.sol","file":"./libraries/Path.sol","id":7192,"nodeType":"ImportDirective","scope":7846,"sourceUnit":14273,"src":"684:30:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/PoolAddress.sol","file":"./libraries/PoolAddress.sol","id":7193,"nodeType":"ImportDirective","scope":7846,"sourceUnit":14365,"src":"715:37:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/CallbackValidation.sol","file":"./libraries/CallbackValidation.sol","id":7194,"nodeType":"ImportDirective","scope":7846,"sourceUnit":12126,"src":"753:44:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/external/ISAMB.sol","file":"./interfaces/external/ISAMB.sol","id":7195,"nodeType":"ImportDirective","scope":7846,"sourceUnit":10462,"src":"798:41:45","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7197,"name":"ISwapRouter","nodeType":"UserDefinedTypeName","referencedDeclaration":10141,"src":"975:11:45","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$10141","typeString":"contract ISwapRouter"}},"id":7198,"nodeType":"InheritanceSpecifier","src":"975:11:45"},{"baseName":{"id":7199,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":8400,"src":"992:23:45","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$8400","typeString":"contract PeripheryImmutableState"}},"id":7200,"nodeType":"InheritanceSpecifier","src":"992:23:45"},{"baseName":{"id":7201,"name":"PeripheryValidation","nodeType":"UserDefinedTypeName","referencedDeclaration":8811,"src":"1021:19:45","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryValidation_$8811","typeString":"contract PeripheryValidation"}},"id":7202,"nodeType":"InheritanceSpecifier","src":"1021:19:45"},{"baseName":{"id":7203,"name":"PeripheryPaymentsWithFee","nodeType":"UserDefinedTypeName","referencedDeclaration":8791,"src":"1046:24:45","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPaymentsWithFee_$8791","typeString":"contract PeripheryPaymentsWithFee"}},"id":7204,"nodeType":"InheritanceSpecifier","src":"1046:24:45"},{"baseName":{"id":7205,"name":"Multicall","nodeType":"UserDefinedTypeName","referencedDeclaration":8369,"src":"1076:9:45","typeDescriptions":{"typeIdentifier":"t_contract$_Multicall_$8369","typeString":"contract Multicall"}},"id":7206,"nodeType":"InheritanceSpecifier","src":"1076:9:45"},{"baseName":{"id":7207,"name":"SelfPermit","nodeType":"UserDefinedTypeName","referencedDeclaration":9070,"src":"1091:10:45","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$9070","typeString":"contract SelfPermit"}},"id":7208,"nodeType":"InheritanceSpecifier","src":"1091:10:45"}],"contractDependencies":[152,7859,8369,8400,8610,8791,8811,9070,9526,9751,9777,9810,10045,10141],"contractKind":"contract","documentation":{"id":7196,"nodeType":"StructuredDocumentation","src":"841:107:45","text":"@title AstraDEX CL Swap Router\n @notice Router for stateless execution of swaps against AstraDEX CL"},"fullyImplemented":true,"id":7845,"linearizedBaseContracts":[7845,9070,10045,8369,9526,8791,9810,8610,8811,8400,9751,9777,7859,10141,152],"name":"SwapRouter","nodeType":"ContractDefinition","nodes":[{"id":7211,"libraryName":{"id":7209,"name":"Path","nodeType":"UserDefinedTypeName","referencedDeclaration":14272,"src":"1114:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_Path_$14272","typeString":"library Path"}},"nodeType":"UsingForDirective","src":"1108:21:45","typeName":{"id":7210,"name":"bytes","nodeType":"ElementaryTypeName","src":"1123:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"id":7214,"libraryName":{"id":7212,"name":"SafeCast","nodeType":"UserDefinedTypeName","referencedDeclaration":1293,"src":"1140:8:45","typeDescriptions":{"typeIdentifier":"t_contract$_SafeCast_$1293","typeString":"library SafeCast"}},"nodeType":"UsingForDirective","src":"1134:27:45","typeName":{"id":7213,"name":"uint256","nodeType":"ElementaryTypeName","src":"1153:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"documentation":{"id":7215,"nodeType":"StructuredDocumentation","src":"1167:155:45","text":"@dev Used as the placeholder value for amountInCached, because the computed amount in for an exact output swap\n can never actually be this value"},"id":7222,"mutability":"constant","name":"DEFAULT_AMOUNT_IN_CACHED","nodeType":"VariableDeclaration","scope":7845,"src":"1327:69:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7216,"name":"uint256","nodeType":"ElementaryTypeName","src":"1327:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"expression":{"arguments":[{"id":7219,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1384:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7218,"name":"uint256","nodeType":"ElementaryTypeName","src":"1384:7:45","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":7217,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1379:4:45","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1379:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":7221,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"1379:17:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"documentation":{"id":7223,"nodeType":"StructuredDocumentation","src":"1403:103:45","text":"@dev Transient storage variable used for returning the computed amount in for an exact output swap."},"id":7226,"mutability":"mutable","name":"amountInCached","nodeType":"VariableDeclaration","scope":7845,"src":"1511:57:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7224,"name":"uint256","nodeType":"ElementaryTypeName","src":"1511:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"id":7225,"name":"DEFAULT_AMOUNT_IN_CACHED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7222,"src":"1544:24:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":7237,"nodeType":"Block","src":"1661:2:45","statements":[]},"id":7238,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":7233,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7228,"src":"1644:8:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7234,"name":"_SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7230,"src":"1654:5:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":7235,"modifierName":{"id":7232,"name":"PeripheryImmutableState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8400,"src":"1620:23:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PeripheryImmutableState_$8400_$","typeString":"type(contract PeripheryImmutableState)"}},"nodeType":"ModifierInvocation","src":"1620:40:45"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":7231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7228,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":7238,"src":"1587:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7227,"name":"address","nodeType":"ElementaryTypeName","src":"1587:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7230,"mutability":"mutable","name":"_SAMB","nodeType":"VariableDeclaration","scope":7238,"src":"1605:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7229,"name":"address","nodeType":"ElementaryTypeName","src":"1605:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1586:33:45"},"returnParameters":{"id":7236,"nodeType":"ParameterList","parameters":[],"src":"1661:0:45"},"scope":7845,"src":"1575:88:45","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":7263,"nodeType":"Block","src":"1870:118:45","statements":[{"expression":{"arguments":[{"arguments":[{"id":7253,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8379,"src":"1927:7:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":7256,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7241,"src":"1959:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7257,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7243,"src":"1967:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7258,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7245,"src":"1975:3:45","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":7254,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14364,"src":"1936:11:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$14364_$","typeString":"type(library PoolAddress)"}},"id":7255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPoolKey","nodeType":"MemberAccess","referencedDeclaration":14316,"src":"1936:22:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_uint24_$returns$_t_struct$_PoolKey_$14285_memory_ptr_$","typeString":"function (address,address,uint24) pure returns (struct PoolAddress.PoolKey memory)"}},"id":7259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1936:43:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":7251,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14364,"src":"1900:11:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$14364_$","typeString":"type(library PoolAddress)"}},"id":7252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":14363,"src":"1900:26:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$14285_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":7260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1900:80:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7250,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"1887:12:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":7261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1887:94:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"functionReturnParameters":7249,"id":7262,"nodeType":"Return","src":"1880:101:45"}]},"documentation":{"id":7239,"nodeType":"StructuredDocumentation","src":"1669:99:45","text":"@dev Returns the pool for the given token pair and fee. The pool contract may or may not exist."},"id":7264,"implemented":true,"kind":"function","modifiers":[],"name":"getPool","nodeType":"FunctionDefinition","parameters":{"id":7246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7241,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":7264,"src":"1790:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7240,"name":"address","nodeType":"ElementaryTypeName","src":"1790:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7243,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":7264,"src":"1806:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7242,"name":"address","nodeType":"ElementaryTypeName","src":"1806:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7245,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":7264,"src":"1822:10:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":7244,"name":"uint24","nodeType":"ElementaryTypeName","src":"1822:6:45","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"1789:44:45"},"returnParameters":{"id":7249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7248,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7264,"src":"1856:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":7247,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"1856:12:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"}],"src":"1855:14:45"},"scope":7845,"src":"1773:215:45","stateMutability":"view","virtual":false,"visibility":"private"},{"canonicalName":"SwapRouter.SwapCallbackData","id":7269,"members":[{"constant":false,"id":7266,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":7269,"src":"2028:10:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":7265,"name":"bytes","nodeType":"ElementaryTypeName","src":"2028:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7268,"mutability":"mutable","name":"payer","nodeType":"VariableDeclaration","scope":7269,"src":"2048:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7267,"name":"address","nodeType":"ElementaryTypeName","src":"2048:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"SwapCallbackData","nodeType":"StructDefinition","scope":7845,"src":"1994:74:45","visibility":"public"},{"baseFunctions":[151],"body":{"id":7398,"nodeType":"Block","src":"2226:1131:45","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7281,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7272,"src":"2244:12:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2259:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2244:16:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7284,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7274,"src":"2264:12:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2279:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2264:16:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2244:36:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7280,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2236:7:45","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":7288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2236:45:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7289,"nodeType":"ExpressionStatement","src":"2236:45:45"},{"assignments":[7291],"declarations":[{"constant":false,"id":7291,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":7398,"src":"2354:28:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData"},"typeName":{"id":7290,"name":"SwapCallbackData","nodeType":"UserDefinedTypeName","referencedDeclaration":7269,"src":"2354:16:45","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_storage_ptr","typeString":"struct SwapRouter.SwapCallbackData"}},"visibility":"internal"}],"id":7298,"initialValue":{"arguments":[{"id":7294,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7276,"src":"2396:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":7295,"name":"SwapCallbackData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7269,"src":"2404:16:45","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapCallbackData_$7269_storage_ptr_$","typeString":"type(struct SwapRouter.SwapCallbackData storage pointer)"}}],"id":7296,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2403:18:45","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapCallbackData_$7269_storage_ptr_$","typeString":"type(struct SwapRouter.SwapCallbackData storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_type$_t_struct$_SwapCallbackData_$7269_storage_ptr_$","typeString":"type(struct SwapRouter.SwapCallbackData storage pointer)"}],"expression":{"id":7292,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2385:3:45","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7293,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2385:10:45","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":7297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2385:37:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}},"nodeType":"VariableDeclarationStatement","src":"2354:68:45"},{"assignments":[7300,7302,7304],"declarations":[{"constant":false,"id":7300,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":7398,"src":"2433:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7299,"name":"address","nodeType":"ElementaryTypeName","src":"2433:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7302,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":7398,"src":"2450:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7301,"name":"address","nodeType":"ElementaryTypeName","src":"2450:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7304,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":7398,"src":"2468:10:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":7303,"name":"uint24","nodeType":"ElementaryTypeName","src":"2468:6:45","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":7309,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":7305,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7291,"src":"2482:4:45","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}},"id":7306,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":7266,"src":"2482:9:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decodeFirstPool","nodeType":"MemberAccess","referencedDeclaration":14238,"src":"2482:25:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$_t_address_$_t_uint24_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (address,address,uint24)"}},"id":7308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2482:27:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint24_$","typeString":"tuple(address,address,uint24)"}},"nodeType":"VariableDeclarationStatement","src":"2432:77:45"},{"expression":{"arguments":[{"id":7313,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8379,"src":"2553:7:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7314,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7300,"src":"2562:7:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7315,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7302,"src":"2571:8:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7316,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7304,"src":"2581:3:45","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":7310,"name":"CallbackValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12125,"src":"2519:18:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CallbackValidation_$12125_$","typeString":"type(library CallbackValidation)"}},"id":7312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"verifyCallback","nodeType":"MemberAccess","referencedDeclaration":12093,"src":"2519:33:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint24_$returns$_t_contract$_IAstraCLPool_$110_$","typeString":"function (address,address,address,uint24) view returns (contract IAstraCLPool)"}},"id":7317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2519:66:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":7318,"nodeType":"ExpressionStatement","src":"2519:66:45"},{"assignments":[7320,7322],"declarations":[{"constant":false,"id":7320,"mutability":"mutable","name":"isExactInput","nodeType":"VariableDeclaration","scope":7398,"src":"2597:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7319,"name":"bool","nodeType":"ElementaryTypeName","src":"2597:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7322,"mutability":"mutable","name":"amountToPay","nodeType":"VariableDeclaration","scope":7398,"src":"2616:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7321,"name":"uint256","nodeType":"ElementaryTypeName","src":"2616:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7343,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7323,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7272,"src":"2639:12:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2654:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2639:16:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7334,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7302,"src":"2729:8:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7335,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7300,"src":"2740:7:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2729:18:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":7339,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7274,"src":"2757:12:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7338,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2749:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7337,"name":"uint256","nodeType":"ElementaryTypeName","src":"2749:7:45","typeDescriptions":{}}},"id":7340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2749:21:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7341,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2728:43:45","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"id":7342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2639:132:45","trueExpression":{"components":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7326,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7300,"src":"2671:7:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7327,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7302,"src":"2681:8:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2671:18:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":7331,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7272,"src":"2699:12:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7330,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2691:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7329,"name":"uint256","nodeType":"ElementaryTypeName","src":"2691:7:45","typeDescriptions":{}}},"id":7332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2691:21:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7333,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2670:43:45","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"2596:175:45"},{"condition":{"id":7344,"name":"isExactInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7320,"src":"2785:12:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7396,"nodeType":"Block","src":"2879:472:45","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":7355,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7291,"src":"2949:4:45","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}},"id":7356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":7266,"src":"2949:9:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hasMultiplePools","nodeType":"MemberAccess","referencedDeclaration":14186,"src":"2949:26:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bool)"}},"id":7358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2949:28:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7394,"nodeType":"Block","src":"3122:219:45","statements":[{"expression":{"id":7379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7377,"name":"amountInCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7226,"src":"3140:14:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7378,"name":"amountToPay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7322,"src":"3157:11:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3140:28:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7380,"nodeType":"ExpressionStatement","src":"3140:28:45"},{"expression":{"id":7383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7381,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7300,"src":"3186:7:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7382,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7302,"src":"3196:8:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3186:18:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7384,"nodeType":"ExpressionStatement","src":"3186:18:45"},{"expression":{"arguments":[{"id":7386,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7300,"src":"3281:7:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7387,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7291,"src":"3290:4:45","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}},"id":7388,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payer","nodeType":"MemberAccess","referencedDeclaration":7268,"src":"3290:10:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7389,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3302:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3302:10:45","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7391,"name":"amountToPay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7322,"src":"3314:11:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7385,"name":"pay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8609,"src":"3277:3:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":7392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3277:49:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7393,"nodeType":"ExpressionStatement","src":"3277:49:45"}]},"id":7395,"nodeType":"IfStatement","src":"2945:396:45","trueBody":{"id":7376,"nodeType":"Block","src":"2979:137:45","statements":[{"expression":{"id":7366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7359,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7291,"src":"2997:4:45","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}},"id":7361,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":7266,"src":"2997:9:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":7362,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7291,"src":"3009:4:45","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}},"id":7363,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":7266,"src":"3009:9:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"skipToken","nodeType":"MemberAccess","referencedDeclaration":14271,"src":"3009:19:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":7365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3009:21:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"2997:33:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7367,"nodeType":"ExpressionStatement","src":"2997:33:45"},{"expression":{"arguments":[{"id":7369,"name":"amountToPay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7322,"src":"3068:11:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7370,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3081:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3081:10:45","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"hexValue":"30","id":7372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3093:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":7373,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7291,"src":"3096:4:45","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}],"id":7368,"name":"exactOutputInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7750,"src":"3048:19:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint160_$_t_struct$_SwapCallbackData_$7269_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,address,uint160,struct SwapRouter.SwapCallbackData memory) returns (uint256)"}},"id":7374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3048:53:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7375,"nodeType":"ExpressionStatement","src":"3048:53:45"}]}}]},"id":7397,"nodeType":"IfStatement","src":"2781:570:45","trueBody":{"id":7354,"nodeType":"Block","src":"2799:74:45","statements":[{"expression":{"arguments":[{"id":7346,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7300,"src":"2817:7:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7347,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7291,"src":"2826:4:45","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}},"id":7348,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payer","nodeType":"MemberAccess","referencedDeclaration":7268,"src":"2826:10:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7349,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2838:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2838:10:45","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7351,"name":"amountToPay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7322,"src":"2850:11:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7345,"name":"pay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8609,"src":"2813:3:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":7352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2813:49:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7353,"nodeType":"ExpressionStatement","src":"2813:49:45"}]}}]},"documentation":{"id":7270,"nodeType":"StructuredDocumentation","src":"2074:36:45","text":"@inheritdoc IAstraCLSwapCallback"},"functionSelector":"11c17848","id":7399,"implemented":true,"kind":"function","modifiers":[],"name":"astraCLSwapCallback","nodeType":"FunctionDefinition","overrides":{"id":7278,"nodeType":"OverrideSpecifier","overrides":[],"src":"2217:8:45"},"parameters":{"id":7277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7272,"mutability":"mutable","name":"amount0Delta","nodeType":"VariableDeclaration","scope":7399,"src":"2144:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7271,"name":"int256","nodeType":"ElementaryTypeName","src":"2144:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7274,"mutability":"mutable","name":"amount1Delta","nodeType":"VariableDeclaration","scope":7399,"src":"2165:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7273,"name":"int256","nodeType":"ElementaryTypeName","src":"2165:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7276,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":7399,"src":"2186:20:45","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7275,"name":"bytes","nodeType":"ElementaryTypeName","src":"2186:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2143:64:45"},"returnParameters":{"id":7279,"nodeType":"ParameterList","parameters":[],"src":"2226:0:45"},"scope":7845,"src":"2115:1242:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":7491,"nodeType":"Block","src":"3607:694:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7413,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7404,"src":"3684:9:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3705:1:45","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":7415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3697:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7414,"name":"address","nodeType":"ElementaryTypeName","src":"3697:7:45","typeDescriptions":{}}},"id":7417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3697:10:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3684:23:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7426,"nodeType":"IfStatement","src":"3680:54:45","trueBody":{"expression":{"id":7424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7419,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7404,"src":"3709:9:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7422,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3729:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_SwapRouter_$7845","typeString":"contract SwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapRouter_$7845","typeString":"contract SwapRouter"}],"id":7421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3721:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7420,"name":"address","nodeType":"ElementaryTypeName","src":"3721:7:45","typeDescriptions":{}}},"id":7423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3721:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3709:25:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7425,"nodeType":"ExpressionStatement","src":"3709:25:45"}},{"assignments":[7428,7430,7432],"declarations":[{"constant":false,"id":7428,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":7491,"src":"3746:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7427,"name":"address","nodeType":"ElementaryTypeName","src":"3746:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7430,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":7491,"src":"3763:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7429,"name":"address","nodeType":"ElementaryTypeName","src":"3763:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7432,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":7491,"src":"3781:10:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":7431,"name":"uint24","nodeType":"ElementaryTypeName","src":"3781:6:45","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":7437,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":7433,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7408,"src":"3795:4:45","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}},"id":7434,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":7266,"src":"3795:9:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decodeFirstPool","nodeType":"MemberAccess","referencedDeclaration":14238,"src":"3795:25:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$_t_address_$_t_uint24_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (address,address,uint24)"}},"id":7436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3795:27:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint24_$","typeString":"tuple(address,address,uint24)"}},"nodeType":"VariableDeclarationStatement","src":"3745:77:45"},{"assignments":[7439],"declarations":[{"constant":false,"id":7439,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":7491,"src":"3833:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7438,"name":"bool","nodeType":"ElementaryTypeName","src":"3833:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":7443,"initialValue":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7440,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7428,"src":"3851:7:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7441,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7430,"src":"3861:8:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3851:18:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3833:36:45"},{"assignments":[7445,7447],"declarations":[{"constant":false,"id":7445,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":7491,"src":"3881:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7444,"name":"int256","nodeType":"ElementaryTypeName","src":"3881:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7447,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":7491,"src":"3897:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7446,"name":"int256","nodeType":"ElementaryTypeName","src":"3897:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":7480,"initialValue":{"arguments":[{"id":7454,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7404,"src":"3965:9:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7455,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7439,"src":"3988:10:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7456,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7402,"src":"4012:8:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":1292,"src":"4012:17:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":7458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4012:19:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7459,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7406,"src":"4045:17:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4066:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4045:22:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":7473,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7406,"src":"4177:17:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":7474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4045:149:45","trueExpression":{"components":[{"condition":{"id":7462,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7439,"src":"4087:10:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7467,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"4130:8:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$2536_$","typeString":"type(library TickMath)"}},"id":7468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":2022,"src":"4130:23:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4156:1:45","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4130:27:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":7471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4087:70:45","trueExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7463,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"4100:8:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$2536_$","typeString":"type(library TickMath)"}},"id":7464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":2018,"src":"4100:23:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":7465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4126:1:45","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4100:27:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":7472,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4086:72:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":7477,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7408,"src":"4219:4:45","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}],"expression":{"id":7475,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4208:3:45","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"4208:10:45","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4208:16:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":7449,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7428,"src":"3923:7:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7450,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7430,"src":"3932:8:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7451,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7432,"src":"3942:3:45","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":7448,"name":"getPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7264,"src":"3915:7:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint24_$returns$_t_contract$_IAstraCLPool_$110_$","typeString":"function (address,address,uint24) view returns (contract IAstraCLPool)"}},"id":7452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3915:31:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":7453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":229,"src":"3915:36:45","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bool_$_t_int256_$_t_uint160_$_t_bytes_memory_ptr_$returns$_t_int256_$_t_int256_$","typeString":"function (address,bool,int256,uint160,bytes memory) external returns (int256,int256)"}},"id":7479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3915:319:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"nodeType":"VariableDeclarationStatement","src":"3880:354:45"},{"expression":{"arguments":[{"id":7488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"4260:33:45","subExpression":{"components":[{"condition":{"id":7483,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7439,"src":"4262:10:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":7485,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7445,"src":"4285:7:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4262:30:45","trueExpression":{"id":7484,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7447,"src":"4275:7:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7487,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4261:32:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7482,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4252:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7481,"name":"uint256","nodeType":"ElementaryTypeName","src":"4252:7:45","typeDescriptions":{}}},"id":7489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4252:42:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7412,"id":7490,"nodeType":"Return","src":"4245:49:45"}]},"documentation":{"id":7400,"nodeType":"StructuredDocumentation","src":"3363:43:45","text":"@dev Performs a single exact input swap"},"id":7492,"implemented":true,"kind":"function","modifiers":[],"name":"exactInputInternal","nodeType":"FunctionDefinition","parameters":{"id":7409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7402,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":7492,"src":"3448:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7401,"name":"uint256","nodeType":"ElementaryTypeName","src":"3448:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7404,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":7492,"src":"3474:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7403,"name":"address","nodeType":"ElementaryTypeName","src":"3474:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7406,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":7492,"src":"3501:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7405,"name":"uint160","nodeType":"ElementaryTypeName","src":"3501:7:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7408,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":7492,"src":"3536:28:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData"},"typeName":{"id":7407,"name":"SwapCallbackData","nodeType":"UserDefinedTypeName","referencedDeclaration":7269,"src":"3536:16:45","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_storage_ptr","typeString":"struct SwapRouter.SwapCallbackData"}},"visibility":"internal"}],"src":"3438:132:45"},"returnParameters":{"id":7412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7411,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":7492,"src":"3588:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7410,"name":"uint256","nodeType":"ElementaryTypeName","src":"3588:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3587:19:45"},"scope":7845,"src":"3411:890:45","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[10077],"body":{"id":7537,"nodeType":"Block","src":"4504:352:45","statements":[{"expression":{"id":7527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7505,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7503,"src":"4514:9:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":7507,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7495,"src":"4558:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$10069_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":10064,"src":"4558:15:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7509,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7495,"src":"4587:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$10069_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":10060,"src":"4587:16:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7511,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7495,"src":"4617:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$10069_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":10068,"src":"4617:24:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"arguments":[{"expression":{"id":7516,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7495,"src":"4696:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$10069_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":10054,"src":"4696:14:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7518,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7495,"src":"4712:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$10069_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":10058,"src":"4712:10:45","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"expression":{"id":7520,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7495,"src":"4724:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$10069_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":10056,"src":"4724:15:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7514,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4679:3:45","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7515,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"4679:16:45","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4679:61:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"id":7523,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4749:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4749:10:45","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":7513,"name":"SwapCallbackData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7269,"src":"4655:16:45","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapCallbackData_$7269_storage_ptr_$","typeString":"type(struct SwapRouter.SwapCallbackData storage pointer)"}},"id":7525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["path","payer"],"nodeType":"FunctionCall","src":"4655:106:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}],"id":7506,"name":"exactInputInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7492,"src":"4526:18:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint160_$_t_struct$_SwapCallbackData_$7269_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,address,uint160,struct SwapRouter.SwapCallbackData memory) returns (uint256)"}},"id":7526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4526:245:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4514:257:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7528,"nodeType":"ExpressionStatement","src":"4514:257:45"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7530,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7503,"src":"4789:9:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":7531,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7495,"src":"4802:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$10069_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amountOutMinimum","nodeType":"MemberAccess","referencedDeclaration":10066,"src":"4802:23:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4789:36:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6f206c6974746c65207265636569766564","id":7534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4827:21:45","typeDescriptions":{"typeIdentifier":"t_stringliteral_f037a9cbca9be03859489f289f0cf5f85c0414bbfdd9785bc7ab31bd734e249c","typeString":"literal_string \"Too little received\""},"value":"Too little received"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f037a9cbca9be03859489f289f0cf5f85c0414bbfdd9785bc7ab31bd734e249c","typeString":"literal_string \"Too little received\""}],"id":7529,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4781:7:45","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4781:68:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7536,"nodeType":"ExpressionStatement","src":"4781:68:45"}]},"documentation":{"id":7493,"nodeType":"StructuredDocumentation","src":"4307:27:45","text":"@inheritdoc ISwapRouter"},"functionSelector":"414bf389","id":7538,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":7499,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7495,"src":"4459:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$10069_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":10062,"src":"4459:15:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7501,"modifierName":{"id":7498,"name":"checkDeadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8810,"src":"4445:13:45","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"4445:30:45"}],"name":"exactInputSingle","nodeType":"FunctionDefinition","overrides":{"id":7497,"nodeType":"OverrideSpecifier","overrides":[],"src":"4436:8:45"},"parameters":{"id":7496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7495,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":7538,"src":"4374:38:45","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$10069_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"},"typeName":{"id":7494,"name":"ExactInputSingleParams","nodeType":"UserDefinedTypeName","referencedDeclaration":10069,"src":"4374:22:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$10069_storage_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"}},"visibility":"internal"}],"src":"4364:54:45"},"returnParameters":{"id":7504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7503,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":7538,"src":"4485:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7502,"name":"uint256","nodeType":"ElementaryTypeName","src":"4485:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4484:19:45"},"scope":7845,"src":"4339:517:45","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[10096],"body":{"id":7625,"nodeType":"Block","src":"5045:1094:45","statements":[{"assignments":[7552],"declarations":[{"constant":false,"id":7552,"mutability":"mutable","name":"payer","nodeType":"VariableDeclaration","scope":7625,"src":"5055:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7551,"name":"address","nodeType":"ElementaryTypeName","src":"5055:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7555,"initialValue":{"expression":{"id":7553,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5071:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5071:10:45","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"5055:26:45"},{"body":{"id":7615,"nodeType":"Block","src":"5142:912:45","statements":[{"assignments":[7558],"declarations":[{"constant":false,"id":7558,"mutability":"mutable","name":"hasMultiplePools","nodeType":"VariableDeclaration","scope":7615,"src":"5156:21:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7557,"name":"bool","nodeType":"ElementaryTypeName","src":"5156:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":7563,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":7559,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7541,"src":"5180:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$10088_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}},"id":7560,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":10079,"src":"5180:11:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hasMultiplePools","nodeType":"MemberAccess","referencedDeclaration":14186,"src":"5180:28:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bool)"}},"id":7562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5180:30:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"5156:54:45"},{"expression":{"id":7587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7564,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7541,"src":"5304:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$10088_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}},"id":7566,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":10085,"src":"5304:15:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":7568,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7541,"src":"5358:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$10088_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}},"id":7569,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":10085,"src":"5358:15:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"condition":{"id":7570,"name":"hasMultiplePools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7558,"src":"5391:16:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":7575,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7541,"src":"5426:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$10088_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}},"id":7576,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":10081,"src":"5426:16:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5391:51:45","trueExpression":{"arguments":[{"id":7573,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5418:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_SwapRouter_$7845","typeString":"contract SwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapRouter_$7845","typeString":"contract SwapRouter"}],"id":7572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5410:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7571,"name":"address","nodeType":"ElementaryTypeName","src":"5410:7:45","typeDescriptions":{}}},"id":7574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5410:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":7578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5511:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":7580,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7541,"src":"5575:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$10088_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}},"id":7581,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":10079,"src":"5575:11:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getFirstPool","nodeType":"MemberAccess","referencedDeclaration":14253,"src":"5575:24:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":7583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5575:26:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7584,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7552,"src":"5678:5:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7579,"name":"SwapCallbackData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7269,"src":"5530:16:45","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapCallbackData_$7269_storage_ptr_$","typeString":"type(struct SwapRouter.SwapCallbackData storage pointer)"}},"id":7585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["path","payer"],"nodeType":"FunctionCall","src":"5530:172:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}],"id":7567,"name":"exactInputInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7492,"src":"5322:18:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint160_$_t_struct$_SwapCallbackData_$7269_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,address,uint160,struct SwapRouter.SwapCallbackData memory) returns (uint256)"}},"id":7586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5322:394:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5304:412:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7588,"nodeType":"ExpressionStatement","src":"5304:412:45"},{"condition":{"id":7589,"name":"hasMultiplePools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7558,"src":"5790:16:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7613,"nodeType":"Block","src":"5961:83:45","statements":[{"expression":{"id":7610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7607,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7549,"src":"5979:9:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":7608,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7541,"src":"5991:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$10088_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}},"id":7609,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":10085,"src":"5991:15:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5979:27:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7611,"nodeType":"ExpressionStatement","src":"5979:27:45"},{"id":7612,"nodeType":"Break","src":"6024:5:45"}]},"id":7614,"nodeType":"IfStatement","src":"5786:258:45","trueBody":{"id":7606,"nodeType":"Block","src":"5808:147:45","statements":[{"expression":{"id":7595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7590,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7552,"src":"5826:5:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7593,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5842:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_SwapRouter_$7845","typeString":"contract SwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapRouter_$7845","typeString":"contract SwapRouter"}],"id":7592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5834:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7591,"name":"address","nodeType":"ElementaryTypeName","src":"5834:7:45","typeDescriptions":{}}},"id":7594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5834:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"5826:21:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7596,"nodeType":"ExpressionStatement","src":"5826:21:45"},{"expression":{"id":7604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7597,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7541,"src":"5903:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$10088_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}},"id":7599,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":10079,"src":"5903:11:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":7600,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7541,"src":"5917:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$10088_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}},"id":7601,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":10079,"src":"5917:11:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"skipToken","nodeType":"MemberAccess","referencedDeclaration":14271,"src":"5917:21:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":7603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5917:23:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"5903:37:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7605,"nodeType":"ExpressionStatement","src":"5903:37:45"}]}}]},"condition":{"hexValue":"74727565","id":7556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5136:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":7616,"nodeType":"WhileStatement","src":"5129:925:45"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7618,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7549,"src":"6072:9:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":7619,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7541,"src":"6085:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$10088_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}},"id":7620,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amountOutMinimum","nodeType":"MemberAccess","referencedDeclaration":10087,"src":"6085:23:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6072:36:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6f206c6974746c65207265636569766564","id":7622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6110:21:45","typeDescriptions":{"typeIdentifier":"t_stringliteral_f037a9cbca9be03859489f289f0cf5f85c0414bbfdd9785bc7ab31bd734e249c","typeString":"literal_string \"Too little received\""},"value":"Too little received"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f037a9cbca9be03859489f289f0cf5f85c0414bbfdd9785bc7ab31bd734e249c","typeString":"literal_string \"Too little received\""}],"id":7617,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6064:7:45","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6064:68:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7624,"nodeType":"ExpressionStatement","src":"6064:68:45"}]},"documentation":{"id":7539,"nodeType":"StructuredDocumentation","src":"4862:27:45","text":"@inheritdoc ISwapRouter"},"functionSelector":"c04b8d59","id":7626,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":7545,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7541,"src":"5000:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$10088_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}},"id":7546,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":10083,"src":"5000:15:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7547,"modifierName":{"id":7544,"name":"checkDeadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8810,"src":"4986:13:45","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"4986:30:45"}],"name":"exactInput","nodeType":"FunctionDefinition","overrides":{"id":7543,"nodeType":"OverrideSpecifier","overrides":[],"src":"4977:8:45"},"parameters":{"id":7542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7541,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":7626,"src":"4923:30:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$10088_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams"},"typeName":{"id":7540,"name":"ExactInputParams","nodeType":"UserDefinedTypeName","referencedDeclaration":10088,"src":"4923:16:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$10088_storage_ptr","typeString":"struct ISwapRouter.ExactInputParams"}},"visibility":"internal"}],"src":"4913:46:45"},"returnParameters":{"id":7550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7549,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":7626,"src":"5026:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7548,"name":"uint256","nodeType":"ElementaryTypeName","src":"5026:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5025:19:45"},"scope":7845,"src":"4894:1245:45","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":7749,"nodeType":"Block","src":"6391:1093:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7640,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7631,"src":"6468:9:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6489:1:45","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":7642,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6481:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7641,"name":"address","nodeType":"ElementaryTypeName","src":"6481:7:45","typeDescriptions":{}}},"id":7644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6481:10:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"6468:23:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7653,"nodeType":"IfStatement","src":"6464:54:45","trueBody":{"expression":{"id":7651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7646,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7631,"src":"6493:9:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7649,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6513:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_SwapRouter_$7845","typeString":"contract SwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapRouter_$7845","typeString":"contract SwapRouter"}],"id":7648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6505:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7647,"name":"address","nodeType":"ElementaryTypeName","src":"6505:7:45","typeDescriptions":{}}},"id":7650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6505:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"6493:25:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7652,"nodeType":"ExpressionStatement","src":"6493:25:45"}},{"assignments":[7655,7657,7659],"declarations":[{"constant":false,"id":7655,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":7749,"src":"6530:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7654,"name":"address","nodeType":"ElementaryTypeName","src":"6530:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7657,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":7749,"src":"6548:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7656,"name":"address","nodeType":"ElementaryTypeName","src":"6548:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7659,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":7749,"src":"6565:10:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":7658,"name":"uint24","nodeType":"ElementaryTypeName","src":"6565:6:45","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":7664,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":7660,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7635,"src":"6579:4:45","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}},"id":7661,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":7266,"src":"6579:9:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decodeFirstPool","nodeType":"MemberAccess","referencedDeclaration":14238,"src":"6579:25:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$_t_address_$_t_uint24_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (address,address,uint24)"}},"id":7663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6579:27:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint24_$","typeString":"tuple(address,address,uint24)"}},"nodeType":"VariableDeclarationStatement","src":"6529:77:45"},{"assignments":[7666],"declarations":[{"constant":false,"id":7666,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":7749,"src":"6617:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7665,"name":"bool","nodeType":"ElementaryTypeName","src":"6617:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":7670,"initialValue":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7667,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7657,"src":"6635:7:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7668,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7655,"src":"6645:8:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6635:18:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"6617:36:45"},{"assignments":[7672,7674],"declarations":[{"constant":false,"id":7672,"mutability":"mutable","name":"amount0Delta","nodeType":"VariableDeclaration","scope":7749,"src":"6665:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7671,"name":"int256","nodeType":"ElementaryTypeName","src":"6665:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7674,"mutability":"mutable","name":"amount1Delta","nodeType":"VariableDeclaration","scope":7749,"src":"6686:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7673,"name":"int256","nodeType":"ElementaryTypeName","src":"6686:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":7708,"initialValue":{"arguments":[{"id":7681,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7631,"src":"6759:9:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7682,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7666,"src":"6782:10:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":7686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"6806:21:45","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7683,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7629,"src":"6807:9:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":1292,"src":"6807:18:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":7685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6807:20:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7687,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7633,"src":"6841:17:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6862:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6841:22:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":7701,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7633,"src":"6973:17:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":7702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6841:149:45","trueExpression":{"components":[{"condition":{"id":7690,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7666,"src":"6883:10:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7695,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"6926:8:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$2536_$","typeString":"type(library TickMath)"}},"id":7696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":2022,"src":"6926:23:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6952:1:45","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6926:27:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":7699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6883:70:45","trueExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7691,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"6896:8:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$2536_$","typeString":"type(library TickMath)"}},"id":7692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":2018,"src":"6896:23:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":7693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6922:1:45","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6896:27:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":7700,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6882:72:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":7705,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7635,"src":"7015:4:45","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}],"expression":{"id":7703,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7004:3:45","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7704,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"7004:10:45","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7004:16:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":7676,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7657,"src":"6717:7:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7677,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7655,"src":"6726:8:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7678,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7659,"src":"6736:3:45","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":7675,"name":"getPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7264,"src":"6709:7:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint24_$returns$_t_contract$_IAstraCLPool_$110_$","typeString":"function (address,address,uint24) view returns (contract IAstraCLPool)"}},"id":7679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6709:31:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":7680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":229,"src":"6709:36:45","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bool_$_t_int256_$_t_uint160_$_t_bytes_memory_ptr_$returns$_t_int256_$_t_int256_$","typeString":"function (address,bool,int256,uint160,bytes memory) external returns (int256,int256)"}},"id":7707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6709:321:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"nodeType":"VariableDeclarationStatement","src":"6664:366:45"},{"assignments":[7710],"declarations":[{"constant":false,"id":7710,"mutability":"mutable","name":"amountOutReceived","nodeType":"VariableDeclaration","scope":7749,"src":"7041:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7709,"name":"uint256","nodeType":"ElementaryTypeName","src":"7041:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7711,"nodeType":"VariableDeclarationStatement","src":"7041:25:45"},{"expression":{"id":7737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":7712,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7638,"src":"7077:8:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7713,"name":"amountOutReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7710,"src":"7087:17:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7714,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7076:29:45","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":7715,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7666,"src":"7108:10:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"arguments":[{"id":7728,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7674,"src":"7204:12:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7727,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7196:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7726,"name":"uint256","nodeType":"ElementaryTypeName","src":"7196:7:45","typeDescriptions":{}}},"id":7729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7196:21:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":7733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7227:13:45","subExpression":{"id":7732,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7672,"src":"7228:12:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7731,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7219:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7730,"name":"uint256","nodeType":"ElementaryTypeName","src":"7219:7:45","typeDescriptions":{}}},"id":7734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7219:22:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7195:47:45","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":7736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7108:134:45","trueExpression":{"components":[{"arguments":[{"id":7718,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7672,"src":"7142:12:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7134:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7716,"name":"uint256","nodeType":"ElementaryTypeName","src":"7134:7:45","typeDescriptions":{}}},"id":7719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7134:21:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":7723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7165:13:45","subExpression":{"id":7722,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7674,"src":"7166:12:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7157:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7720,"name":"uint256","nodeType":"ElementaryTypeName","src":"7157:7:45","typeDescriptions":{}}},"id":7724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7157:22:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7725,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7133:47:45","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"7076:166:45","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7738,"nodeType":"ExpressionStatement","src":"7076:166:45"},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":7741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7739,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7633,"src":"7414:17:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7435:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7414:22:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7748,"nodeType":"IfStatement","src":"7410:67:45","trueBody":{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7743,"name":"amountOutReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7710,"src":"7446:17:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7744,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7629,"src":"7467:9:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7446:30:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7742,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7438:7:45","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":7746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7438:39:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7747,"nodeType":"ExpressionStatement","src":"7438:39:45"}}]},"documentation":{"id":7627,"nodeType":"StructuredDocumentation","src":"6145:44:45","text":"@dev Performs a single exact output swap"},"id":7750,"implemented":true,"kind":"function","modifiers":[],"name":"exactOutputInternal","nodeType":"FunctionDefinition","parameters":{"id":7636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7629,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":7750,"src":"6232:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7628,"name":"uint256","nodeType":"ElementaryTypeName","src":"6232:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7631,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":7750,"src":"6259:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7630,"name":"address","nodeType":"ElementaryTypeName","src":"6259:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7633,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":7750,"src":"6286:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":7632,"name":"uint160","nodeType":"ElementaryTypeName","src":"6286:7:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":7635,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":7750,"src":"6321:28:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData"},"typeName":{"id":7634,"name":"SwapCallbackData","nodeType":"UserDefinedTypeName","referencedDeclaration":7269,"src":"6321:16:45","typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_storage_ptr","typeString":"struct SwapRouter.SwapCallbackData"}},"visibility":"internal"}],"src":"6222:133:45"},"returnParameters":{"id":7639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7638,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":7750,"src":"6373:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7637,"name":"uint256","nodeType":"ElementaryTypeName","src":"6373:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6372:18:45"},"scope":7845,"src":"6194:1290:45","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[10121],"body":{"id":7799,"nodeType":"Block","src":"7688:536:45","statements":[{"expression":{"id":7785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7763,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7761,"src":"7754:8:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":7765,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7753,"src":"7798:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$10113_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":10108,"src":"7798:16:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7767,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7753,"src":"7828:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$10113_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":10104,"src":"7828:16:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7769,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7753,"src":"7858:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$10113_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":10112,"src":"7858:24:45","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"arguments":[{"expression":{"id":7774,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7753,"src":"7937:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$10113_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":10100,"src":"7937:15:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7776,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7753,"src":"7954:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$10113_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":10102,"src":"7954:10:45","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"expression":{"id":7778,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7753,"src":"7966:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$10113_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":10098,"src":"7966:14:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7772,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7920:3:45","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"7920:16:45","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7920:61:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"id":7781,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7990:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7990:10:45","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":7771,"name":"SwapCallbackData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7269,"src":"7896:16:45","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapCallbackData_$7269_storage_ptr_$","typeString":"type(struct SwapRouter.SwapCallbackData storage pointer)"}},"id":7783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["path","payer"],"nodeType":"FunctionCall","src":"7896:106:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}],"id":7764,"name":"exactOutputInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7750,"src":"7765:19:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint160_$_t_struct$_SwapCallbackData_$7269_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,address,uint160,struct SwapRouter.SwapCallbackData memory) returns (uint256)"}},"id":7784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7765:247:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7754:258:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7786,"nodeType":"ExpressionStatement","src":"7754:258:45"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7788,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7761,"src":"8031:8:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":7789,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7753,"src":"8043:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$10113_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amountInMaximum","nodeType":"MemberAccess","referencedDeclaration":10110,"src":"8043:22:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8031:34:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6f206d75636820726571756573746564","id":7792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8067:20:45","typeDescriptions":{"typeIdentifier":"t_stringliteral_a5c1362ddf12293b907d8907d79f16e40792a7ddc4f09ee6d70cfec4ad443305","typeString":"literal_string \"Too much requested\""},"value":"Too much requested"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a5c1362ddf12293b907d8907d79f16e40792a7ddc4f09ee6d70cfec4ad443305","typeString":"literal_string \"Too much requested\""}],"id":7787,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8023:7:45","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8023:65:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7794,"nodeType":"ExpressionStatement","src":"8023:65:45"},{"expression":{"id":7797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7795,"name":"amountInCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7226,"src":"8176:14:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7796,"name":"DEFAULT_AMOUNT_IN_CACHED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7222,"src":"8193:24:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8176:41:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7798,"nodeType":"ExpressionStatement","src":"8176:41:45"}]},"documentation":{"id":7751,"nodeType":"StructuredDocumentation","src":"7490:27:45","text":"@inheritdoc ISwapRouter"},"functionSelector":"db3e2198","id":7800,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":7757,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7753,"src":"7644:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$10113_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":10106,"src":"7644:15:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7759,"modifierName":{"id":7756,"name":"checkDeadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8810,"src":"7630:13:45","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"7630:30:45"}],"name":"exactOutputSingle","nodeType":"FunctionDefinition","overrides":{"id":7755,"nodeType":"OverrideSpecifier","overrides":[],"src":"7621:8:45"},"parameters":{"id":7754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7753,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":7800,"src":"7558:39:45","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$10113_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"},"typeName":{"id":7752,"name":"ExactOutputSingleParams","nodeType":"UserDefinedTypeName","referencedDeclaration":10113,"src":"7558:23:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$10113_storage_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"}},"visibility":"internal"}],"src":"7548:55:45"},"returnParameters":{"id":7762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7761,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":7800,"src":"7670:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7760,"name":"uint256","nodeType":"ElementaryTypeName","src":"7670:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7669:18:45"},"scope":7845,"src":"7522:702:45","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[10140],"body":{"id":7843,"nodeType":"Block","src":"8416:572:45","statements":[{"expression":{"arguments":[{"expression":{"id":7814,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7803,"src":"8678:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$10132_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams calldata"}},"id":7815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":10129,"src":"8678:16:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7816,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7803,"src":"8708:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$10132_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams calldata"}},"id":7817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":10125,"src":"8708:16:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":7818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8738:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"expression":{"id":7820,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7803,"src":"8777:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$10132_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams calldata"}},"id":7821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"path","nodeType":"MemberAccess","referencedDeclaration":10123,"src":"8777:11:45","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":7822,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8797:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8797:10:45","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":7819,"name":"SwapCallbackData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7269,"src":"8753:16:45","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapCallbackData_$7269_storage_ptr_$","typeString":"type(struct SwapRouter.SwapCallbackData storage pointer)"}},"id":7824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["path","payer"],"nodeType":"FunctionCall","src":"8753:56:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_struct$_SwapCallbackData_$7269_memory_ptr","typeString":"struct SwapRouter.SwapCallbackData memory"}],"id":7813,"name":"exactOutputInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7750,"src":"8645:19:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint160_$_t_struct$_SwapCallbackData_$7269_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,address,uint160,struct SwapRouter.SwapCallbackData memory) returns (uint256)"}},"id":7825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8645:174:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7826,"nodeType":"ExpressionStatement","src":"8645:174:45"},{"expression":{"id":7829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7827,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7811,"src":"8830:8:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7828,"name":"amountInCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7226,"src":"8841:14:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8830:25:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7830,"nodeType":"ExpressionStatement","src":"8830:25:45"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7832,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7811,"src":"8873:8:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":7833,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7803,"src":"8885:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$10132_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams calldata"}},"id":7834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amountInMaximum","nodeType":"MemberAccess","referencedDeclaration":10131,"src":"8885:22:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8873:34:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6f206d75636820726571756573746564","id":7836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8909:20:45","typeDescriptions":{"typeIdentifier":"t_stringliteral_a5c1362ddf12293b907d8907d79f16e40792a7ddc4f09ee6d70cfec4ad443305","typeString":"literal_string \"Too much requested\""},"value":"Too much requested"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a5c1362ddf12293b907d8907d79f16e40792a7ddc4f09ee6d70cfec4ad443305","typeString":"literal_string \"Too much requested\""}],"id":7831,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8865:7:45","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8865:65:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7838,"nodeType":"ExpressionStatement","src":"8865:65:45"},{"expression":{"id":7841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7839,"name":"amountInCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7226,"src":"8940:14:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7840,"name":"DEFAULT_AMOUNT_IN_CACHED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7222,"src":"8957:24:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8940:41:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7842,"nodeType":"ExpressionStatement","src":"8940:41:45"}]},"documentation":{"id":7801,"nodeType":"StructuredDocumentation","src":"8230:27:45","text":"@inheritdoc ISwapRouter"},"functionSelector":"f28c0498","id":7844,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":7807,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7803,"src":"8372:6:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$10132_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams calldata"}},"id":7808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":10127,"src":"8372:15:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7809,"modifierName":{"id":7806,"name":"checkDeadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8810,"src":"8358:13:45","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"8358:30:45"}],"name":"exactOutput","nodeType":"FunctionDefinition","overrides":{"id":7805,"nodeType":"OverrideSpecifier","overrides":[],"src":"8349:8:45"},"parameters":{"id":7804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7803,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":7844,"src":"8292:33:45","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$10132_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams"},"typeName":{"id":7802,"name":"ExactOutputParams","nodeType":"UserDefinedTypeName","referencedDeclaration":10132,"src":"8292:17:45","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$10132_storage_ptr","typeString":"struct ISwapRouter.ExactOutputParams"}},"visibility":"internal"}],"src":"8282:49:45"},"returnParameters":{"id":7812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7811,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":7844,"src":"8398:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7810,"name":"uint256","nodeType":"ElementaryTypeName","src":"8398:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8397:18:45"},"scope":7845,"src":"8262:726:45","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":7846,"src":"948:8042:45"}],"src":"45:8946:45"},"id":45},"contracts/base/BlockTimestamp.sol":{"ast":{"absolutePath":"contracts/base/BlockTimestamp.sol","exportedSymbols":{"BlockTimestamp":[7859]},"id":7860,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":7847,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:46"},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":7848,"nodeType":"StructuredDocumentation","src":"70:100:46","text":"@title Function for getting block timestamp\n @dev Base contract that is overridden for tests"},"fullyImplemented":true,"id":7859,"linearizedBaseContracts":[7859],"name":"BlockTimestamp","nodeType":"ContractDefinition","nodes":[{"body":{"id":7857,"nodeType":"Block","src":"386:39:46","statements":[{"expression":{"expression":{"id":7854,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"403:5:46","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":7855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"403:15:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7853,"id":7856,"nodeType":"Return","src":"396:22:46"}]},"documentation":{"id":7849,"nodeType":"StructuredDocumentation","src":"209:105:46","text":"@dev Method that exists purely to be overridden for tests\n @return The current block timestamp"},"id":7858,"implemented":true,"kind":"function","modifiers":[],"name":"_blockTimestamp","nodeType":"FunctionDefinition","parameters":{"id":7850,"nodeType":"ParameterList","parameters":[],"src":"343:2:46"},"returnParameters":{"id":7853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7852,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7858,"src":"377:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7851,"name":"uint256","nodeType":"ElementaryTypeName","src":"377:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"376:9:46"},"scope":7859,"src":"319:106:46","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":7860,"src":"170:257:46"}],"src":"45:383:46"},"id":46},"contracts/base/ERC721Permit.sol":{"ast":{"absolutePath":"contracts/base/ERC721Permit.sol","exportedSymbols":{"Address":[5615],"BlockTimestamp":[7859],"ChainId":[12137],"Context":[5638],"ERC165":[3056],"ERC721":[5127],"ERC721Permit":[8069],"EnumerableMap":[6248],"EnumerableSet":[6740],"IERC1271":[10420],"IERC165":[3068],"IERC721":[5243],"IERC721Enumerable":[5274],"IERC721Metadata":[5301],"IERC721Permit":[9511],"IERC721Receiver":[5319],"SafeMath":[3423],"Strings":[6827]},"id":8070,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":7861,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:47"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","file":"@openzeppelin/contracts/token/ERC721/ERC721.sol","id":7862,"nodeType":"ImportDirective","scope":8070,"sourceUnit":5128,"src":"70:57:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":7863,"nodeType":"ImportDirective","scope":8070,"sourceUnit":5616,"src":"128:51:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/ChainId.sol","file":"../libraries/ChainId.sol","id":7864,"nodeType":"ImportDirective","scope":8070,"sourceUnit":12138,"src":"181:34:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/external/IERC1271.sol","file":"../interfaces/external/IERC1271.sol","id":7865,"nodeType":"ImportDirective","scope":8070,"sourceUnit":10421,"src":"216:45:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IERC721Permit.sol","file":"../interfaces/IERC721Permit.sol","id":7866,"nodeType":"ImportDirective","scope":8070,"sourceUnit":9512,"src":"262:41:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/BlockTimestamp.sol","file":"./BlockTimestamp.sol","id":7867,"nodeType":"ImportDirective","scope":8070,"sourceUnit":7860,"src":"304:30:47","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":7869,"name":"BlockTimestamp","nodeType":"UserDefinedTypeName","referencedDeclaration":7859,"src":"482:14:47","typeDescriptions":{"typeIdentifier":"t_contract$_BlockTimestamp_$7859","typeString":"contract BlockTimestamp"}},"id":7870,"nodeType":"InheritanceSpecifier","src":"482:14:47"},{"baseName":{"id":7871,"name":"ERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":5127,"src":"498:6:47","typeDescriptions":{"typeIdentifier":"t_contract$_ERC721_$5127","typeString":"contract ERC721"}},"id":7872,"nodeType":"InheritanceSpecifier","src":"498:6:47"},{"baseName":{"id":7873,"name":"IERC721Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":9511,"src":"506:13:47","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Permit_$9511","typeString":"contract IERC721Permit"}},"id":7874,"nodeType":"InheritanceSpecifier","src":"506:13:47"}],"contractDependencies":[3056,3068,5127,5243,5274,5301,5638,7859,9511],"contractKind":"contract","documentation":{"id":7868,"nodeType":"StructuredDocumentation","src":"336:112:47","text":"@title ERC721 with permit\n @notice Nonfungible tokens that support an approve via signature, i.e. permit"},"fullyImplemented":false,"id":8069,"linearizedBaseContracts":[8069,9511,5127,5274,5301,5243,3056,3068,5638,7859],"name":"ERC721Permit","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7875,"nodeType":"StructuredDocumentation","src":"526:99:47","text":"@dev Gets the current nonce for a token ID and then increments it, returning the original value"},"id":7882,"implemented":false,"kind":"function","modifiers":[],"name":"_getAndIncrementNonce","nodeType":"FunctionDefinition","parameters":{"id":7878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7877,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":7882,"src":"661:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7876,"name":"uint256","nodeType":"ElementaryTypeName","src":"661:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"660:17:47"},"returnParameters":{"id":7881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7880,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7882,"src":"704:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7879,"name":"uint256","nodeType":"ElementaryTypeName","src":"704:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"703:9:47"},"scope":8069,"src":"630:83:47","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":7883,"nodeType":"StructuredDocumentation","src":"719:71:47","text":"@dev The hash of the name used in the permit signature verification"},"id":7885,"mutability":"immutable","name":"nameHash","nodeType":"VariableDeclaration","scope":8069,"src":"795:34:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7884,"name":"bytes32","nodeType":"ElementaryTypeName","src":"795:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"documentation":{"id":7886,"nodeType":"StructuredDocumentation","src":"836:81:47","text":"@dev The hash of the version string used in the permit signature verification"},"id":7888,"mutability":"immutable","name":"versionHash","nodeType":"VariableDeclaration","scope":8069,"src":"922:37:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7887,"name":"bytes32","nodeType":"ElementaryTypeName","src":"922:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":7920,"nodeType":"Block","src":"1123:101:47","statements":[{"expression":{"id":7909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7902,"name":"nameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7885,"src":"1133:8:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":7906,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7891,"src":"1160:5:47","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7905,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1154:5:47","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7904,"name":"bytes","nodeType":"ElementaryTypeName","src":"1154:5:47","typeDescriptions":{}}},"id":7907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1154:12:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7903,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1144:9:47","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1144:23:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1133:34:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7910,"nodeType":"ExpressionStatement","src":"1133:34:47"},{"expression":{"id":7918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7911,"name":"versionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7888,"src":"1177:11:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":7915,"name":"version_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7895,"src":"1207:8:47","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7914,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1201:5:47","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7913,"name":"bytes","nodeType":"ElementaryTypeName","src":"1201:5:47","typeDescriptions":{}}},"id":7916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1201:15:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7912,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1191:9:47","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1191:26:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1177:40:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7919,"nodeType":"ExpressionStatement","src":"1177:40:47"}]},"documentation":{"id":7889,"nodeType":"StructuredDocumentation","src":"966:49:47","text":"@notice Computes the nameHash and versionHash"},"id":7921,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":7898,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7891,"src":"1107:5:47","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":7899,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7893,"src":"1114:7:47","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":7900,"modifierName":{"id":7897,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5127,"src":"1100:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$5127_$","typeString":"type(contract ERC721)"}},"nodeType":"ModifierInvocation","src":"1100:22:47"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":7896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7891,"mutability":"mutable","name":"name_","nodeType":"VariableDeclaration","scope":7921,"src":"1032:19:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7890,"name":"string","nodeType":"ElementaryTypeName","src":"1032:6:47","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7893,"mutability":"mutable","name":"symbol_","nodeType":"VariableDeclaration","scope":7921,"src":"1053:21:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7892,"name":"string","nodeType":"ElementaryTypeName","src":"1053:6:47","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7895,"mutability":"mutable","name":"version_","nodeType":"VariableDeclaration","scope":7921,"src":"1076:22:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7894,"name":"string","nodeType":"ElementaryTypeName","src":"1076:6:47","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1031:68:47"},"returnParameters":{"id":7901,"nodeType":"ParameterList","parameters":[],"src":"1123:0:47"},"scope":8069,"src":"1020:204:47","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[9494],"body":{"id":7944,"nodeType":"Block","src":"1331:445:47","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"307838623733633363363962623866653364353132656363346366373539636337393233396637623137396230666661636161396137356435323262333934303066","id":7931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1538:66:47","typeDescriptions":{"typeIdentifier":"t_rational_63076024560530113402979550242307453568063438748328787417531900361828837441551_by_1","typeString":"int_const 6307...(69 digits omitted)...1551"},"value":"0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f"},{"id":7932,"name":"nameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7885,"src":"1626:8:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7933,"name":"versionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7888,"src":"1656:11:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7934,"name":"ChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12137,"src":"1689:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChainId_$12137_$","typeString":"type(library ChainId)"}},"id":7935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"get","nodeType":"MemberAccess","referencedDeclaration":12136,"src":"1689:11:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":7936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1689:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":7939,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1732:4:47","typeDescriptions":{"typeIdentifier":"t_contract$_ERC721Permit_$8069","typeString":"contract ERC721Permit"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC721Permit_$8069","typeString":"contract ERC721Permit"}],"id":7938,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1724:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7937,"name":"address","nodeType":"ElementaryTypeName","src":"1724:7:47","typeDescriptions":{}}},"id":7940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1724:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_63076024560530113402979550242307453568063438748328787417531900361828837441551_by_1","typeString":"int_const 6307...(69 digits omitted)...1551"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7929,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1387:3:47","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7930,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1387:10:47","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1387:368:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7928,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1360:9:47","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1360:409:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7927,"id":7943,"nodeType":"Return","src":"1341:428:47"}]},"documentation":{"id":7922,"nodeType":"StructuredDocumentation","src":"1230:29:47","text":"@inheritdoc IERC721Permit"},"functionSelector":"3644e515","id":7945,"implemented":true,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","overrides":{"id":7924,"nodeType":"OverrideSpecifier","overrides":[],"src":"1304:8:47"},"parameters":{"id":7923,"nodeType":"ParameterList","parameters":[],"src":"1289:2:47"},"returnParameters":{"id":7927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7926,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7945,"src":"1322:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7925,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1322:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1321:9:47"},"scope":8069,"src":"1264:512:47","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[9488],"constant":true,"documentation":{"id":7946,"nodeType":"StructuredDocumentation","src":"1782:145:47","text":"@inheritdoc IERC721Permit\n @dev Value is equal to keccak256(\"Permit(address spender,uint256 tokenId,uint256 nonce,uint256 deadline)\");"},"functionSelector":"30adf81f","id":7950,"mutability":"constant","name":"PERMIT_TYPEHASH","nodeType":"VariableDeclaration","overrides":{"id":7948,"nodeType":"OverrideSpecifier","overrides":[],"src":"1956:8:47"},"scope":8069,"src":"1932:125:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7947,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1932:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834396563663333336535623863393563343066646166633935633161643133366538393134613866623535653964633862623031656161383361326466396164","id":7949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1991:66:47","typeDescriptions":{"typeIdentifier":"t_rational_33437492377378226760087498811281282659873828549087316441254475749622436198829_by_1","typeString":"int_const 3343...(69 digits omitted)...8829"},"value":"0x49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad"},"visibility":"public"},{"baseFunctions":[9510],"body":{"id":8067,"nodeType":"Block","src":"2277:895:47","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":7968,"name":"_blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"2295:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":7969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2295:17:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":7970,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7957,"src":"2316:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2295:29:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5065726d69742065787069726564","id":7972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2326:16:47","typeDescriptions":{"typeIdentifier":"t_stringliteral_53b11e5c6d92c4ee8dcdc3fa4b1e917d15797fc920d394f51957eb1860bab31a","typeString":"literal_string \"Permit expired\""},"value":"Permit expired"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_53b11e5c6d92c4ee8dcdc3fa4b1e917d15797fc920d394f51957eb1860bab31a","typeString":"literal_string \"Permit expired\""}],"id":7967,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2287:7:47","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2287:56:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7974,"nodeType":"ExpressionStatement","src":"2287:56:47"},{"assignments":[7976],"declarations":[{"constant":false,"id":7976,"mutability":"mutable","name":"digest","nodeType":"VariableDeclaration","scope":8067,"src":"2354:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7975,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2354:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7997,"initialValue":{"arguments":[{"arguments":[{"hexValue":"1901","id":7980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2428:10:47","typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},"value":"\u0019\u0001"},{"arguments":[],"expression":{"argumentTypes":[],"id":7981,"name":"DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7945,"src":"2456:16:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":7982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2456:18:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"id":7986,"name":"PERMIT_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7950,"src":"2513:15:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7987,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7953,"src":"2530:7:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7988,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7955,"src":"2539:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":7990,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7955,"src":"2570:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7989,"name":"_getAndIncrementNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7882,"src":"2548:21:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":7991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2548:30:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7992,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7957,"src":"2580:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7984,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2502:3:47","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7985,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2502:10:47","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2502:87:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7983,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2492:9:47","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2492:98:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":7978,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2394:3:47","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7979,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"2394:16:47","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2394:210:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7977,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2371:9:47","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2371:243:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2354:260:47"},{"assignments":[7999],"declarations":[{"constant":false,"id":7999,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":8067,"src":"2624:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7998,"name":"address","nodeType":"ElementaryTypeName","src":"2624:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8003,"initialValue":{"arguments":[{"id":8001,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7955,"src":"2648:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8000,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4331,"src":"2640:7:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":8002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2640:16:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2624:32:47"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8005,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7953,"src":"2674:7:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8006,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7999,"src":"2685:5:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2674:16:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732315065726d69743a20617070726f76616c20746f2063757272656e74206f776e6572","id":8008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2692:41:47","typeDescriptions":{"typeIdentifier":"t_stringliteral_3d02c5907340bfc85b183184e77cccd9fa6d10edb2b946e292395cc502b0f584","typeString":"literal_string \"ERC721Permit: approval to current owner\""},"value":"ERC721Permit: approval to current owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3d02c5907340bfc85b183184e77cccd9fa6d10edb2b946e292395cc502b0f584","typeString":"literal_string \"ERC721Permit: approval to current owner\""}],"id":8004,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2666:7:47","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2666:68:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8010,"nodeType":"ExpressionStatement","src":"2666:68:47"},{"condition":{"arguments":[{"id":8013,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7999,"src":"2768:5:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8011,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5615,"src":"2749:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$5615_$","typeString":"type(library Address)"}},"id":8012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":5339,"src":"2749:18:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":8014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2749:25:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8060,"nodeType":"Block","src":"2913:216:47","statements":[{"assignments":[8035],"declarations":[{"constant":false,"id":8035,"mutability":"mutable","name":"recoveredAddress","nodeType":"VariableDeclaration","scope":8060,"src":"2927:24:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8034,"name":"address","nodeType":"ElementaryTypeName","src":"2927:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8042,"initialValue":{"arguments":[{"id":8037,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7976,"src":"2964:6:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8038,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7959,"src":"2972:1:47","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":8039,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7961,"src":"2975:1:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8040,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7963,"src":"2978:1:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8036,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"2954:9:47","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":8041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2954:26:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2927:53:47"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8044,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8035,"src":"3002:16:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":8047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3030:1:47","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":8046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3022:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8045,"name":"address","nodeType":"ElementaryTypeName","src":"3022:7:47","typeDescriptions":{}}},"id":8048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3022:10:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3002:30:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964207369676e6174757265","id":8050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3034:19:47","typeDescriptions":{"typeIdentifier":"t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7","typeString":"literal_string \"Invalid signature\""},"value":"Invalid signature"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7","typeString":"literal_string \"Invalid signature\""}],"id":8043,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2994:7:47","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2994:60:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8052,"nodeType":"ExpressionStatement","src":"2994:60:47"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8054,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8035,"src":"3076:16:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8055,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7999,"src":"3096:5:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3076:25:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e617574686f72697a6564","id":8057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3103:14:47","typeDescriptions":{"typeIdentifier":"t_stringliteral_1b2638459828301e8cd6c7c02856073bacf975379e0867f689bb14feacb780c5","typeString":"literal_string \"Unauthorized\""},"value":"Unauthorized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1b2638459828301e8cd6c7c02856073bacf975379e0867f689bb14feacb780c5","typeString":"literal_string \"Unauthorized\""}],"id":8053,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3068:7:47","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3068:50:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8059,"nodeType":"ExpressionStatement","src":"3068:50:47"}]},"id":8061,"nodeType":"IfStatement","src":"2745:384:47","trueBody":{"id":8033,"nodeType":"Block","src":"2776:131:47","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":8029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8020,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7976,"src":"2831:6:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":8023,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7961,"src":"2856:1:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8024,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7963,"src":"2859:1:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8025,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7959,"src":"2862:1:47","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":8021,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2839:3:47","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8022,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"2839:16:47","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2839:25:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":8017,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7999,"src":"2807:5:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8016,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10420,"src":"2798:8:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1271_$10420_$","typeString":"type(contract IERC1271)"}},"id":8018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2798:15:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1271_$10420","typeString":"contract IERC1271"}},"id":8019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isValidSignature","nodeType":"MemberAccess","referencedDeclaration":10419,"src":"2798:32:47","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (bytes32,bytes memory) view external returns (bytes4)"}},"id":8027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2798:67:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783136323662613765","id":8028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2869:10:47","typeDescriptions":{"typeIdentifier":"t_rational_371636862_by_1","typeString":"int_const 371636862"},"value":"0x1626ba7e"},"src":"2798:81:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e617574686f72697a6564","id":8030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2881:14:47","typeDescriptions":{"typeIdentifier":"t_stringliteral_1b2638459828301e8cd6c7c02856073bacf975379e0867f689bb14feacb780c5","typeString":"literal_string \"Unauthorized\""},"value":"Unauthorized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1b2638459828301e8cd6c7c02856073bacf975379e0867f689bb14feacb780c5","typeString":"literal_string \"Unauthorized\""}],"id":8015,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2790:7:47","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2790:106:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8032,"nodeType":"ExpressionStatement","src":"2790:106:47"}]}},{"expression":{"arguments":[{"id":8063,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7953,"src":"3148:7:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8064,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7955,"src":"3157:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8062,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5115,"src":"3139:8:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3139:26:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8066,"nodeType":"ExpressionStatement","src":"3139:26:47"}]},"documentation":{"id":7951,"nodeType":"StructuredDocumentation","src":"2064:29:47","text":"@inheritdoc IERC721Permit"},"functionSelector":"7ac2ff7b","id":8068,"implemented":true,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","overrides":{"id":7965,"nodeType":"OverrideSpecifier","overrides":[],"src":"2268:8:47"},"parameters":{"id":7964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7953,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":8068,"src":"2123:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7952,"name":"address","nodeType":"ElementaryTypeName","src":"2123:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7955,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":8068,"src":"2148:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7954,"name":"uint256","nodeType":"ElementaryTypeName","src":"2148:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7957,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":8068,"src":"2173:16:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7956,"name":"uint256","nodeType":"ElementaryTypeName","src":"2173:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7959,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":8068,"src":"2199:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7958,"name":"uint8","nodeType":"ElementaryTypeName","src":"2199:5:47","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":7961,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":8068,"src":"2216:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7960,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2216:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7963,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":8068,"src":"2235:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7962,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2235:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2113:137:47"},"returnParameters":{"id":7966,"nodeType":"ParameterList","parameters":[],"src":"2277:0:47"},"scope":8069,"src":"2098:1074:47","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":8070,"src":"448:2726:47"}],"src":"45:3130:47"},"id":47},"contracts/base/LiquidityManagement.sol":{"ast":{"absolutePath":"contracts/base/LiquidityManagement.sol","exportedSymbols":{"CallbackValidation":[12125],"FixedPoint96":[868],"FullMath":[1041],"IAstraCLFactory":[82],"IAstraCLMintCallback":[138],"IAstraCLPool":[110],"IAstraCLPoolActions":[248],"IAstraCLPoolDerivedState":[279],"IAstraCLPoolEvents":[398],"IAstraCLPoolImmutables":[438],"IAstraCLPoolOwnerActions":[464],"IAstraCLPoolState":[572],"IERC20":[4183],"IPeripheryImmutableState":[9751],"IPeripheryPayments":[9777],"ISAMB":[10461],"LiquidityAmounts":[12612],"LiquidityManagement":[8284],"PeripheryImmutableState":[8400],"PeripheryPayments":[8610],"PoolAddress":[14364],"TickMath":[2536],"TransferHelper":[15676]},"id":8285,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8071,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:48"},{"id":8072,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"69:19:48"},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol","file":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol","id":8073,"nodeType":"ImportDirective","scope":8285,"sourceUnit":83,"src":"143:72:48","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol","file":"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol","id":8074,"nodeType":"ImportDirective","scope":8285,"sourceUnit":139,"src":"269:86:48","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/TickMath.sol","file":"@airdao/astra-cl-core/contracts/libraries/TickMath.sol","id":8075,"nodeType":"ImportDirective","scope":8285,"sourceUnit":2537,"src":"409:64:48","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/PoolAddress.sol","file":"../libraries/PoolAddress.sol","id":8076,"nodeType":"ImportDirective","scope":8285,"sourceUnit":14365,"src":"475:38:48","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/CallbackValidation.sol","file":"../libraries/CallbackValidation.sol","id":8077,"nodeType":"ImportDirective","scope":8285,"sourceUnit":12126,"src":"514:45:48","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/LiquidityAmounts.sol","file":"../libraries/LiquidityAmounts.sol","id":8078,"nodeType":"ImportDirective","scope":8285,"sourceUnit":12613,"src":"560:43:48","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/PeripheryPayments.sol","file":"./PeripheryPayments.sol","id":8079,"nodeType":"ImportDirective","scope":8285,"sourceUnit":8611,"src":"605:33:48","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/PeripheryImmutableState.sol","file":"./PeripheryImmutableState.sol","id":8080,"nodeType":"ImportDirective","scope":8285,"sourceUnit":8401,"src":"639:39:48","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":8082,"name":"IAstraCLMintCallback","nodeType":"UserDefinedTypeName","referencedDeclaration":138,"src":"839:20:48","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLMintCallback_$138","typeString":"contract IAstraCLMintCallback"}},"id":8083,"nodeType":"InheritanceSpecifier","src":"839:20:48"},{"baseName":{"id":8084,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":8400,"src":"861:23:48","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$8400","typeString":"contract PeripheryImmutableState"}},"id":8085,"nodeType":"InheritanceSpecifier","src":"861:23:48"},{"baseName":{"id":8086,"name":"PeripheryPayments","nodeType":"UserDefinedTypeName","referencedDeclaration":8610,"src":"886:17:48","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$8610","typeString":"contract PeripheryPayments"}},"id":8087,"nodeType":"InheritanceSpecifier","src":"886:17:48"}],"contractDependencies":[138,8400,8610,9751,9777],"contractKind":"contract","documentation":{"id":8081,"nodeType":"StructuredDocumentation","src":"680:118:48","text":"@title Liquidity management functions\n @notice Internal functions for safely managing liquidity in AstraDEX CL"},"fullyImplemented":false,"id":8284,"linearizedBaseContracts":[8284,8610,8400,9751,9777,138],"name":"LiquidityManagement","nodeType":"ContractDefinition","nodes":[{"canonicalName":"LiquidityManagement.MintCallbackData","id":8092,"members":[{"constant":false,"id":8089,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":8092,"src":"944:27:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_storage_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":8088,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":14285,"src":"944:19:48","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"},{"constant":false,"id":8091,"mutability":"mutable","name":"payer","nodeType":"VariableDeclaration","scope":8092,"src":"981:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8090,"name":"address","nodeType":"ElementaryTypeName","src":"981:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"MintCallbackData","nodeType":"StructDefinition","scope":8284,"src":"910:91:48","visibility":"public"},{"baseFunctions":[137],"body":{"id":8150,"nodeType":"Block","src":"1158:353:48","statements":[{"assignments":[8104],"declarations":[{"constant":false,"id":8104,"mutability":"mutable","name":"decoded","nodeType":"VariableDeclaration","scope":8150,"src":"1168:31:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$8092_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData"},"typeName":{"id":8103,"name":"MintCallbackData","nodeType":"UserDefinedTypeName","referencedDeclaration":8092,"src":"1168:16:48","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$8092_storage_ptr","typeString":"struct LiquidityManagement.MintCallbackData"}},"visibility":"internal"}],"id":8111,"initialValue":{"arguments":[{"id":8107,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8099,"src":"1213:4:48","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":8108,"name":"MintCallbackData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8092,"src":"1220:16:48","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MintCallbackData_$8092_storage_ptr_$","typeString":"type(struct LiquidityManagement.MintCallbackData storage pointer)"}}],"id":8109,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1219:18:48","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MintCallbackData_$8092_storage_ptr_$","typeString":"type(struct LiquidityManagement.MintCallbackData storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_type$_t_struct$_MintCallbackData_$8092_storage_ptr_$","typeString":"type(struct LiquidityManagement.MintCallbackData storage pointer)"}],"expression":{"id":8105,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1202:3:48","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8106,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1202:10:48","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":8110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1202:36:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$8092_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"nodeType":"VariableDeclarationStatement","src":"1168:70:48"},{"expression":{"arguments":[{"id":8115,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8379,"src":"1282:7:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":8116,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8104,"src":"1291:7:48","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$8092_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"id":8117,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolKey","nodeType":"MemberAccess","referencedDeclaration":8089,"src":"1291:15:48","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":8112,"name":"CallbackValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12125,"src":"1248:18:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CallbackValidation_$12125_$","typeString":"type(library CallbackValidation)"}},"id":8114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"verifyCallback","nodeType":"MemberAccess","referencedDeclaration":12124,"src":"1248:33:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_struct$_PoolKey_$14285_memory_ptr_$returns$_t_contract$_IAstraCLPool_$110_$","typeString":"function (address,struct PoolAddress.PoolKey memory) view returns (contract IAstraCLPool)"}},"id":8118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1248:59:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":8119,"nodeType":"ExpressionStatement","src":"1248:59:48"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8120,"name":"amount0Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8095,"src":"1322:11:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1336:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1322:15:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8134,"nodeType":"IfStatement","src":"1318:88:48","trueBody":{"expression":{"arguments":[{"expression":{"expression":{"id":8124,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8104,"src":"1343:7:48","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$8092_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"id":8125,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolKey","nodeType":"MemberAccess","referencedDeclaration":8089,"src":"1343:15:48","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":8126,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":14280,"src":"1343:22:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":8127,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8104,"src":"1367:7:48","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$8092_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"id":8128,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payer","nodeType":"MemberAccess","referencedDeclaration":8091,"src":"1367:13:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":8129,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1382:3:48","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1382:10:48","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":8131,"name":"amount0Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8095,"src":"1394:11:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8123,"name":"pay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8609,"src":"1339:3:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":8132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1339:67:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8133,"nodeType":"ExpressionStatement","src":"1339:67:48"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8135,"name":"amount1Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8097,"src":"1420:11:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1434:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1420:15:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8149,"nodeType":"IfStatement","src":"1416:88:48","trueBody":{"expression":{"arguments":[{"expression":{"expression":{"id":8139,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8104,"src":"1441:7:48","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$8092_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"id":8140,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolKey","nodeType":"MemberAccess","referencedDeclaration":8089,"src":"1441:15:48","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":8141,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":14282,"src":"1441:22:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":8142,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8104,"src":"1465:7:48","typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$8092_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}},"id":8143,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payer","nodeType":"MemberAccess","referencedDeclaration":8091,"src":"1465:13:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":8144,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1480:3:48","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1480:10:48","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":8146,"name":"amount1Owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8097,"src":"1492:11:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8138,"name":"pay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8609,"src":"1437:3:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":8147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1437:67:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8148,"nodeType":"ExpressionStatement","src":"1437:67:48"}}]},"documentation":{"id":8093,"nodeType":"StructuredDocumentation","src":"1007:36:48","text":"@inheritdoc IAstraCLMintCallback"},"functionSelector":"4cb42d2d","id":8151,"implemented":true,"kind":"function","modifiers":[],"name":"astraCLMintCallback","nodeType":"FunctionDefinition","overrides":{"id":8101,"nodeType":"OverrideSpecifier","overrides":[],"src":"1149:8:48"},"parameters":{"id":8100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8095,"mutability":"mutable","name":"amount0Owed","nodeType":"VariableDeclaration","scope":8151,"src":"1077:19:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8094,"name":"uint256","nodeType":"ElementaryTypeName","src":"1077:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8097,"mutability":"mutable","name":"amount1Owed","nodeType":"VariableDeclaration","scope":8151,"src":"1098:19:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8096,"name":"uint256","nodeType":"ElementaryTypeName","src":"1098:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8099,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":8151,"src":"1119:19:48","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":8098,"name":"bytes","nodeType":"ElementaryTypeName","src":"1119:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1076:63:48"},"returnParameters":{"id":8102,"nodeType":"ParameterList","parameters":[],"src":"1158:0:48"},"scope":8284,"src":"1048:463:48","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"LiquidityManagement.AddLiquidityParams","id":8172,"members":[{"constant":false,"id":8153,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":8172,"src":"1553:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8152,"name":"address","nodeType":"ElementaryTypeName","src":"1553:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8155,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":8172,"src":"1577:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8154,"name":"address","nodeType":"ElementaryTypeName","src":"1577:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8157,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":8172,"src":"1601:10:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":8156,"name":"uint24","nodeType":"ElementaryTypeName","src":"1601:6:48","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":8159,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":8172,"src":"1621:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8158,"name":"address","nodeType":"ElementaryTypeName","src":"1621:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8161,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":8172,"src":"1648:15:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":8160,"name":"int24","nodeType":"ElementaryTypeName","src":"1648:5:48","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":8163,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":8172,"src":"1673:15:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":8162,"name":"int24","nodeType":"ElementaryTypeName","src":"1673:5:48","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":8165,"mutability":"mutable","name":"amount0Desired","nodeType":"VariableDeclaration","scope":8172,"src":"1698:22:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8164,"name":"uint256","nodeType":"ElementaryTypeName","src":"1698:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8167,"mutability":"mutable","name":"amount1Desired","nodeType":"VariableDeclaration","scope":8172,"src":"1730:22:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8166,"name":"uint256","nodeType":"ElementaryTypeName","src":"1730:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8169,"mutability":"mutable","name":"amount0Min","nodeType":"VariableDeclaration","scope":8172,"src":"1762:18:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8168,"name":"uint256","nodeType":"ElementaryTypeName","src":"1762:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8171,"mutability":"mutable","name":"amount1Min","nodeType":"VariableDeclaration","scope":8172,"src":"1790:18:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8170,"name":"uint256","nodeType":"ElementaryTypeName","src":"1790:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"AddLiquidityParams","nodeType":"StructDefinition","scope":8284,"src":"1517:298:48","visibility":"public"},{"body":{"id":8282,"nodeType":"Block","src":"2034:1149:48","statements":[{"assignments":[8189],"declarations":[{"constant":false,"id":8189,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":8282,"src":"2044:34:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":8188,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":14285,"src":"2044:19:48","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"id":8199,"initialValue":{"arguments":[{"expression":{"id":8192,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"2123:6:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$8172_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":8193,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":8153,"src":"2123:13:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":8194,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"2158:6:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$8172_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":8195,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":8155,"src":"2158:13:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":8196,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"2190:6:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$8172_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":8197,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":8157,"src":"2190:10:48","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":8190,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14364,"src":"2081:11:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$14364_$","typeString":"type(library PoolAddress)"}},"id":8191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PoolKey","nodeType":"MemberAccess","referencedDeclaration":14285,"src":"2081:19:48","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolKey_$14285_storage_ptr_$","typeString":"type(struct PoolAddress.PoolKey storage pointer)"}},"id":8198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee"],"nodeType":"FunctionCall","src":"2081:130:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"nodeType":"VariableDeclarationStatement","src":"2044:167:48"},{"expression":{"id":8208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8200,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8184,"src":"2222:4:48","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":8204,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8379,"src":"2269:7:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8205,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8189,"src":"2278:7:48","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":8202,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14364,"src":"2242:11:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$14364_$","typeString":"type(library PoolAddress)"}},"id":8203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":14363,"src":"2242:26:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$14285_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":8206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2242:44:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8201,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"2229:12:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":8207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2229:58:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"src":"2222:65:48","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":8209,"nodeType":"ExpressionStatement","src":"2222:65:48"},{"id":8245,"nodeType":"Block","src":"2338:490:48","statements":[{"assignments":[8211,null,null,null,null,null,null],"declarations":[{"constant":false,"id":8211,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":8245,"src":"2353:20:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":8210,"name":"uint160","nodeType":"ElementaryTypeName","src":"2353:7:48","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},null,null,null,null,null,null],"id":8215,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8212,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8184,"src":"2389:4:48","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":8213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":485,"src":"2389:10:48","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$","typeString":"function () view external returns (uint160,int24,uint16,uint16,uint16,uint8,bool)"}},"id":8214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2389:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$","typeString":"tuple(uint160,int24,uint16,uint16,uint16,uint8,bool)"}},"nodeType":"VariableDeclarationStatement","src":"2352:49:48"},{"assignments":[8217],"declarations":[{"constant":false,"id":8217,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":8245,"src":"2415:21:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":8216,"name":"uint160","nodeType":"ElementaryTypeName","src":"2415:7:48","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":8223,"initialValue":{"arguments":[{"expression":{"id":8220,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"2467:6:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$8172_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":8221,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":8161,"src":"2467:16:48","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":8218,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"2439:8:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$2536_$","typeString":"type(library TickMath)"}},"id":8219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":2396,"src":"2439:27:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":8222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2439:45:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"2415:69:48"},{"assignments":[8225],"declarations":[{"constant":false,"id":8225,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":8245,"src":"2498:21:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":8224,"name":"uint160","nodeType":"ElementaryTypeName","src":"2498:7:48","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":8231,"initialValue":{"arguments":[{"expression":{"id":8228,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"2550:6:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$8172_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":8229,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":8163,"src":"2550:16:48","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":8226,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"2522:8:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$2536_$","typeString":"type(library TickMath)"}},"id":8227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":2396,"src":"2522:27:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":8230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2522:45:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"2498:69:48"},{"expression":{"id":8243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8232,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8178,"src":"2582:9:48","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8235,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8211,"src":"2651:12:48","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8236,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8217,"src":"2681:13:48","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":8237,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8225,"src":"2712:13:48","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":8238,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"2743:6:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$8172_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":8239,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount0Desired","nodeType":"MemberAccess","referencedDeclaration":8165,"src":"2743:21:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":8240,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"2782:6:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$8172_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":8241,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount1Desired","nodeType":"MemberAccess","referencedDeclaration":8167,"src":"2782:21:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8233,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12612,"src":"2594:16:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$12612_$","typeString":"type(library LiquidityAmounts)"}},"id":8234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getLiquidityForAmounts","nodeType":"MemberAccess","referencedDeclaration":12462,"src":"2594:39:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint160_$_t_uint256_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint160,uint256,uint256) pure returns (uint128)"}},"id":8242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2594:223:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2582:235:48","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":8244,"nodeType":"ExpressionStatement","src":"2582:235:48"}]},{"expression":{"id":8267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":8246,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8180,"src":"2839:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8247,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8182,"src":"2848:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8248,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2838:18:48","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":8251,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"2882:6:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$8172_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":8252,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":8159,"src":"2882:16:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":8253,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"2912:6:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$8172_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":8254,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":8161,"src":"2912:16:48","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":8255,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"2942:6:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$8172_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":8256,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":8163,"src":"2942:16:48","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":8257,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8178,"src":"2972:9:48","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"arguments":[{"id":8261,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8189,"src":"3033:7:48","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},{"expression":{"id":8262,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3049:3:48","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3049:10:48","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":8260,"name":"MintCallbackData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8092,"src":"3006:16:48","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MintCallbackData_$8092_storage_ptr_$","typeString":"type(struct LiquidityManagement.MintCallbackData storage pointer)"}},"id":8264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["poolKey","payer"],"nodeType":"FunctionCall","src":"3006:55:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MintCallbackData_$8092_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_MintCallbackData_$8092_memory_ptr","typeString":"struct LiquidityManagement.MintCallbackData memory"}],"expression":{"id":8258,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2995:3:48","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8259,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2995:10:48","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2995:67:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":8249,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8184,"src":"2859:4:48","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":8250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":179,"src":"2859:9:48","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_int24_$_t_int24_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,int24,int24,uint128,bytes memory) external returns (uint256,uint256)"}},"id":8266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2859:213:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"2838:234:48","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8268,"nodeType":"ExpressionStatement","src":"2838:234:48"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8270,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8180,"src":"3091:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":8271,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"3102:6:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$8172_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":8272,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount0Min","nodeType":"MemberAccess","referencedDeclaration":8169,"src":"3102:17:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3091:28:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8274,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8182,"src":"3123:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":8275,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"3134:6:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$8172_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams memory"}},"id":8276,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount1Min","nodeType":"MemberAccess","referencedDeclaration":8171,"src":"3134:17:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3123:28:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3091:60:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"507269636520736c69707061676520636865636b","id":8279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3153:22:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_b3c36da41fc4c1f9bee348a3f96d2cd392cf705e6518e56365210c90cbd48f34","typeString":"literal_string \"Price slippage check\""},"value":"Price slippage check"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b3c36da41fc4c1f9bee348a3f96d2cd392cf705e6518e56365210c90cbd48f34","typeString":"literal_string \"Price slippage check\""}],"id":8269,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3083:7:48","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3083:93:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8281,"nodeType":"ExpressionStatement","src":"3083:93:48"}]},"documentation":{"id":8173,"nodeType":"StructuredDocumentation","src":"1821:48:48","text":"@notice Add liquidity to an initialized pool"},"id":8283,"implemented":true,"kind":"function","modifiers":[],"name":"addLiquidity","nodeType":"FunctionDefinition","parameters":{"id":8176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8175,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":8283,"src":"1905:32:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$8172_memory_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams"},"typeName":{"id":8174,"name":"AddLiquidityParams","nodeType":"UserDefinedTypeName","referencedDeclaration":8172,"src":"1905:18:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$8172_storage_ptr","typeString":"struct LiquidityManagement.AddLiquidityParams"}},"visibility":"internal"}],"src":"1895:48:48"},"returnParameters":{"id":8185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8178,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":8283,"src":"1962:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":8177,"name":"uint128","nodeType":"ElementaryTypeName","src":"1962:7:48","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":8180,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":8283,"src":"1981:15:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8179,"name":"uint256","nodeType":"ElementaryTypeName","src":"1981:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8182,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":8283,"src":"1998:15:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8181,"name":"uint256","nodeType":"ElementaryTypeName","src":"1998:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8184,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":8283,"src":"2015:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":8183,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"2015:12:48","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"}],"src":"1961:72:48"},"scope":8284,"src":"1874:1309:48","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":8285,"src":"798:2387:48"}],"src":"45:3141:48"},"id":48},"contracts/base/Multicall.sol":{"ast":{"absolutePath":"contracts/base/Multicall.sol","exportedSymbols":{"IMulticall":[9526],"Multicall":[8369]},"id":8370,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8286,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:49"},{"id":8287,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"69:19:49"},{"absolutePath":"contracts/interfaces/IMulticall.sol","file":"../interfaces/IMulticall.sol","id":8288,"nodeType":"ImportDirective","scope":8370,"sourceUnit":9527,"src":"90:38:49","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":8290,"name":"IMulticall","nodeType":"UserDefinedTypeName","referencedDeclaration":9526,"src":"260:10:49","typeDescriptions":{"typeIdentifier":"t_contract$_IMulticall_$9526","typeString":"contract IMulticall"}},"id":8291,"nodeType":"InheritanceSpecifier","src":"260:10:49"}],"contractDependencies":[9526],"contractKind":"contract","documentation":{"id":8289,"nodeType":"StructuredDocumentation","src":"130:99:49","text":"@title Multicall\n @notice Enables calling multiple methods in a single call to the contract"},"fullyImplemented":true,"id":8369,"linearizedBaseContracts":[8369,9526],"name":"Multicall","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[9525],"body":{"id":8367,"nodeType":"Block","src":"407:554:49","statements":[{"expression":{"id":8309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8302,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8300,"src":"417:7:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":8306,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8295,"src":"439:4:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":8307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"439:11:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8305,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"427:11:49","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory[] memory)"},"typeName":{"baseType":{"id":8303,"name":"bytes","nodeType":"ElementaryTypeName","src":"431:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":8304,"nodeType":"ArrayTypeName","src":"431:7:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}}},"id":8308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"427:24:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"src":"417:34:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":8310,"nodeType":"ExpressionStatement","src":"417:34:49"},{"body":{"id":8365,"nodeType":"Block","src":"503:452:49","statements":[{"assignments":[8323,8325],"declarations":[{"constant":false,"id":8323,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":8365,"src":"518:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8322,"name":"bool","nodeType":"ElementaryTypeName","src":"518:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8325,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":8365,"src":"532:19:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8324,"name":"bytes","nodeType":"ElementaryTypeName","src":"532:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":8335,"initialValue":{"arguments":[{"baseExpression":{"id":8331,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8295,"src":"582:4:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":8333,"indexExpression":{"id":8332,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8312,"src":"587:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"582:7:49","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[{"id":8328,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"563:4:49","typeDescriptions":{"typeIdentifier":"t_contract$_Multicall_$8369","typeString":"contract Multicall"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Multicall_$8369","typeString":"contract Multicall"}],"id":8327,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"555:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8326,"name":"address","nodeType":"ElementaryTypeName","src":"555:7:49","typeDescriptions":{}}},"id":8329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"555:13:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"555:26:49","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":8334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"555:35:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"517:73:49"},{"condition":{"id":8337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"609:8:49","subExpression":{"id":8336,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8323,"src":"610:7:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8358,"nodeType":"IfStatement","src":"605:306:49","trueBody":{"id":8357,"nodeType":"Block","src":"619:292:49","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8338,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8325,"src":"721:6:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"721:13:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3638","id":8340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"737:2:49","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"68"},"src":"721:18:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8345,"nodeType":"IfStatement","src":"717:32:49","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8342,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"741:6:49","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$__$returns$__$","typeString":"function () pure"}},"id":8343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"741:8:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8344,"nodeType":"ExpressionStatement","src":"741:8:49"}},{"AST":{"nodeType":"YulBlock","src":"776:67:49","statements":[{"nodeType":"YulAssignment","src":"798:27:49","value":{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"812:6:49"},{"kind":"number","nodeType":"YulLiteral","src":"820:4:49","type":"","value":"0x04"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"808:3:49"},"nodeType":"YulFunctionCall","src":"808:17:49"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"798:6:49"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":8325,"isOffset":false,"isSlot":false,"src":"798:6:49","valueSize":1},{"declaration":8325,"isOffset":false,"isSlot":false,"src":"812:6:49","valueSize":1}],"id":8346,"nodeType":"InlineAssembly","src":"767:76:49"},{"expression":{"arguments":[{"arguments":[{"id":8350,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8325,"src":"878:6:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":8352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"887:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":8351,"name":"string","nodeType":"ElementaryTypeName","src":"887:6:49","typeDescriptions":{}}}],"id":8353,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"886:8:49","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":8348,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"867:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"867:10:49","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":8354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"867:28:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":8347,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"860:6:49","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":8355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"860:36:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8356,"nodeType":"ExpressionStatement","src":"860:36:49"}]}},{"expression":{"id":8363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8359,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8300,"src":"925:7:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":8361,"indexExpression":{"id":8360,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8312,"src":"933:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"925:10:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8362,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8325,"src":"938:6:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"925:19:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8364,"nodeType":"ExpressionStatement","src":"925:19:49"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8315,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8312,"src":"481:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8316,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8295,"src":"485:4:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":8317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"485:11:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"481:15:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8366,"initializationExpression":{"assignments":[8312],"declarations":[{"constant":false,"id":8312,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":8366,"src":"466:9:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8311,"name":"uint256","nodeType":"ElementaryTypeName","src":"466:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8314,"initialValue":{"hexValue":"30","id":8313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"478:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"466:13:49"},"loopExpression":{"expression":{"id":8320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"498:3:49","subExpression":{"id":8319,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8312,"src":"498:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8321,"nodeType":"ExpressionStatement","src":"498:3:49"},"nodeType":"ForStatement","src":"461:494:49"}]},"documentation":{"id":8292,"nodeType":"StructuredDocumentation","src":"277:26:49","text":"@inheritdoc IMulticall"},"functionSelector":"ac9650d8","id":8368,"implemented":true,"kind":"function","modifiers":[],"name":"multicall","nodeType":"FunctionDefinition","overrides":{"id":8297,"nodeType":"OverrideSpecifier","overrides":[],"src":"365:8:49"},"parameters":{"id":8296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8295,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":8368,"src":"327:21:49","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":8293,"name":"bytes","nodeType":"ElementaryTypeName","src":"327:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":8294,"nodeType":"ArrayTypeName","src":"327:7:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"326:23:49"},"returnParameters":{"id":8301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8300,"mutability":"mutable","name":"results","nodeType":"VariableDeclaration","scope":8368,"src":"383:22:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":8298,"name":"bytes","nodeType":"ElementaryTypeName","src":"383:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":8299,"nodeType":"ArrayTypeName","src":"383:7:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"382:24:49"},"scope":8369,"src":"308:653:49","stateMutability":"payable","virtual":false,"visibility":"public"}],"scope":8370,"src":"229:734:49"}],"src":"45:919:49"},"id":49},"contracts/base/PeripheryImmutableState.sol":{"ast":{"absolutePath":"contracts/base/PeripheryImmutableState.sol","exportedSymbols":{"IPeripheryImmutableState":[9751],"PeripheryImmutableState":[8400]},"id":8401,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8371,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:50"},{"absolutePath":"contracts/interfaces/IPeripheryImmutableState.sol","file":"../interfaces/IPeripheryImmutableState.sol","id":8372,"nodeType":"ImportDirective","scope":8401,"sourceUnit":9752,"src":"70:52:50","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":8374,"name":"IPeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":9751,"src":"252:24:50","typeDescriptions":{"typeIdentifier":"t_contract$_IPeripheryImmutableState_$9751","typeString":"contract IPeripheryImmutableState"}},"id":8375,"nodeType":"InheritanceSpecifier","src":"252:24:50"}],"contractDependencies":[9751],"contractKind":"contract","documentation":{"id":8373,"nodeType":"StructuredDocumentation","src":"124:83:50","text":"@title Immutable state\n @notice Immutable state used by periphery contracts"},"fullyImplemented":true,"id":8400,"linearizedBaseContracts":[8400,9751],"name":"PeripheryImmutableState","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[9744],"constant":false,"documentation":{"id":8376,"nodeType":"StructuredDocumentation","src":"283:40:50","text":"@inheritdoc IPeripheryImmutableState"},"functionSelector":"c45a0155","id":8379,"mutability":"immutable","name":"factory","nodeType":"VariableDeclaration","overrides":{"id":8378,"nodeType":"OverrideSpecifier","overrides":[],"src":"353:8:50"},"scope":8400,"src":"328:41:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8377,"name":"address","nodeType":"ElementaryTypeName","src":"328:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"baseFunctions":[9750],"constant":false,"documentation":{"id":8380,"nodeType":"StructuredDocumentation","src":"375:40:50","text":"@inheritdoc IPeripheryImmutableState"},"functionSelector":"90793ea8","id":8383,"mutability":"immutable","name":"SAMB","nodeType":"VariableDeclaration","overrides":{"id":8382,"nodeType":"OverrideSpecifier","overrides":[],"src":"445:8:50"},"scope":8400,"src":"420:38:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8381,"name":"address","nodeType":"ElementaryTypeName","src":"420:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"body":{"id":8398,"nodeType":"Block","src":"510:57:50","statements":[{"expression":{"id":8392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8390,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8379,"src":"520:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8391,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8385,"src":"530:8:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"520:18:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8393,"nodeType":"ExpressionStatement","src":"520:18:50"},{"expression":{"id":8396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8394,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8383,"src":"548:4:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8395,"name":"_SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8387,"src":"555:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"548:12:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8397,"nodeType":"ExpressionStatement","src":"548:12:50"}]},"id":8399,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":8388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8385,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":8399,"src":"477:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8384,"name":"address","nodeType":"ElementaryTypeName","src":"477:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8387,"mutability":"mutable","name":"_SAMB","nodeType":"VariableDeclaration","scope":8399,"src":"495:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8386,"name":"address","nodeType":"ElementaryTypeName","src":"495:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"476:33:50"},"returnParameters":{"id":8389,"nodeType":"ParameterList","parameters":[],"src":"510:0:50"},"scope":8400,"src":"465:102:50","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":8401,"src":"207:362:50"}],"src":"45:525:50"},"id":50},"contracts/base/PeripheryPayments.sol":{"ast":{"absolutePath":"contracts/base/PeripheryPayments.sol","exportedSymbols":{"IERC20":[4183],"IPeripheryImmutableState":[9751],"IPeripheryPayments":[9777],"ISAMB":[10461],"PeripheryImmutableState":[8400],"PeripheryPayments":[8610],"TransferHelper":[15676]},"id":8611,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8402,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:51"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":8403,"nodeType":"ImportDirective","scope":8611,"sourceUnit":4184,"src":"71:56:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IPeripheryPayments.sol","file":"../interfaces/IPeripheryPayments.sol","id":8404,"nodeType":"ImportDirective","scope":8611,"sourceUnit":9778,"src":"129:46:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/external/ISAMB.sol","file":"../interfaces/external/ISAMB.sol","id":8405,"nodeType":"ImportDirective","scope":8611,"sourceUnit":10462,"src":"176:42:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/TransferHelper.sol","file":"../libraries/TransferHelper.sol","id":8406,"nodeType":"ImportDirective","scope":8611,"sourceUnit":15677,"src":"220:41:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/PeripheryImmutableState.sol","file":"./PeripheryImmutableState.sol","id":8407,"nodeType":"ImportDirective","scope":8611,"sourceUnit":8401,"src":"263:39:51","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":8408,"name":"IPeripheryPayments","nodeType":"UserDefinedTypeName","referencedDeclaration":9777,"src":"343:18:51","typeDescriptions":{"typeIdentifier":"t_contract$_IPeripheryPayments_$9777","typeString":"contract IPeripheryPayments"}},"id":8409,"nodeType":"InheritanceSpecifier","src":"343:18:51"},{"baseName":{"id":8410,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":8400,"src":"363:23:51","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$8400","typeString":"contract PeripheryImmutableState"}},"id":8411,"nodeType":"InheritanceSpecifier","src":"363:23:51"}],"contractDependencies":[8400,9751,9777],"contractKind":"contract","fullyImplemented":false,"id":8610,"linearizedBaseContracts":[8610,8400,9751,9777],"name":"PeripheryPayments","nodeType":"ContractDefinition","nodes":[{"body":{"id":8422,"nodeType":"Block","src":"420:56:51","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8415,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"438:3:51","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"438:10:51","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8417,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8383,"src":"452:4:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"438:18:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f742053414d42","id":8419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"458:10:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_9742e45cbdcfb33441b71c5e16cad2d39cf9a5067bcabd680e872cd9d5b8a313","typeString":"literal_string \"Not SAMB\""},"value":"Not SAMB"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9742e45cbdcfb33441b71c5e16cad2d39cf9a5067bcabd680e872cd9d5b8a313","typeString":"literal_string \"Not SAMB\""}],"id":8414,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"430:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"430:39:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8421,"nodeType":"ExpressionStatement","src":"430:39:51"}]},"id":8423,"implemented":true,"kind":"receive","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":8412,"nodeType":"ParameterList","parameters":[],"src":"400:2:51"},"returnParameters":{"id":8413,"nodeType":"ParameterList","parameters":[],"src":"420:0:51"},"scope":8610,"src":"393:83:51","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[9762],"body":{"id":8470,"nodeType":"Block","src":"607:300:51","statements":[{"assignments":[8433],"declarations":[{"constant":false,"id":8433,"mutability":"mutable","name":"balanceSAMB","nodeType":"VariableDeclaration","scope":8470,"src":"617:19:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8432,"name":"uint256","nodeType":"ElementaryTypeName","src":"617:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8443,"initialValue":{"arguments":[{"arguments":[{"id":8440,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"669:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$8610","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$8610","typeString":"contract PeripheryPayments"}],"id":8439,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"661:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8438,"name":"address","nodeType":"ElementaryTypeName","src":"661:7:51","typeDescriptions":{}}},"id":8441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"661:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"arguments":[{"id":8435,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8383,"src":"645:4:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8434,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10461,"src":"639:5:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$10461_$","typeString":"type(contract ISAMB)"}},"id":8436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"639:11:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$10461","typeString":"contract ISAMB"}},"id":8437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":4122,"src":"639:21:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":8442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"639:36:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"617:58:51"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8445,"name":"balanceSAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8433,"src":"693:11:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8446,"name":"amountMinimum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8426,"src":"708:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"693:28:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e742053414d42","id":8448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"723:19:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_28ab92c5d6f07031eb580ee0e2845547a46c2cf150bdb8c12bcaa66335c7464f","typeString":"literal_string \"Insufficient SAMB\""},"value":"Insufficient SAMB"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28ab92c5d6f07031eb580ee0e2845547a46c2cf150bdb8c12bcaa66335c7464f","typeString":"literal_string \"Insufficient SAMB\""}],"id":8444,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"685:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"685:58:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8450,"nodeType":"ExpressionStatement","src":"685:58:51"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8451,"name":"balanceSAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8433,"src":"758:11:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"772:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"758:15:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8469,"nodeType":"IfStatement","src":"754:147:51","trueBody":{"id":8468,"nodeType":"Block","src":"775:126:51","statements":[{"expression":{"arguments":[{"id":8458,"name":"balanceSAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8433,"src":"810:11:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8455,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8383,"src":"795:4:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8454,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10461,"src":"789:5:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$10461_$","typeString":"type(contract ISAMB)"}},"id":8456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"789:11:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$10461","typeString":"contract ISAMB"}},"id":8457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":10460,"src":"789:20:51","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":8459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"789:33:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8460,"nodeType":"ExpressionStatement","src":"789:33:51"},{"expression":{"arguments":[{"id":8464,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8428,"src":"867:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8465,"name":"balanceSAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8433,"src":"878:11:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8461,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15676,"src":"836:14:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$15676_$","typeString":"type(library TransferHelper)"}},"id":8463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAMB","nodeType":"MemberAccess","referencedDeclaration":15675,"src":"836:30:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"836:54:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8467,"nodeType":"ExpressionStatement","src":"836:54:51"}]}}]},"documentation":{"id":8424,"nodeType":"StructuredDocumentation","src":"482:34:51","text":"@inheritdoc IPeripheryPayments"},"functionSelector":"a98ce37f","id":8471,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapSAMB","nodeType":"FunctionDefinition","overrides":{"id":8430,"nodeType":"OverrideSpecifier","overrides":[],"src":"598:8:51"},"parameters":{"id":8429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8426,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":8471,"src":"541:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8425,"name":"uint256","nodeType":"ElementaryTypeName","src":"541:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8428,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":8471,"src":"564:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8427,"name":"address","nodeType":"ElementaryTypeName","src":"564:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"540:42:51"},"returnParameters":{"id":8431,"nodeType":"ParameterList","parameters":[],"src":"607:0:51"},"scope":8610,"src":"521:386:51","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[9776],"body":{"id":8514,"nodeType":"Block","src":"1053:264:51","statements":[{"assignments":[8483],"declarations":[{"constant":false,"id":8483,"mutability":"mutable","name":"balanceToken","nodeType":"VariableDeclaration","scope":8514,"src":"1063:20:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8482,"name":"uint256","nodeType":"ElementaryTypeName","src":"1063:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8493,"initialValue":{"arguments":[{"arguments":[{"id":8490,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1118:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$8610","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$8610","typeString":"contract PeripheryPayments"}],"id":8489,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1110:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8488,"name":"address","nodeType":"ElementaryTypeName","src":"1110:7:51","typeDescriptions":{}}},"id":8491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1110:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"arguments":[{"id":8485,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8474,"src":"1093:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8484,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4183,"src":"1086:6:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$4183_$","typeString":"type(contract IERC20)"}},"id":8486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1086:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4183","typeString":"contract IERC20"}},"id":8487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":4122,"src":"1086:23:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":8492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1086:38:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1063:61:51"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8495,"name":"balanceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8483,"src":"1142:12:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8496,"name":"amountMinimum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8476,"src":"1158:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1142:29:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e7420746f6b656e","id":8498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1173:20:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_2cf3b53843c7738cfb0b95230b455802cee89f2ea29be4a30eee707228c97571","typeString":"literal_string \"Insufficient token\""},"value":"Insufficient token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2cf3b53843c7738cfb0b95230b455802cee89f2ea29be4a30eee707228c97571","typeString":"literal_string \"Insufficient token\""}],"id":8494,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1134:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1134:60:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8500,"nodeType":"ExpressionStatement","src":"1134:60:51"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8501,"name":"balanceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8483,"src":"1209:12:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1224:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1209:16:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8513,"nodeType":"IfStatement","src":"1205:106:51","trueBody":{"id":8512,"nodeType":"Block","src":"1227:84:51","statements":[{"expression":{"arguments":[{"id":8507,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8474,"src":"1269:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8508,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8478,"src":"1276:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8509,"name":"balanceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8483,"src":"1287:12:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8504,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15676,"src":"1241:14:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$15676_$","typeString":"type(library TransferHelper)"}},"id":8506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":15603,"src":"1241:27:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1241:59:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8511,"nodeType":"ExpressionStatement","src":"1241:59:51"}]}}]},"documentation":{"id":8472,"nodeType":"StructuredDocumentation","src":"913:34:51","text":"@inheritdoc IPeripheryPayments"},"functionSelector":"df2ab5bb","id":8515,"implemented":true,"kind":"function","modifiers":[],"name":"sweepToken","nodeType":"FunctionDefinition","overrides":{"id":8480,"nodeType":"OverrideSpecifier","overrides":[],"src":"1044:8:51"},"parameters":{"id":8479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8474,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":8515,"src":"972:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8473,"name":"address","nodeType":"ElementaryTypeName","src":"972:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8476,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":8515,"src":"987:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8475,"name":"uint256","nodeType":"ElementaryTypeName","src":"987:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8478,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":8515,"src":"1010:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8477,"name":"address","nodeType":"ElementaryTypeName","src":"1010:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"971:57:51"},"returnParameters":{"id":8481,"nodeType":"ParameterList","parameters":[],"src":"1053:0:51"},"scope":8610,"src":"952:365:51","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[9766],"body":{"id":8540,"nodeType":"Block","src":"1409:113:51","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":8522,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1431:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$8610","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$8610","typeString":"contract PeripheryPayments"}],"id":8521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1423:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8520,"name":"address","nodeType":"ElementaryTypeName","src":"1423:7:51","typeDescriptions":{}}},"id":8523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1423:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":8524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"1423:21:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1447:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1423:25:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8539,"nodeType":"IfStatement","src":"1419:96:51","trueBody":{"expression":{"arguments":[{"expression":{"id":8530,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1481:3:51","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1481:10:51","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"arguments":[{"id":8534,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1501:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$8610","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$8610","typeString":"contract PeripheryPayments"}],"id":8533,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1493:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8532,"name":"address","nodeType":"ElementaryTypeName","src":"1493:7:51","typeDescriptions":{}}},"id":8535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1493:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":8536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"1493:21:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8527,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15676,"src":"1450:14:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$15676_$","typeString":"type(library TransferHelper)"}},"id":8529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAMB","nodeType":"MemberAccess","referencedDeclaration":15675,"src":"1450:30:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1450:65:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8538,"nodeType":"ExpressionStatement","src":"1450:65:51"}}]},"documentation":{"id":8516,"nodeType":"StructuredDocumentation","src":"1323:34:51","text":"@inheritdoc IPeripheryPayments"},"functionSelector":"c53af304","id":8541,"implemented":true,"kind":"function","modifiers":[],"name":"refundAMB","nodeType":"FunctionDefinition","overrides":{"id":8518,"nodeType":"OverrideSpecifier","overrides":[],"src":"1400:8:51"},"parameters":{"id":8517,"nodeType":"ParameterList","parameters":[],"src":"1380:2:51"},"returnParameters":{"id":8519,"nodeType":"ParameterList","parameters":[],"src":"1409:0:51"},"scope":8610,"src":"1362:160:51","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":8608,"nodeType":"Block","src":"1799:569:51","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8553,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8544,"src":"1813:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8554,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8383,"src":"1822:4:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1813:13:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":8558,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1838:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$8610","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$8610","typeString":"contract PeripheryPayments"}],"id":8557,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1830:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8556,"name":"address","nodeType":"ElementaryTypeName","src":"1830:7:51","typeDescriptions":{}}},"id":8559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1830:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":8560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"1830:21:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8561,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8550,"src":"1855:5:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1830:30:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1813:47:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8581,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8546,"src":"2048:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":8584,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2065:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$8610","typeString":"contract PeripheryPayments"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPayments_$8610","typeString":"contract PeripheryPayments"}],"id":8583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2057:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8582,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:51","typeDescriptions":{}}},"id":8585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2057:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2048:22:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8605,"nodeType":"Block","src":"2246:116:51","statements":[{"expression":{"arguments":[{"id":8599,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8544,"src":"2320:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8600,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8546,"src":"2327:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8601,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8548,"src":"2334:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8602,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8550,"src":"2345:5:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8596,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15676,"src":"2288:14:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$15676_$","typeString":"type(library TransferHelper)"}},"id":8598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":15557,"src":"2288:31:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":8603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2288:63:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8604,"nodeType":"ExpressionStatement","src":"2288:63:51"}]},"id":8606,"nodeType":"IfStatement","src":"2044:318:51","trueBody":{"id":8595,"nodeType":"Block","src":"2072:168:51","statements":[{"expression":{"arguments":[{"id":8590,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8544,"src":"2205:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8591,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8548,"src":"2212:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8592,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8550,"src":"2223:5:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8587,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15676,"src":"2177:14:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$15676_$","typeString":"type(library TransferHelper)"}},"id":8589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":15603,"src":"2177:27:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2177:52:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8594,"nodeType":"ExpressionStatement","src":"2177:52:51"}]}},"id":8607,"nodeType":"IfStatement","src":"1809:553:51","trueBody":{"id":8580,"nodeType":"Block","src":"1862:176:51","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":8565,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8383,"src":"1911:4:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8564,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10461,"src":"1905:5:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$10461_$","typeString":"type(contract ISAMB)"}},"id":8566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1905:11:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$10461","typeString":"contract ISAMB"}},"id":8567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":10454,"src":"1905:19:51","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$","typeString":"function () payable external"}},"id":8569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":8568,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8550,"src":"1932:5:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1905:33:51","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$value","typeString":"function () payable external"}},"id":8570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1905:35:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8571,"nodeType":"ExpressionStatement","src":"1905:35:51"},{"expression":{"arguments":[{"id":8576,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8548,"src":"2010:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8577,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8550,"src":"2021:5:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8573,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8383,"src":"1995:4:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8572,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10461,"src":"1989:5:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$10461_$","typeString":"type(contract ISAMB)"}},"id":8574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1989:11:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$10461","typeString":"contract ISAMB"}},"id":8575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":4132,"src":"1989:20:51","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":8578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1989:38:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8579,"nodeType":"ExpressionStatement","src":"1989:38:51"}]}}]},"documentation":{"id":8542,"nodeType":"StructuredDocumentation","src":"1528:180:51","text":"@param token The token to pay\n @param payer The entity that must pay\n @param recipient The entity that will receive payment\n @param value The amount to pay"},"id":8609,"implemented":true,"kind":"function","modifiers":[],"name":"pay","nodeType":"FunctionDefinition","parameters":{"id":8551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8544,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":8609,"src":"1726:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8543,"name":"address","nodeType":"ElementaryTypeName","src":"1726:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8546,"mutability":"mutable","name":"payer","nodeType":"VariableDeclaration","scope":8609,"src":"1741:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8545,"name":"address","nodeType":"ElementaryTypeName","src":"1741:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8548,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":8609,"src":"1756:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8547,"name":"address","nodeType":"ElementaryTypeName","src":"1756:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8550,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8609,"src":"1775:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8549,"name":"uint256","nodeType":"ElementaryTypeName","src":"1775:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1725:64:51"},"returnParameters":{"id":8552,"nodeType":"ParameterList","parameters":[],"src":"1799:0:51"},"scope":8610,"src":"1713:655:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":8611,"src":"304:2066:51"}],"src":"45:2326:51"},"id":51},"contracts/base/PeripheryPaymentsWithFee.sol":{"ast":{"absolutePath":"contracts/base/PeripheryPaymentsWithFee.sol","exportedSymbols":{"IERC20":[4183],"IPeripheryImmutableState":[9751],"IPeripheryPayments":[9777],"IPeripheryPaymentsWithFee":[9810],"ISAMB":[10461],"LowGasSafeMath":[1223],"PeripheryImmutableState":[8400],"PeripheryPayments":[8610],"PeripheryPaymentsWithFee":[8791],"TransferHelper":[15676]},"id":8792,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8612,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:52"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":8613,"nodeType":"ImportDirective","scope":8792,"sourceUnit":4184,"src":"71:56:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol","file":"@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol","id":8614,"nodeType":"ImportDirective","scope":8792,"sourceUnit":1224,"src":"181:70:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/PeripheryPayments.sol","file":"./PeripheryPayments.sol","id":8615,"nodeType":"ImportDirective","scope":8792,"sourceUnit":8611,"src":"253:33:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IPeripheryPaymentsWithFee.sol","file":"../interfaces/IPeripheryPaymentsWithFee.sol","id":8616,"nodeType":"ImportDirective","scope":8792,"sourceUnit":9811,"src":"287:53:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/external/ISAMB.sol","file":"../interfaces/external/ISAMB.sol","id":8617,"nodeType":"ImportDirective","scope":8792,"sourceUnit":10462,"src":"342:42:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/TransferHelper.sol","file":"../libraries/TransferHelper.sol","id":8618,"nodeType":"ImportDirective","scope":8792,"sourceUnit":15677,"src":"385:41:52","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":8619,"name":"PeripheryPayments","nodeType":"UserDefinedTypeName","referencedDeclaration":8610,"src":"474:17:52","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$8610","typeString":"contract PeripheryPayments"}},"id":8620,"nodeType":"InheritanceSpecifier","src":"474:17:52"},{"baseName":{"id":8621,"name":"IPeripheryPaymentsWithFee","nodeType":"UserDefinedTypeName","referencedDeclaration":9810,"src":"493:25:52","typeDescriptions":{"typeIdentifier":"t_contract$_IPeripheryPaymentsWithFee_$9810","typeString":"contract IPeripheryPaymentsWithFee"}},"id":8622,"nodeType":"InheritanceSpecifier","src":"493:25:52"}],"contractDependencies":[8400,8610,9751,9777,9810],"contractKind":"contract","fullyImplemented":false,"id":8791,"linearizedBaseContracts":[8791,9810,8610,8400,9751,9777],"name":"PeripheryPaymentsWithFee","nodeType":"ContractDefinition","nodes":[{"id":8625,"libraryName":{"id":8623,"name":"LowGasSafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":1223,"src":"531:14:52","typeDescriptions":{"typeIdentifier":"t_contract$_LowGasSafeMath_$1223","typeString":"library LowGasSafeMath"}},"nodeType":"UsingForDirective","src":"525:33:52","typeName":{"id":8624,"name":"uint256","nodeType":"ElementaryTypeName","src":"550:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"baseFunctions":[9795],"body":{"id":8708,"nodeType":"Block","src":"780:516:52","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8639,"name":"feeBips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8632,"src":"798:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"808:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"798:11:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8642,"name":"feeBips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8632,"src":"813:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"313030","id":8643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"824:3:52","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"813:14:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"798:29:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8638,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"790:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"790:38:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8647,"nodeType":"ExpressionStatement","src":"790:38:52"},{"assignments":[8649],"declarations":[{"constant":false,"id":8649,"mutability":"mutable","name":"balanceSAMB","nodeType":"VariableDeclaration","scope":8708,"src":"839:19:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8648,"name":"uint256","nodeType":"ElementaryTypeName","src":"839:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8659,"initialValue":{"arguments":[{"arguments":[{"id":8656,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"891:4:52","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPaymentsWithFee_$8791","typeString":"contract PeripheryPaymentsWithFee"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPaymentsWithFee_$8791","typeString":"contract PeripheryPaymentsWithFee"}],"id":8655,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"883:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8654,"name":"address","nodeType":"ElementaryTypeName","src":"883:7:52","typeDescriptions":{}}},"id":8657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"883:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"arguments":[{"id":8651,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8383,"src":"867:4:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8650,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10461,"src":"861:5:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$10461_$","typeString":"type(contract ISAMB)"}},"id":8652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"861:11:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$10461","typeString":"contract ISAMB"}},"id":8653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":4122,"src":"861:21:52","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":8658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"861:36:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"839:58:52"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8661,"name":"balanceSAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8649,"src":"915:11:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8662,"name":"amountMinimum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8628,"src":"930:13:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"915:28:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e742053414d42","id":8664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"945:19:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_28ab92c5d6f07031eb580ee0e2845547a46c2cf150bdb8c12bcaa66335c7464f","typeString":"literal_string \"Insufficient SAMB\""},"value":"Insufficient SAMB"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28ab92c5d6f07031eb580ee0e2845547a46c2cf150bdb8c12bcaa66335c7464f","typeString":"literal_string \"Insufficient SAMB\""}],"id":8660,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"907:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"907:58:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8666,"nodeType":"ExpressionStatement","src":"907:58:52"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8667,"name":"balanceSAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8649,"src":"980:11:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"994:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"980:15:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8707,"nodeType":"IfStatement","src":"976:314:52","trueBody":{"id":8706,"nodeType":"Block","src":"997:293:52","statements":[{"expression":{"arguments":[{"id":8674,"name":"balanceSAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8649,"src":"1032:11:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8671,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8383,"src":"1017:4:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8670,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10461,"src":"1011:5:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$10461_$","typeString":"type(contract ISAMB)"}},"id":8672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1011:11:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$10461","typeString":"contract ISAMB"}},"id":8673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":10460,"src":"1011:20:52","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":8675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1011:33:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8676,"nodeType":"ExpressionStatement","src":"1011:33:52"},{"assignments":[8678],"declarations":[{"constant":false,"id":8678,"mutability":"mutable","name":"feeAmount","nodeType":"VariableDeclaration","scope":8706,"src":"1058:17:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8677,"name":"uint256","nodeType":"ElementaryTypeName","src":"1058:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8685,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8681,"name":"feeBips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8632,"src":"1094:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8679,"name":"balanceSAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8649,"src":"1078:11:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":1168,"src":"1078:15:52","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1078:24:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31305f303030","id":8683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1105:6:52","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10_000"},"src":"1078:33:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1058:53:52"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8686,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8678,"src":"1129:9:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1141:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1129:13:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8696,"nodeType":"IfStatement","src":"1125:74:52","trueBody":{"expression":{"arguments":[{"id":8692,"name":"feeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8634,"src":"1175:12:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8693,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8678,"src":"1189:9:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8689,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15676,"src":"1144:14:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$15676_$","typeString":"type(library TransferHelper)"}},"id":8691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAMB","nodeType":"MemberAccess","referencedDeclaration":15675,"src":"1144:30:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1144:55:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8695,"nodeType":"ExpressionStatement","src":"1144:55:52"}},{"expression":{"arguments":[{"id":8700,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8630,"src":"1244:9:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8701,"name":"balanceSAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8649,"src":"1255:11:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8702,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8678,"src":"1269:9:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1255:23:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8697,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15676,"src":"1213:14:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$15676_$","typeString":"type(library TransferHelper)"}},"id":8699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAMB","nodeType":"MemberAccess","referencedDeclaration":15675,"src":"1213:30:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1213:66:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8705,"nodeType":"ExpressionStatement","src":"1213:66:52"}]}}]},"documentation":{"id":8626,"nodeType":"StructuredDocumentation","src":"564:41:52","text":"@inheritdoc IPeripheryPaymentsWithFee"},"functionSelector":"97e87d9d","id":8709,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapSAMBWithFee","nodeType":"FunctionDefinition","overrides":{"id":8636,"nodeType":"OverrideSpecifier","overrides":[],"src":"771:8:52"},"parameters":{"id":8635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8628,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":8709,"src":"646:21:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8627,"name":"uint256","nodeType":"ElementaryTypeName","src":"646:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8630,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":8709,"src":"677:17:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8629,"name":"address","nodeType":"ElementaryTypeName","src":"677:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8632,"mutability":"mutable","name":"feeBips","nodeType":"VariableDeclaration","scope":8709,"src":"704:15:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8631,"name":"uint256","nodeType":"ElementaryTypeName","src":"704:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8634,"mutability":"mutable","name":"feeRecipient","nodeType":"VariableDeclaration","scope":8709,"src":"729:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8633,"name":"address","nodeType":"ElementaryTypeName","src":"729:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"636:119:52"},"returnParameters":{"id":8637,"nodeType":"ParameterList","parameters":[],"src":"780:0:52"},"scope":8791,"src":"610:686:52","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[9809],"body":{"id":8789,"nodeType":"Block","src":"1541:485:52","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8725,"name":"feeBips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8718,"src":"1559:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1569:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1559:11:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8728,"name":"feeBips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8718,"src":"1574:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"313030","id":8729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1585:3:52","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"1574:14:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1559:29:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8724,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1551:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1551:38:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8733,"nodeType":"ExpressionStatement","src":"1551:38:52"},{"assignments":[8735],"declarations":[{"constant":false,"id":8735,"mutability":"mutable","name":"balanceToken","nodeType":"VariableDeclaration","scope":8789,"src":"1600:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8734,"name":"uint256","nodeType":"ElementaryTypeName","src":"1600:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8745,"initialValue":{"arguments":[{"arguments":[{"id":8742,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1655:4:52","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPaymentsWithFee_$8791","typeString":"contract PeripheryPaymentsWithFee"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PeripheryPaymentsWithFee_$8791","typeString":"contract PeripheryPaymentsWithFee"}],"id":8741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1647:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8740,"name":"address","nodeType":"ElementaryTypeName","src":"1647:7:52","typeDescriptions":{}}},"id":8743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1647:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"arguments":[{"id":8737,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8712,"src":"1630:5:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8736,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4183,"src":"1623:6:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$4183_$","typeString":"type(contract IERC20)"}},"id":8738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1623:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4183","typeString":"contract IERC20"}},"id":8739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":4122,"src":"1623:23:52","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":8744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1623:38:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1600:61:52"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8747,"name":"balanceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8735,"src":"1679:12:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8748,"name":"amountMinimum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8714,"src":"1695:13:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1679:29:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e7420746f6b656e","id":8750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1710:20:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_2cf3b53843c7738cfb0b95230b455802cee89f2ea29be4a30eee707228c97571","typeString":"literal_string \"Insufficient token\""},"value":"Insufficient token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2cf3b53843c7738cfb0b95230b455802cee89f2ea29be4a30eee707228c97571","typeString":"literal_string \"Insufficient token\""}],"id":8746,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1671:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1671:60:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8752,"nodeType":"ExpressionStatement","src":"1671:60:52"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8753,"name":"balanceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8735,"src":"1746:12:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1761:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1746:16:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8788,"nodeType":"IfStatement","src":"1742:278:52","trueBody":{"id":8787,"nodeType":"Block","src":"1764:256:52","statements":[{"assignments":[8757],"declarations":[{"constant":false,"id":8757,"mutability":"mutable","name":"feeAmount","nodeType":"VariableDeclaration","scope":8787,"src":"1778:17:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8756,"name":"uint256","nodeType":"ElementaryTypeName","src":"1778:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8764,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8760,"name":"feeBips","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8718,"src":"1815:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8758,"name":"balanceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8735,"src":"1798:12:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":1168,"src":"1798:16:52","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1798:25:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31305f303030","id":8762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1826:6:52","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10_000"},"src":"1798:34:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1778:54:52"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8765,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8757,"src":"1850:9:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1862:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1850:13:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8776,"nodeType":"IfStatement","src":"1846:78:52","trueBody":{"expression":{"arguments":[{"id":8771,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8712,"src":"1893:5:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8772,"name":"feeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8720,"src":"1900:12:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8773,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8757,"src":"1914:9:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8768,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15676,"src":"1865:14:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$15676_$","typeString":"type(library TransferHelper)"}},"id":8770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":15603,"src":"1865:27:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1865:59:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8775,"nodeType":"ExpressionStatement","src":"1865:59:52"}},{"expression":{"arguments":[{"id":8780,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8712,"src":"1966:5:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8781,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8716,"src":"1973:9:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8782,"name":"balanceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8735,"src":"1984:12:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8783,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8757,"src":"1999:9:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1984:24:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8777,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15676,"src":"1938:14:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$15676_$","typeString":"type(library TransferHelper)"}},"id":8779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":15603,"src":"1938:27:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1938:71:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8786,"nodeType":"ExpressionStatement","src":"1938:71:52"}]}}]},"documentation":{"id":8710,"nodeType":"StructuredDocumentation","src":"1302:41:52","text":"@inheritdoc IPeripheryPaymentsWithFee"},"functionSelector":"e0e189a0","id":8790,"implemented":true,"kind":"function","modifiers":[],"name":"sweepTokenWithFee","nodeType":"FunctionDefinition","overrides":{"id":8722,"nodeType":"OverrideSpecifier","overrides":[],"src":"1532:8:52"},"parameters":{"id":8721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8712,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":8790,"src":"1384:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8711,"name":"address","nodeType":"ElementaryTypeName","src":"1384:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8714,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":8790,"src":"1407:21:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8713,"name":"uint256","nodeType":"ElementaryTypeName","src":"1407:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8716,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":8790,"src":"1438:17:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8715,"name":"address","nodeType":"ElementaryTypeName","src":"1438:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8718,"mutability":"mutable","name":"feeBips","nodeType":"VariableDeclaration","scope":8790,"src":"1465:15:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8717,"name":"uint256","nodeType":"ElementaryTypeName","src":"1465:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8720,"mutability":"mutable","name":"feeRecipient","nodeType":"VariableDeclaration","scope":8790,"src":"1490:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8719,"name":"address","nodeType":"ElementaryTypeName","src":"1490:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1374:142:52"},"returnParameters":{"id":8723,"nodeType":"ParameterList","parameters":[],"src":"1541:0:52"},"scope":8791,"src":"1348:678:52","stateMutability":"payable","virtual":false,"visibility":"public"}],"scope":8792,"src":"428:1600:52"}],"src":"45:1984:52"},"id":52},"contracts/base/PeripheryValidation.sol":{"ast":{"absolutePath":"contracts/base/PeripheryValidation.sol","exportedSymbols":{"BlockTimestamp":[7859],"PeripheryValidation":[8811]},"id":8812,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8793,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:53"},{"absolutePath":"contracts/base/BlockTimestamp.sol","file":"./BlockTimestamp.sol","id":8794,"nodeType":"ImportDirective","scope":8812,"sourceUnit":7860,"src":"70:30:53","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":8795,"name":"BlockTimestamp","nodeType":"UserDefinedTypeName","referencedDeclaration":7859,"src":"143:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_BlockTimestamp_$7859","typeString":"contract BlockTimestamp"}},"id":8796,"nodeType":"InheritanceSpecifier","src":"143:14:53"}],"contractDependencies":[7859],"contractKind":"contract","fullyImplemented":true,"id":8811,"linearizedBaseContracts":[8811,7859],"name":"PeripheryValidation","nodeType":"ContractDefinition","nodes":[{"body":{"id":8809,"nodeType":"Block","src":"205:89:53","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":8801,"name":"_blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"223:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":8802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"223:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":8803,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8798,"src":"244:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"223:29:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472616e73616374696f6e20746f6f206f6c64","id":8805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"254:21:53","typeDescriptions":{"typeIdentifier":"t_stringliteral_c2621685b6a86291a4533558eb72fba04db12a0363db47624d86d9bbb608d293","typeString":"literal_string \"Transaction too old\""},"value":"Transaction too old"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c2621685b6a86291a4533558eb72fba04db12a0363db47624d86d9bbb608d293","typeString":"literal_string \"Transaction too old\""}],"id":8800,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"215:7:53","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"215:61:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8807,"nodeType":"ExpressionStatement","src":"215:61:53"},{"id":8808,"nodeType":"PlaceholderStatement","src":"286:1:53"}]},"id":8810,"name":"checkDeadline","nodeType":"ModifierDefinition","parameters":{"id":8799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8798,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":8810,"src":"187:16:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8797,"name":"uint256","nodeType":"ElementaryTypeName","src":"187:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"186:18:53"},"src":"164:130:53","virtual":false,"visibility":"internal"}],"scope":8812,"src":"102:194:53"}],"src":"45:252:53"},"id":53},"contracts/base/PoolInitializer.sol":{"ast":{"absolutePath":"contracts/base/PoolInitializer.sol","exportedSymbols":{"IAstraCLFactory":[82],"IAstraCLPool":[110],"IAstraCLPoolActions":[248],"IAstraCLPoolDerivedState":[279],"IAstraCLPoolEvents":[398],"IAstraCLPoolImmutables":[438],"IAstraCLPoolOwnerActions":[464],"IAstraCLPoolState":[572],"IPeripheryImmutableState":[9751],"IPoolInitializer":[9829],"PeripheryImmutableState":[8400],"PoolInitializer":[8903]},"id":8904,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8813,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:54"},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol","file":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol","id":8814,"nodeType":"ImportDirective","scope":8904,"sourceUnit":83,"src":"123:72:54","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","file":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","id":8815,"nodeType":"ImportDirective","scope":8904,"sourceUnit":111,"src":"249:69:54","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/PeripheryImmutableState.sol","file":"./PeripheryImmutableState.sol","id":8816,"nodeType":"ImportDirective","scope":8904,"sourceUnit":8401,"src":"320:39:54","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IPoolInitializer.sol","file":"../interfaces/IPoolInitializer.sol","id":8817,"nodeType":"ImportDirective","scope":8904,"sourceUnit":9830,"src":"360:44:54","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":8819,"name":"IPoolInitializer","nodeType":"UserDefinedTypeName","referencedDeclaration":9829,"src":"487:16:54","typeDescriptions":{"typeIdentifier":"t_contract$_IPoolInitializer_$9829","typeString":"contract IPoolInitializer"}},"id":8820,"nodeType":"InheritanceSpecifier","src":"487:16:54"},{"baseName":{"id":8821,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":8400,"src":"505:23:54","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$8400","typeString":"contract PeripheryImmutableState"}},"id":8822,"nodeType":"InheritanceSpecifier","src":"505:23:54"}],"contractDependencies":[8400,9751,9829],"contractKind":"contract","documentation":{"id":8818,"nodeType":"StructuredDocumentation","src":"406:44:54","text":"@title Creates and initializes CL Pools"},"fullyImplemented":false,"id":8903,"linearizedBaseContracts":[8903,8400,9751,9829],"name":"PoolInitializer","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[9828],"body":{"id":8901,"nodeType":"Block","src":"769:512:54","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8838,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8825,"src":"787:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8839,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8827,"src":"796:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"787:15:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8837,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"779:7:54","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"779:24:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8842,"nodeType":"ExpressionStatement","src":"779:24:54"},{"expression":{"id":8852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8843,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8835,"src":"813:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8848,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8825,"src":"853:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8849,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8827,"src":"861:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8850,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8829,"src":"869:3:54","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"arguments":[{"id":8845,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8379,"src":"836:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8844,"name":"IAstraCLFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82,"src":"820:15:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLFactory_$82_$","typeString":"type(contract IAstraCLFactory)"}},"id":8846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"820:24:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLFactory_$82","typeString":"contract IAstraCLFactory"}},"id":8847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":55,"src":"820:32:54","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint24_$returns$_t_address_$","typeString":"function (address,address,uint24) view external returns (address)"}},"id":8851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"820:53:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"813:60:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8853,"nodeType":"ExpressionStatement","src":"813:60:54"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8854,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8835,"src":"888:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"904:1:54","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":8856,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"896:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8855,"name":"address","nodeType":"ElementaryTypeName","src":"896:7:54","typeDescriptions":{}}},"id":8858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"896:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"888:18:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8899,"nodeType":"Block","src":"1059:216:54","statements":[{"assignments":[8880,null,null,null,null,null,null],"declarations":[{"constant":false,"id":8880,"mutability":"mutable","name":"sqrtPriceX96Existing","nodeType":"VariableDeclaration","scope":8899,"src":"1074:28:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":8879,"name":"uint160","nodeType":"ElementaryTypeName","src":"1074:7:54","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},null,null,null,null,null,null],"id":8886,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":8882,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8835,"src":"1131:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8881,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"1118:12:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":8883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1118:18:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":8884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":485,"src":"1118:24:54","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$","typeString":"function () view external returns (uint160,int24,uint16,uint16,uint16,uint8,bool)"}},"id":8885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1118:26:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$","typeString":"tuple(uint160,int24,uint16,uint16,uint16,uint8,bool)"}},"nodeType":"VariableDeclarationStatement","src":"1073:71:54"},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":8889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8887,"name":"sqrtPriceX96Existing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8880,"src":"1162:20:54","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1186:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1162:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8898,"nodeType":"IfStatement","src":"1158:107:54","trueBody":{"id":8897,"nodeType":"Block","src":"1189:76:54","statements":[{"expression":{"arguments":[{"id":8894,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8831,"src":"1237:12:54","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"arguments":[{"id":8891,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8835,"src":"1220:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8890,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"1207:12:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":8892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1207:18:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":8893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":161,"src":"1207:29:54","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint160_$returns$__$","typeString":"function (uint160) external"}},"id":8895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1207:43:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8896,"nodeType":"ExpressionStatement","src":"1207:43:54"}]}}]},"id":8900,"nodeType":"IfStatement","src":"884:391:54","trueBody":{"id":8878,"nodeType":"Block","src":"908:145:54","statements":[{"expression":{"id":8869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8860,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8835,"src":"922:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8865,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8825,"src":"965:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8866,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8827,"src":"973:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8867,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8829,"src":"981:3:54","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"arguments":[{"id":8862,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8379,"src":"945:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8861,"name":"IAstraCLFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82,"src":"929:15:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLFactory_$82_$","typeString":"type(contract IAstraCLFactory)"}},"id":8863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"929:24:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLFactory_$82","typeString":"contract IAstraCLFactory"}},"id":8864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"createPool","nodeType":"MemberAccess","referencedDeclaration":67,"src":"929:35:54","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint24_$returns$_t_address_$","typeString":"function (address,address,uint24) external returns (address)"}},"id":8868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"929:56:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"922:63:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8870,"nodeType":"ExpressionStatement","src":"922:63:54"},{"expression":{"arguments":[{"id":8875,"name":"sqrtPriceX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8831,"src":"1029:12:54","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"arguments":[{"id":8872,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8835,"src":"1012:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8871,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"999:12:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":8873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"999:18:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":8874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":161,"src":"999:29:54","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint160_$returns$__$","typeString":"function (uint160) external"}},"id":8876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"999:43:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8877,"nodeType":"ExpressionStatement","src":"999:43:54"}]}}]},"documentation":{"id":8823,"nodeType":"StructuredDocumentation","src":"535:32:54","text":"@inheritdoc IPoolInitializer"},"functionSelector":"13ead562","id":8902,"implemented":true,"kind":"function","modifiers":[],"name":"createAndInitializePoolIfNecessary","nodeType":"FunctionDefinition","overrides":{"id":8833,"nodeType":"OverrideSpecifier","overrides":[],"src":"737:8:54"},"parameters":{"id":8832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8825,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":8902,"src":"625:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8824,"name":"address","nodeType":"ElementaryTypeName","src":"625:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8827,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":8902,"src":"649:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8826,"name":"address","nodeType":"ElementaryTypeName","src":"649:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8829,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":8902,"src":"673:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":8828,"name":"uint24","nodeType":"ElementaryTypeName","src":"673:6:54","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":8831,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":8902,"src":"693:20:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":8830,"name":"uint160","nodeType":"ElementaryTypeName","src":"693:7:54","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"615:104:54"},"returnParameters":{"id":8836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8835,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":8902,"src":"755:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8834,"name":"address","nodeType":"ElementaryTypeName","src":"755:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"754:14:54"},"scope":8903,"src":"572:709:54","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":8904,"src":"450:833:54"}],"src":"45:1239:54"},"id":54},"contracts/base/SelfPermit.sol":{"ast":{"absolutePath":"contracts/base/SelfPermit.sol","exportedSymbols":{"IERC20":[4183],"IERC20Permit":[2999],"IERC20PermitAllowed":[10444],"ISelfPermit":[10045],"SelfPermit":[9070]},"id":9071,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8905,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:55"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":8906,"nodeType":"ImportDirective","scope":9071,"sourceUnit":4184,"src":"71:56:55","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/drafts/IERC20Permit.sol","file":"@openzeppelin/contracts/drafts/IERC20Permit.sol","id":8907,"nodeType":"ImportDirective","scope":9071,"sourceUnit":3000,"src":"128:57:55","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/ISelfPermit.sol","file":"../interfaces/ISelfPermit.sol","id":8908,"nodeType":"ImportDirective","scope":9071,"sourceUnit":10046,"src":"187:39:55","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/external/IERC20PermitAllowed.sol","file":"../interfaces/external/IERC20PermitAllowed.sol","id":8909,"nodeType":"ImportDirective","scope":9071,"sourceUnit":10445,"src":"227:56:55","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":8911,"name":"ISelfPermit","nodeType":"UserDefinedTypeName","referencedDeclaration":10045,"src":"612:11:55","typeDescriptions":{"typeIdentifier":"t_contract$_ISelfPermit_$10045","typeString":"contract ISelfPermit"}},"id":8912,"nodeType":"InheritanceSpecifier","src":"612:11:55"}],"contractDependencies":[10045],"contractKind":"contract","documentation":{"id":8910,"nodeType":"StructuredDocumentation","src":"285:295:55","text":"@title Self Permit\n @notice Functionality to call permit on any EIP-2612-compliant token for use in the route\n @dev These functions are expected to be embedded in multicalls to allow EOAs to approve a contract and call a function\n that requires an approval in a single transaction."},"fullyImplemented":true,"id":9070,"linearizedBaseContracts":[9070,10045],"name":"SelfPermit","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[9996],"body":{"id":8946,"nodeType":"Block","src":"839:96:55","statements":[{"expression":{"arguments":[{"expression":{"id":8933,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"876:3:55","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"876:10:55","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":8937,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"896:4:55","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$9070","typeString":"contract SelfPermit"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfPermit_$9070","typeString":"contract SelfPermit"}],"id":8936,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"888:7:55","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8935,"name":"address","nodeType":"ElementaryTypeName","src":"888:7:55","typeDescriptions":{}}},"id":8938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"888:13:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8939,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8917,"src":"903:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8940,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8919,"src":"910:8:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8941,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8921,"src":"920:1:55","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":8942,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8923,"src":"923:1:55","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8943,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8925,"src":"926:1:55","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":8930,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8915,"src":"862:5:55","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8929,"name":"IERC20Permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2999,"src":"849:12:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Permit_$2999_$","typeString":"type(contract IERC20Permit)"}},"id":8931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"849:19:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$2999","typeString":"contract IERC20Permit"}},"id":8932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":2984,"src":"849:26:55","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":8944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"849:79:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8945,"nodeType":"ExpressionStatement","src":"849:79:55"}]},"documentation":{"id":8913,"nodeType":"StructuredDocumentation","src":"630:27:55","text":"@inheritdoc ISelfPermit"},"functionSelector":"f3995c67","id":8947,"implemented":true,"kind":"function","modifiers":[],"name":"selfPermit","nodeType":"FunctionDefinition","overrides":{"id":8927,"nodeType":"OverrideSpecifier","overrides":[],"src":"830:8:55"},"parameters":{"id":8926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8915,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":8947,"src":"691:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8914,"name":"address","nodeType":"ElementaryTypeName","src":"691:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8917,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8947,"src":"714:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8916,"name":"uint256","nodeType":"ElementaryTypeName","src":"714:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8919,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":8947,"src":"737:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8918,"name":"uint256","nodeType":"ElementaryTypeName","src":"737:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8921,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":8947,"src":"763:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8920,"name":"uint8","nodeType":"ElementaryTypeName","src":"763:5:55","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":8923,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":8947,"src":"780:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8922,"name":"bytes32","nodeType":"ElementaryTypeName","src":"780:7:55","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8925,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":8947,"src":"799:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8924,"name":"bytes32","nodeType":"ElementaryTypeName","src":"799:7:55","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"681:133:55"},"returnParameters":{"id":8928,"nodeType":"ParameterList","parameters":[],"src":"839:0:55"},"scope":9070,"src":"662:273:55","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[10012],"body":{"id":8987,"nodeType":"Block","src":"1163:124:55","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":8968,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1201:3:55","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1201:10:55","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":8972,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1221:4:55","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$9070","typeString":"contract SelfPermit"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfPermit_$9070","typeString":"contract SelfPermit"}],"id":8971,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1213:7:55","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8970,"name":"address","nodeType":"ElementaryTypeName","src":"1213:7:55","typeDescriptions":{}}},"id":8973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1213:13:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":8965,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8950,"src":"1184:5:55","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8964,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4183,"src":"1177:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$4183_$","typeString":"type(contract IERC20)"}},"id":8966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1177:13:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4183","typeString":"contract IERC20"}},"id":8967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":4142,"src":"1177:23:55","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":8974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1177:50:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8975,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8952,"src":"1230:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1177:58:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8986,"nodeType":"IfStatement","src":"1173:107:55","trueBody":{"expression":{"arguments":[{"id":8978,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8950,"src":"1248:5:55","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8979,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8952,"src":"1255:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8980,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8954,"src":"1262:8:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8981,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8956,"src":"1272:1:55","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":8982,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8958,"src":"1275:1:55","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8983,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8960,"src":"1278:1:55","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8977,"name":"selfPermit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8947,"src":"1237:10:55","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,uint256,uint256,uint8,bytes32,bytes32)"}},"id":8984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1237:43:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8985,"nodeType":"ExpressionStatement","src":"1237:43:55"}}]},"documentation":{"id":8948,"nodeType":"StructuredDocumentation","src":"941:27:55","text":"@inheritdoc ISelfPermit"},"functionSelector":"c2e3140a","id":8988,"implemented":true,"kind":"function","modifiers":[],"name":"selfPermitIfNecessary","nodeType":"FunctionDefinition","overrides":{"id":8962,"nodeType":"OverrideSpecifier","overrides":[],"src":"1154:8:55"},"parameters":{"id":8961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8950,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":8988,"src":"1013:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8949,"name":"address","nodeType":"ElementaryTypeName","src":"1013:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8952,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8988,"src":"1036:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8951,"name":"uint256","nodeType":"ElementaryTypeName","src":"1036:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8954,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":8988,"src":"1059:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8953,"name":"uint256","nodeType":"ElementaryTypeName","src":"1059:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8956,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":8988,"src":"1085:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8955,"name":"uint8","nodeType":"ElementaryTypeName","src":"1085:5:55","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":8958,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":8988,"src":"1102:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8957,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1102:7:55","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8960,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":8988,"src":"1121:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8959,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1121:7:55","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1003:133:55"},"returnParameters":{"id":8963,"nodeType":"ParameterList","parameters":[],"src":"1163:0:55"},"scope":9070,"src":"973:314:55","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[10028],"body":{"id":9023,"nodeType":"Block","src":"1507:107:55","statements":[{"expression":{"arguments":[{"expression":{"id":9009,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1551:3:55","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1551:10:55","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":9013,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1571:4:55","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$9070","typeString":"contract SelfPermit"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfPermit_$9070","typeString":"contract SelfPermit"}],"id":9012,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1563:7:55","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9011,"name":"address","nodeType":"ElementaryTypeName","src":"1563:7:55","typeDescriptions":{}}},"id":9014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1563:13:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9015,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8993,"src":"1578:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9016,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8995,"src":"1585:6:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":9017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1593:4:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":9018,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8997,"src":"1599:1:55","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":9019,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8999,"src":"1602:1:55","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9020,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9001,"src":"1605:1:55","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":9006,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8991,"src":"1537:5:55","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9005,"name":"IERC20PermitAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10444,"src":"1517:19:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20PermitAllowed_$10444_$","typeString":"type(contract IERC20PermitAllowed)"}},"id":9007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1517:26:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitAllowed_$10444","typeString":"contract IERC20PermitAllowed"}},"id":9008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":10443,"src":"1517:33:55","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,bool,uint8,bytes32,bytes32) external"}},"id":9021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1517:90:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9022,"nodeType":"ExpressionStatement","src":"1517:90:55"}]},"documentation":{"id":8989,"nodeType":"StructuredDocumentation","src":"1293:27:55","text":"@inheritdoc ISelfPermit"},"functionSelector":"4659a494","id":9024,"implemented":true,"kind":"function","modifiers":[],"name":"selfPermitAllowed","nodeType":"FunctionDefinition","overrides":{"id":9003,"nodeType":"OverrideSpecifier","overrides":[],"src":"1498:8:55"},"parameters":{"id":9002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8991,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":9024,"src":"1361:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8990,"name":"address","nodeType":"ElementaryTypeName","src":"1361:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8993,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":9024,"src":"1384:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8992,"name":"uint256","nodeType":"ElementaryTypeName","src":"1384:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8995,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":9024,"src":"1407:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8994,"name":"uint256","nodeType":"ElementaryTypeName","src":"1407:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8997,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":9024,"src":"1431:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8996,"name":"uint8","nodeType":"ElementaryTypeName","src":"1431:5:55","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":8999,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":9024,"src":"1448:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8998,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1448:7:55","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9001,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":9024,"src":"1467:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9000,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1467:7:55","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1351:131:55"},"returnParameters":{"id":9004,"nodeType":"ParameterList","parameters":[],"src":"1507:0:55"},"scope":9070,"src":"1325:289:55","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[10044],"body":{"id":9068,"nodeType":"Block","src":"1847:153:55","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":9045,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1885:3:55","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1885:10:55","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":9049,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1905:4:55","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$9070","typeString":"contract SelfPermit"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfPermit_$9070","typeString":"contract SelfPermit"}],"id":9048,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1897:7:55","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9047,"name":"address","nodeType":"ElementaryTypeName","src":"1897:7:55","typeDescriptions":{}}},"id":9050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1897:13:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":9042,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9027,"src":"1868:5:55","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9041,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4183,"src":"1861:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$4183_$","typeString":"type(contract IERC20)"}},"id":9043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1861:13:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4183","typeString":"contract IERC20"}},"id":9044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":4142,"src":"1861:23:55","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":9051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1861:50:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":9054,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1919:7:55","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9053,"name":"uint256","nodeType":"ElementaryTypeName","src":"1919:7:55","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":9052,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1914:4:55","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":9055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1914:13:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":9056,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"1914:17:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1861:70:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9067,"nodeType":"IfStatement","src":"1857:136:55","trueBody":{"expression":{"arguments":[{"id":9059,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9027,"src":"1963:5:55","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9060,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9029,"src":"1970:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9061,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9031,"src":"1977:6:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9062,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9033,"src":"1985:1:55","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":9063,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9035,"src":"1988:1:55","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9064,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9037,"src":"1991:1:55","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":9058,"name":"selfPermitAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9024,"src":"1945:17:55","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,uint256,uint256,uint8,bytes32,bytes32)"}},"id":9065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1945:48:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9066,"nodeType":"ExpressionStatement","src":"1945:48:55"}}]},"documentation":{"id":9025,"nodeType":"StructuredDocumentation","src":"1620:27:55","text":"@inheritdoc ISelfPermit"},"functionSelector":"a4a78f0c","id":9069,"implemented":true,"kind":"function","modifiers":[],"name":"selfPermitAllowedIfNecessary","nodeType":"FunctionDefinition","overrides":{"id":9039,"nodeType":"OverrideSpecifier","overrides":[],"src":"1838:8:55"},"parameters":{"id":9038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9027,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":9069,"src":"1699:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9026,"name":"address","nodeType":"ElementaryTypeName","src":"1699:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9029,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":9069,"src":"1722:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9028,"name":"uint256","nodeType":"ElementaryTypeName","src":"1722:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9031,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":9069,"src":"1745:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9030,"name":"uint256","nodeType":"ElementaryTypeName","src":"1745:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9033,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":9069,"src":"1769:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9032,"name":"uint8","nodeType":"ElementaryTypeName","src":"1769:5:55","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":9035,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":9069,"src":"1786:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9034,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1786:7:55","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9037,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":9069,"src":"1805:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9036,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1805:7:55","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1689:131:55"},"returnParameters":{"id":9040,"nodeType":"ParameterList","parameters":[],"src":"1847:0:55"},"scope":9070,"src":"1652:348:55","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":9071,"src":"580:1422:55"}],"src":"45:1958:55"},"id":55},"contracts/examples/PairFlash.sol":{"ast":{"absolutePath":"contracts/examples/PairFlash.sol","exportedSymbols":{"CallbackValidation":[12125],"IAstraCLFlashCallback":[124],"IAstraCLPool":[110],"IAstraCLPoolActions":[248],"IAstraCLPoolDerivedState":[279],"IAstraCLPoolEvents":[398],"IAstraCLPoolImmutables":[438],"IAstraCLPoolOwnerActions":[464],"IAstraCLPoolState":[572],"IAstraCLSwapCallback":[152],"IERC20":[4183],"IPeripheryImmutableState":[9751],"IPeripheryPayments":[9777],"ISAMB":[10461],"ISwapRouter":[10141],"LowGasSafeMath":[1223],"PairFlash":[9404],"PeripheryImmutableState":[8400],"PeripheryPayments":[8610],"PoolAddress":[14364],"TransferHelper":[15676]},"id":9405,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9072,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:56"},{"id":9073,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"69:19:56"},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLFlashCallback.sol","file":"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLFlashCallback.sol","id":9074,"nodeType":"ImportDirective","scope":9405,"sourceUnit":125,"src":"143:87:56","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol","file":"@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol","id":9075,"nodeType":"ImportDirective","scope":9405,"sourceUnit":1224,"src":"284:70:56","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/PeripheryPayments.sol","file":"../base/PeripheryPayments.sol","id":9076,"nodeType":"ImportDirective","scope":9405,"sourceUnit":8611,"src":"356:39:56","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/PeripheryImmutableState.sol","file":"../base/PeripheryImmutableState.sol","id":9077,"nodeType":"ImportDirective","scope":9405,"sourceUnit":8401,"src":"396:45:56","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/PoolAddress.sol","file":"../libraries/PoolAddress.sol","id":9078,"nodeType":"ImportDirective","scope":9405,"sourceUnit":14365,"src":"442:38:56","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/CallbackValidation.sol","file":"../libraries/CallbackValidation.sol","id":9079,"nodeType":"ImportDirective","scope":9405,"sourceUnit":12126,"src":"481:45:56","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/TransferHelper.sol","file":"../libraries/TransferHelper.sol","id":9080,"nodeType":"ImportDirective","scope":9405,"sourceUnit":15677,"src":"527:41:56","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/ISwapRouter.sol","file":"../interfaces/ISwapRouter.sol","id":9081,"nodeType":"ImportDirective","scope":9405,"sourceUnit":10142,"src":"569:39:56","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9083,"name":"IAstraCLFlashCallback","nodeType":"UserDefinedTypeName","referencedDeclaration":124,"src":"742:21:56","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLFlashCallback_$124","typeString":"contract IAstraCLFlashCallback"}},"id":9084,"nodeType":"InheritanceSpecifier","src":"742:21:56"},{"baseName":{"id":9085,"name":"PeripheryPayments","nodeType":"UserDefinedTypeName","referencedDeclaration":8610,"src":"765:17:56","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryPayments_$8610","typeString":"contract PeripheryPayments"}},"id":9086,"nodeType":"InheritanceSpecifier","src":"765:17:56"}],"contractDependencies":[124,8400,8610,9751,9777],"contractKind":"contract","documentation":{"id":9082,"nodeType":"StructuredDocumentation","src":"610:110:56","text":"@title Flash contract implementation\n @notice An example contract using the AstraDEX CL flash function"},"fullyImplemented":true,"id":9404,"linearizedBaseContracts":[9404,8610,8400,9751,9777,124],"name":"PairFlash","nodeType":"ContractDefinition","nodes":[{"id":9089,"libraryName":{"id":9087,"name":"LowGasSafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":1223,"src":"795:14:56","typeDescriptions":{"typeIdentifier":"t_contract$_LowGasSafeMath_$1223","typeString":"library LowGasSafeMath"}},"nodeType":"UsingForDirective","src":"789:33:56","typeName":{"id":9088,"name":"uint256","nodeType":"ElementaryTypeName","src":"814:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":9092,"libraryName":{"id":9090,"name":"LowGasSafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":1223,"src":"833:14:56","typeDescriptions":{"typeIdentifier":"t_contract$_LowGasSafeMath_$1223","typeString":"library LowGasSafeMath"}},"nodeType":"UsingForDirective","src":"827:32:56","typeName":{"id":9091,"name":"int256","nodeType":"ElementaryTypeName","src":"852:6:56","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}},{"constant":false,"functionSelector":"c31c9c07","id":9094,"mutability":"immutable","name":"swapRouter","nodeType":"VariableDeclaration","scope":9404,"src":"865:39:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$10141","typeString":"contract ISwapRouter"},"typeName":{"id":9093,"name":"ISwapRouter","nodeType":"UserDefinedTypeName","referencedDeclaration":10141,"src":"865:11:56","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$10141","typeString":"contract ISwapRouter"}},"visibility":"public"},{"body":{"id":9111,"nodeType":"Block","src":"1022:41:56","statements":[{"expression":{"id":9109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9107,"name":"swapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9094,"src":"1032:10:56","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$10141","typeString":"contract ISwapRouter"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9108,"name":"_swapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9096,"src":"1045:11:56","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$10141","typeString":"contract ISwapRouter"}},"src":"1032:24:56","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$10141","typeString":"contract ISwapRouter"}},"id":9110,"nodeType":"ExpressionStatement","src":"1032:24:56"}]},"id":9112,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9103,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9098,"src":"1005:8:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9104,"name":"_SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9100,"src":"1015:5:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":9105,"modifierName":{"id":9102,"name":"PeripheryImmutableState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8400,"src":"981:23:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PeripheryImmutableState_$8400_$","typeString":"type(contract PeripheryImmutableState)"}},"nodeType":"ModifierInvocation","src":"981:40:56"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9096,"mutability":"mutable","name":"_swapRouter","nodeType":"VariableDeclaration","scope":9112,"src":"923:23:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$10141","typeString":"contract ISwapRouter"},"typeName":{"id":9095,"name":"ISwapRouter","nodeType":"UserDefinedTypeName","referencedDeclaration":10141,"src":"923:11:56","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$10141","typeString":"contract ISwapRouter"}},"visibility":"internal"},{"constant":false,"id":9098,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":9112,"src":"948:16:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9097,"name":"address","nodeType":"ElementaryTypeName","src":"948:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9100,"mutability":"mutable","name":"_SAMB","nodeType":"VariableDeclaration","scope":9112,"src":"966:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9099,"name":"address","nodeType":"ElementaryTypeName","src":"966:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:58:56"},"returnParameters":{"id":9106,"nodeType":"ParameterList","parameters":[],"src":"1022:0:56"},"scope":9404,"src":"911:152:56","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"canonicalName":"PairFlash.FlashCallbackData","id":9125,"members":[{"constant":false,"id":9114,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":9125,"src":"1205:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9113,"name":"uint256","nodeType":"ElementaryTypeName","src":"1205:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9116,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":9125,"src":"1230:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9115,"name":"uint256","nodeType":"ElementaryTypeName","src":"1230:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9118,"mutability":"mutable","name":"payer","nodeType":"VariableDeclaration","scope":9125,"src":"1255:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9117,"name":"address","nodeType":"ElementaryTypeName","src":"1255:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9120,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":9125,"src":"1278:27:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_storage_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":9119,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":14285,"src":"1278:19:56","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"},{"constant":false,"id":9122,"mutability":"mutable","name":"poolFee2","nodeType":"VariableDeclaration","scope":9125,"src":"1315:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":9121,"name":"uint24","nodeType":"ElementaryTypeName","src":"1315:6:56","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":9124,"mutability":"mutable","name":"poolFee3","nodeType":"VariableDeclaration","scope":9125,"src":"1340:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":9123,"name":"uint24","nodeType":"ElementaryTypeName","src":"1340:6:56","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"name":"FlashCallbackData","nodeType":"StructDefinition","scope":9404,"src":"1170:192:56","visibility":"public"},{"baseFunctions":[123],"body":{"id":9327,"nodeType":"Block","src":"1857:2400:56","statements":[{"assignments":[9137],"declarations":[{"constant":false,"id":9137,"mutability":"mutable","name":"decoded","nodeType":"VariableDeclaration","scope":9327,"src":"1867:32:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCallbackData_$9125_memory_ptr","typeString":"struct PairFlash.FlashCallbackData"},"typeName":{"id":9136,"name":"FlashCallbackData","nodeType":"UserDefinedTypeName","referencedDeclaration":9125,"src":"1867:17:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCallbackData_$9125_storage_ptr","typeString":"struct PairFlash.FlashCallbackData"}},"visibility":"internal"}],"id":9144,"initialValue":{"arguments":[{"id":9140,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9132,"src":"1913:4:56","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":9141,"name":"FlashCallbackData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9125,"src":"1920:17:56","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_FlashCallbackData_$9125_storage_ptr_$","typeString":"type(struct PairFlash.FlashCallbackData storage pointer)"}}],"id":9142,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1919:19:56","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_FlashCallbackData_$9125_storage_ptr_$","typeString":"type(struct PairFlash.FlashCallbackData storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_type$_t_struct$_FlashCallbackData_$9125_storage_ptr_$","typeString":"type(struct PairFlash.FlashCallbackData storage pointer)"}],"expression":{"id":9138,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1902:3:56","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9139,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1902:10:56","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":9143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1902:37:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_FlashCallbackData_$9125_memory_ptr","typeString":"struct PairFlash.FlashCallbackData memory"}},"nodeType":"VariableDeclarationStatement","src":"1867:72:56"},{"expression":{"arguments":[{"id":9148,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8379,"src":"1983:7:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":9149,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9137,"src":"1992:7:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCallbackData_$9125_memory_ptr","typeString":"struct PairFlash.FlashCallbackData memory"}},"id":9150,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolKey","nodeType":"MemberAccess","referencedDeclaration":9120,"src":"1992:15:56","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":9145,"name":"CallbackValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12125,"src":"1949:18:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CallbackValidation_$12125_$","typeString":"type(library CallbackValidation)"}},"id":9147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"verifyCallback","nodeType":"MemberAccess","referencedDeclaration":12124,"src":"1949:33:56","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_struct$_PoolKey_$14285_memory_ptr_$returns$_t_contract$_IAstraCLPool_$110_$","typeString":"function (address,struct PoolAddress.PoolKey memory) view returns (contract IAstraCLPool)"}},"id":9151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1949:59:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":9152,"nodeType":"ExpressionStatement","src":"1949:59:56"},{"assignments":[9154],"declarations":[{"constant":false,"id":9154,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":9327,"src":"2019:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9153,"name":"address","nodeType":"ElementaryTypeName","src":"2019:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9158,"initialValue":{"expression":{"expression":{"id":9155,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9137,"src":"2036:7:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCallbackData_$9125_memory_ptr","typeString":"struct PairFlash.FlashCallbackData memory"}},"id":9156,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolKey","nodeType":"MemberAccess","referencedDeclaration":9120,"src":"2036:15:56","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":9157,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":14280,"src":"2036:22:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2019:39:56"},{"assignments":[9160],"declarations":[{"constant":false,"id":9160,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":9327,"src":"2068:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9159,"name":"address","nodeType":"ElementaryTypeName","src":"2068:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9164,"initialValue":{"expression":{"expression":{"id":9161,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9137,"src":"2085:7:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCallbackData_$9125_memory_ptr","typeString":"struct PairFlash.FlashCallbackData memory"}},"id":9162,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolKey","nodeType":"MemberAccess","referencedDeclaration":9120,"src":"2085:15:56","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":9163,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":14282,"src":"2085:22:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2068:39:56"},{"assignments":[9166],"declarations":[{"constant":false,"id":9166,"mutability":"mutable","name":"amount0Min","nodeType":"VariableDeclaration","scope":9327,"src":"2288:18:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9165,"name":"uint256","nodeType":"ElementaryTypeName","src":"2288:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9173,"initialValue":{"arguments":[{"expression":{"id":9169,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9137,"src":"2328:7:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCallbackData_$9125_memory_ptr","typeString":"struct PairFlash.FlashCallbackData memory"}},"id":9170,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount0","nodeType":"MemberAccess","referencedDeclaration":9114,"src":"2328:15:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9171,"name":"fee0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9128,"src":"2345:4:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9167,"name":"LowGasSafeMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1223,"src":"2309:14:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowGasSafeMath_$1223_$","typeString":"type(library LowGasSafeMath)"}},"id":9168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":1118,"src":"2309:18:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2309:41:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2288:62:56"},{"assignments":[9175],"declarations":[{"constant":false,"id":9175,"mutability":"mutable","name":"amount1Min","nodeType":"VariableDeclaration","scope":9327,"src":"2360:18:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9174,"name":"uint256","nodeType":"ElementaryTypeName","src":"2360:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9182,"initialValue":{"arguments":[{"expression":{"id":9178,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9137,"src":"2400:7:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCallbackData_$9125_memory_ptr","typeString":"struct PairFlash.FlashCallbackData memory"}},"id":9179,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount1","nodeType":"MemberAccess","referencedDeclaration":9116,"src":"2400:15:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9180,"name":"fee1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9130,"src":"2417:4:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9176,"name":"LowGasSafeMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1223,"src":"2381:14:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LowGasSafeMath_$1223_$","typeString":"type(library LowGasSafeMath)"}},"id":9177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":1118,"src":"2381:18:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2381:41:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2360:62:56"},{"expression":{"arguments":[{"id":9186,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9160,"src":"2542:6:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":9189,"name":"swapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9094,"src":"2558:10:56","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$10141","typeString":"contract ISwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISwapRouter_$10141","typeString":"contract ISwapRouter"}],"id":9188,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2550:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9187,"name":"address","nodeType":"ElementaryTypeName","src":"2550:7:56","typeDescriptions":{}}},"id":9190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2550:19:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":9191,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9137,"src":"2571:7:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCallbackData_$9125_memory_ptr","typeString":"struct PairFlash.FlashCallbackData memory"}},"id":9192,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount1","nodeType":"MemberAccess","referencedDeclaration":9116,"src":"2571:15:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9183,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15676,"src":"2515:14:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$15676_$","typeString":"type(library TransferHelper)"}},"id":9185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":15649,"src":"2515:26:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":9193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2515:72:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9194,"nodeType":"ExpressionStatement","src":"2515:72:56"},{"assignments":[9196],"declarations":[{"constant":false,"id":9196,"mutability":"mutable","name":"amountOut0","nodeType":"VariableDeclaration","scope":9327,"src":"2597:18:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9195,"name":"uint256","nodeType":"ElementaryTypeName","src":"2597:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9217,"initialValue":{"arguments":[{"arguments":[{"id":9201,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9160,"src":"2721:6:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9202,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9154,"src":"2755:6:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":9203,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9137,"src":"2784:7:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCallbackData_$9125_memory_ptr","typeString":"struct PairFlash.FlashCallbackData memory"}},"id":9204,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolFee2","nodeType":"MemberAccess","referencedDeclaration":9122,"src":"2784:16:56","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"arguments":[{"id":9207,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2837:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_PairFlash_$9404","typeString":"contract PairFlash"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PairFlash_$9404","typeString":"contract PairFlash"}],"id":9206,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2829:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9205,"name":"address","nodeType":"ElementaryTypeName","src":"2829:7:56","typeDescriptions":{}}},"id":9208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2829:13:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":9209,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2870:5:56","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"2870:15:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9211,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9137,"src":"2913:7:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCallbackData_$9125_memory_ptr","typeString":"struct PairFlash.FlashCallbackData memory"}},"id":9212,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount1","nodeType":"MemberAccess","referencedDeclaration":9116,"src":"2913:15:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9213,"name":"amount0Min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9166,"src":"2964:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":9214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3011:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":9199,"name":"ISwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10141,"src":"2659:11:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISwapRouter_$10141_$","typeString":"type(contract ISwapRouter)"}},"id":9200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExactInputSingleParams","nodeType":"MemberAccess","referencedDeclaration":10069,"src":"2659:34:56","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ExactInputSingleParams_$10069_storage_ptr_$","typeString":"type(struct ISwapRouter.ExactInputSingleParams storage pointer)"}},"id":9215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["tokenIn","tokenOut","fee","recipient","deadline","amountIn","amountOutMinimum","sqrtPriceLimitX96"],"nodeType":"FunctionCall","src":"2659:368:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$10069_memory_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ExactInputSingleParams_$10069_memory_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams memory"}],"expression":{"id":9197,"name":"swapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9094,"src":"2618:10:56","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$10141","typeString":"contract ISwapRouter"}},"id":9198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exactInputSingle","nodeType":"MemberAccess","referencedDeclaration":10077,"src":"2618:27:56","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_ExactInputSingleParams_$10069_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct ISwapRouter.ExactInputSingleParams memory) payable external returns (uint256)"}},"id":9216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2618:419:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2597:440:56"},{"expression":{"arguments":[{"id":9221,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9154,"src":"3158:6:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":9224,"name":"swapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9094,"src":"3174:10:56","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$10141","typeString":"contract ISwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISwapRouter_$10141","typeString":"contract ISwapRouter"}],"id":9223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3166:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9222,"name":"address","nodeType":"ElementaryTypeName","src":"3166:7:56","typeDescriptions":{}}},"id":9225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3166:19:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":9226,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9137,"src":"3187:7:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCallbackData_$9125_memory_ptr","typeString":"struct PairFlash.FlashCallbackData memory"}},"id":9227,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount0","nodeType":"MemberAccess","referencedDeclaration":9114,"src":"3187:15:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9218,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15676,"src":"3131:14:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$15676_$","typeString":"type(library TransferHelper)"}},"id":9220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":15649,"src":"3131:26:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":9228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3131:72:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9229,"nodeType":"ExpressionStatement","src":"3131:72:56"},{"assignments":[9231],"declarations":[{"constant":false,"id":9231,"mutability":"mutable","name":"amountOut1","nodeType":"VariableDeclaration","scope":9327,"src":"3213:18:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9230,"name":"uint256","nodeType":"ElementaryTypeName","src":"3213:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9252,"initialValue":{"arguments":[{"arguments":[{"id":9236,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9154,"src":"3337:6:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9237,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9160,"src":"3371:6:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":9238,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9137,"src":"3400:7:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCallbackData_$9125_memory_ptr","typeString":"struct PairFlash.FlashCallbackData memory"}},"id":9239,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolFee3","nodeType":"MemberAccess","referencedDeclaration":9124,"src":"3400:16:56","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"arguments":[{"id":9242,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3453:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_PairFlash_$9404","typeString":"contract PairFlash"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PairFlash_$9404","typeString":"contract PairFlash"}],"id":9241,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3445:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9240,"name":"address","nodeType":"ElementaryTypeName","src":"3445:7:56","typeDescriptions":{}}},"id":9243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3445:13:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":9244,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3486:5:56","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"3486:15:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9246,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9137,"src":"3529:7:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCallbackData_$9125_memory_ptr","typeString":"struct PairFlash.FlashCallbackData memory"}},"id":9247,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount0","nodeType":"MemberAccess","referencedDeclaration":9114,"src":"3529:15:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9248,"name":"amount1Min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9175,"src":"3580:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":9249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3627:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":9234,"name":"ISwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10141,"src":"3275:11:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISwapRouter_$10141_$","typeString":"type(contract ISwapRouter)"}},"id":9235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExactInputSingleParams","nodeType":"MemberAccess","referencedDeclaration":10069,"src":"3275:34:56","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ExactInputSingleParams_$10069_storage_ptr_$","typeString":"type(struct ISwapRouter.ExactInputSingleParams storage pointer)"}},"id":9250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["tokenIn","tokenOut","fee","recipient","deadline","amountIn","amountOutMinimum","sqrtPriceLimitX96"],"nodeType":"FunctionCall","src":"3275:368:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$10069_memory_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ExactInputSingleParams_$10069_memory_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams memory"}],"expression":{"id":9232,"name":"swapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9094,"src":"3234:10:56","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$10141","typeString":"contract ISwapRouter"}},"id":9233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exactInputSingle","nodeType":"MemberAccess","referencedDeclaration":10077,"src":"3234:27:56","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_ExactInputSingleParams_$10069_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct ISwapRouter.ExactInputSingleParams memory) payable external returns (uint256)"}},"id":9251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3234:419:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3213:440:56"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9253,"name":"amount0Min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9166,"src":"3721:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3734:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3721:14:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9267,"nodeType":"IfStatement","src":"3717:70:56","trueBody":{"expression":{"arguments":[{"id":9257,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9154,"src":"3741:6:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":9260,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3757:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_PairFlash_$9404","typeString":"contract PairFlash"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PairFlash_$9404","typeString":"contract PairFlash"}],"id":9259,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3749:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9258,"name":"address","nodeType":"ElementaryTypeName","src":"3749:7:56","typeDescriptions":{}}},"id":9261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3749:13:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":9262,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3764:3:56","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3764:10:56","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":9264,"name":"amount0Min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9166,"src":"3776:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9256,"name":"pay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8609,"src":"3737:3:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":9265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3737:50:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9266,"nodeType":"ExpressionStatement","src":"3737:50:56"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9268,"name":"amount1Min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9175,"src":"3801:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3814:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3801:14:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9282,"nodeType":"IfStatement","src":"3797:70:56","trueBody":{"expression":{"arguments":[{"id":9272,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9160,"src":"3821:6:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":9275,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3837:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_PairFlash_$9404","typeString":"contract PairFlash"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PairFlash_$9404","typeString":"contract PairFlash"}],"id":9274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3829:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9273,"name":"address","nodeType":"ElementaryTypeName","src":"3829:7:56","typeDescriptions":{}}},"id":9276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3829:13:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":9277,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3844:3:56","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3844:10:56","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":9279,"name":"amount1Min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9175,"src":"3856:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9271,"name":"pay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8609,"src":"3817:3:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":9280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3817:50:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9281,"nodeType":"ExpressionStatement","src":"3817:50:56"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9283,"name":"amountOut0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9196,"src":"3928:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9284,"name":"amount0Min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9166,"src":"3941:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3928:23:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9304,"nodeType":"IfStatement","src":"3924:159:56","trueBody":{"id":9303,"nodeType":"Block","src":"3953:130:56","statements":[{"assignments":[9287],"declarations":[{"constant":false,"id":9287,"mutability":"mutable","name":"profit0","nodeType":"VariableDeclaration","scope":9303,"src":"3967:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9286,"name":"uint256","nodeType":"ElementaryTypeName","src":"3967:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9291,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9288,"name":"amountOut0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9196,"src":"3985:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9289,"name":"amount0Min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9166,"src":"3998:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3985:23:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3967:41:56"},{"expression":{"arguments":[{"id":9293,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9154,"src":"4026:6:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":9296,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4042:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_PairFlash_$9404","typeString":"contract PairFlash"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PairFlash_$9404","typeString":"contract PairFlash"}],"id":9295,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4034:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9294,"name":"address","nodeType":"ElementaryTypeName","src":"4034:7:56","typeDescriptions":{}}},"id":9297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4034:13:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":9298,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9137,"src":"4049:7:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCallbackData_$9125_memory_ptr","typeString":"struct PairFlash.FlashCallbackData memory"}},"id":9299,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payer","nodeType":"MemberAccess","referencedDeclaration":9118,"src":"4049:13:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9300,"name":"profit0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9287,"src":"4064:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9292,"name":"pay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8609,"src":"4022:3:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":9301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4022:50:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9302,"nodeType":"ExpressionStatement","src":"4022:50:56"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9305,"name":"amountOut1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9231,"src":"4096:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9306,"name":"amount1Min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9175,"src":"4109:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4096:23:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9326,"nodeType":"IfStatement","src":"4092:159:56","trueBody":{"id":9325,"nodeType":"Block","src":"4121:130:56","statements":[{"assignments":[9309],"declarations":[{"constant":false,"id":9309,"mutability":"mutable","name":"profit1","nodeType":"VariableDeclaration","scope":9325,"src":"4135:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9308,"name":"uint256","nodeType":"ElementaryTypeName","src":"4135:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9313,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9310,"name":"amountOut1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9231,"src":"4153:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9311,"name":"amount1Min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9175,"src":"4166:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4153:23:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4135:41:56"},{"expression":{"arguments":[{"id":9315,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9160,"src":"4194:6:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":9318,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4210:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_PairFlash_$9404","typeString":"contract PairFlash"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PairFlash_$9404","typeString":"contract PairFlash"}],"id":9317,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4202:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9316,"name":"address","nodeType":"ElementaryTypeName","src":"4202:7:56","typeDescriptions":{}}},"id":9319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4202:13:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":9320,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9137,"src":"4217:7:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashCallbackData_$9125_memory_ptr","typeString":"struct PairFlash.FlashCallbackData memory"}},"id":9321,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payer","nodeType":"MemberAccess","referencedDeclaration":9118,"src":"4217:13:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9322,"name":"profit1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9309,"src":"4232:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9314,"name":"pay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8609,"src":"4190:3:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":9323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4190:50:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9324,"nodeType":"ExpressionStatement","src":"4190:50:56"}]}}]},"documentation":{"id":9126,"nodeType":"StructuredDocumentation","src":"1368:387:56","text":"@param fee0 The fee from calling flash for token0\n @param fee1 The fee from calling flash for token1\n @param data The data needed in the callback passed as FlashCallbackData from `initFlash`\n @notice implements the callback called from flash\n @dev fails if the flash is not profitable, meaning the amountOut from the flash is less than the amount borrowed"},"functionSelector":"e5a389c1","id":9328,"implemented":true,"kind":"function","modifiers":[],"name":"astraCLFlashCallback","nodeType":"FunctionDefinition","overrides":{"id":9134,"nodeType":"OverrideSpecifier","overrides":[],"src":"1848:8:56"},"parameters":{"id":9133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9128,"mutability":"mutable","name":"fee0","nodeType":"VariableDeclaration","scope":9328,"src":"1790:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9127,"name":"uint256","nodeType":"ElementaryTypeName","src":"1790:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9130,"mutability":"mutable","name":"fee1","nodeType":"VariableDeclaration","scope":9328,"src":"1804:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9129,"name":"uint256","nodeType":"ElementaryTypeName","src":"1804:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9132,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":9328,"src":"1818:19:56","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":9131,"name":"bytes","nodeType":"ElementaryTypeName","src":"1818:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1789:49:56"},"returnParameters":{"id":9135,"nodeType":"ParameterList","parameters":[],"src":"1857:0:56"},"scope":9404,"src":"1760:2497:56","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"PairFlash.FlashParams","id":9343,"members":[{"constant":false,"id":9330,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":9343,"src":"4455:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9329,"name":"address","nodeType":"ElementaryTypeName","src":"4455:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9332,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":9343,"src":"4479:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9331,"name":"address","nodeType":"ElementaryTypeName","src":"4479:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9334,"mutability":"mutable","name":"fee1","nodeType":"VariableDeclaration","scope":9343,"src":"4503:11:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":9333,"name":"uint24","nodeType":"ElementaryTypeName","src":"4503:6:56","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":9336,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":9343,"src":"4524:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9335,"name":"uint256","nodeType":"ElementaryTypeName","src":"4524:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9338,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":9343,"src":"4549:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9337,"name":"uint256","nodeType":"ElementaryTypeName","src":"4549:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9340,"mutability":"mutable","name":"fee2","nodeType":"VariableDeclaration","scope":9343,"src":"4574:11:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":9339,"name":"uint24","nodeType":"ElementaryTypeName","src":"4574:6:56","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":9342,"mutability":"mutable","name":"fee3","nodeType":"VariableDeclaration","scope":9343,"src":"4595:11:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":9341,"name":"uint24","nodeType":"ElementaryTypeName","src":"4595:6:56","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"name":"FlashParams","nodeType":"StructDefinition","scope":9404,"src":"4426:187:56","visibility":"public"},{"body":{"id":9402,"nodeType":"Block","src":"4864:989:56","statements":[{"assignments":[9352],"declarations":[{"constant":false,"id":9352,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":9402,"src":"4874:34:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":9351,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":14285,"src":"4874:19:56","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"id":9362,"initialValue":{"arguments":[{"expression":{"id":9355,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9346,"src":"4953:6:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashParams_$9343_memory_ptr","typeString":"struct PairFlash.FlashParams memory"}},"id":9356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":9330,"src":"4953:13:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":9357,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9346,"src":"4988:6:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashParams_$9343_memory_ptr","typeString":"struct PairFlash.FlashParams memory"}},"id":9358,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":9332,"src":"4988:13:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":9359,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9346,"src":"5020:6:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashParams_$9343_memory_ptr","typeString":"struct PairFlash.FlashParams memory"}},"id":9360,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee1","nodeType":"MemberAccess","referencedDeclaration":9334,"src":"5020:11:56","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":9353,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14364,"src":"4911:11:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$14364_$","typeString":"type(library PoolAddress)"}},"id":9354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PoolKey","nodeType":"MemberAccess","referencedDeclaration":14285,"src":"4911:19:56","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolKey_$14285_storage_ptr_$","typeString":"type(struct PoolAddress.PoolKey storage pointer)"}},"id":9361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee"],"nodeType":"FunctionCall","src":"4911:131:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"nodeType":"VariableDeclarationStatement","src":"4874:168:56"},{"assignments":[9364],"declarations":[{"constant":false,"id":9364,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":9402,"src":"5052:17:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":9363,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"5052:12:56","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"}],"id":9372,"initialValue":{"arguments":[{"arguments":[{"id":9368,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8379,"src":"5112:7:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9369,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9352,"src":"5121:7:56","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":9366,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14364,"src":"5085:11:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$14364_$","typeString":"type(library PoolAddress)"}},"id":9367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":14363,"src":"5085:26:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$14285_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":9370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5085:44:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9365,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"5072:12:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":9371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5072:58:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"nodeType":"VariableDeclarationStatement","src":"5052:78:56"},{"expression":{"arguments":[{"arguments":[{"id":9378,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5429:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_PairFlash_$9404","typeString":"contract PairFlash"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PairFlash_$9404","typeString":"contract PairFlash"}],"id":9377,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5421:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9376,"name":"address","nodeType":"ElementaryTypeName","src":"5421:7:56","typeDescriptions":{}}},"id":9379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5421:13:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":9380,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9346,"src":"5448:6:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashParams_$9343_memory_ptr","typeString":"struct PairFlash.FlashParams memory"}},"id":9381,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount0","nodeType":"MemberAccess","referencedDeclaration":9336,"src":"5448:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9382,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9346,"src":"5476:6:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashParams_$9343_memory_ptr","typeString":"struct PairFlash.FlashParams memory"}},"id":9383,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount1","nodeType":"MemberAccess","referencedDeclaration":9338,"src":"5476:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"arguments":[{"expression":{"id":9387,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9346,"src":"5581:6:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashParams_$9343_memory_ptr","typeString":"struct PairFlash.FlashParams memory"}},"id":9388,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount0","nodeType":"MemberAccess","referencedDeclaration":9336,"src":"5581:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9389,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9346,"src":"5626:6:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashParams_$9343_memory_ptr","typeString":"struct PairFlash.FlashParams memory"}},"id":9390,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount1","nodeType":"MemberAccess","referencedDeclaration":9338,"src":"5626:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9391,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5669:3:56","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5669:10:56","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":9393,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9352,"src":"5710:7:56","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},{"expression":{"id":9394,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9346,"src":"5749:6:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashParams_$9343_memory_ptr","typeString":"struct PairFlash.FlashParams memory"}},"id":9395,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee2","nodeType":"MemberAccess","referencedDeclaration":9340,"src":"5749:11:56","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"expression":{"id":9396,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9346,"src":"5792:6:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashParams_$9343_memory_ptr","typeString":"struct PairFlash.FlashParams memory"}},"id":9397,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee3","nodeType":"MemberAccess","referencedDeclaration":9342,"src":"5792:11:56","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":9386,"name":"FlashCallbackData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9125,"src":"5532:17:56","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_FlashCallbackData_$9125_storage_ptr_$","typeString":"type(struct PairFlash.FlashCallbackData storage pointer)"}},"id":9398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["amount0","amount1","payer","poolKey","poolFee2","poolFee3"],"nodeType":"FunctionCall","src":"5532:290:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_FlashCallbackData_$9125_memory_ptr","typeString":"struct PairFlash.FlashCallbackData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_FlashCallbackData_$9125_memory_ptr","typeString":"struct PairFlash.FlashCallbackData memory"}],"expression":{"id":9384,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5504:3:56","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9385,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"5504:10:56","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":9399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5504:332:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":9373,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9364,"src":"5397:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":9375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"flash","nodeType":"MemberAccess","referencedDeclaration":241,"src":"5397:10:56","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,uint256,bytes memory) external"}},"id":9400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5397:449:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9401,"nodeType":"ExpressionStatement","src":"5397:449:56"}]},"documentation":{"id":9344,"nodeType":"StructuredDocumentation","src":"4619:185:56","text":"@param params The parameters necessary for flash and the callback, passed in as FlashParams\n @notice Calls the pools flash function with data needed in `astraCLFlashCallback`"},"functionSelector":"2384463b","id":9403,"implemented":true,"kind":"function","modifiers":[],"name":"initFlash","nodeType":"FunctionDefinition","parameters":{"id":9347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9346,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":9403,"src":"4828:25:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FlashParams_$9343_memory_ptr","typeString":"struct PairFlash.FlashParams"},"typeName":{"id":9345,"name":"FlashParams","nodeType":"UserDefinedTypeName","referencedDeclaration":9343,"src":"4828:11:56","typeDescriptions":{"typeIdentifier":"t_struct$_FlashParams_$9343_storage_ptr","typeString":"struct PairFlash.FlashParams"}},"visibility":"internal"}],"src":"4827:27:56"},"returnParameters":{"id":9348,"nodeType":"ParameterList","parameters":[],"src":"4864:0:56"},"scope":9404,"src":"4809:1044:56","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":9405,"src":"720:5135:56"}],"src":"45:5811:56"},"id":56},"contracts/interfaces/ICLMigrator.sol":{"ast":{"absolutePath":"contracts/interfaces/ICLMigrator.sol","exportedSymbols":{"ICLMigrator":[9451],"IMulticall":[9526],"IPoolInitializer":[9829],"ISelfPermit":[10045]},"id":9452,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9406,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:57"},{"id":9407,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"70:19:57"},{"absolutePath":"contracts/interfaces/IMulticall.sol","file":"./IMulticall.sol","id":9408,"nodeType":"ImportDirective","scope":9452,"sourceUnit":9527,"src":"91:26:57","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/ISelfPermit.sol","file":"./ISelfPermit.sol","id":9409,"nodeType":"ImportDirective","scope":9452,"sourceUnit":10046,"src":"118:27:57","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IPoolInitializer.sol","file":"./IPoolInitializer.sol","id":9410,"nodeType":"ImportDirective","scope":9452,"sourceUnit":9830,"src":"146:32:57","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9412,"name":"IMulticall","nodeType":"UserDefinedTypeName","referencedDeclaration":9526,"src":"324:10:57","typeDescriptions":{"typeIdentifier":"t_contract$_IMulticall_$9526","typeString":"contract IMulticall"}},"id":9413,"nodeType":"InheritanceSpecifier","src":"324:10:57"},{"baseName":{"id":9414,"name":"ISelfPermit","nodeType":"UserDefinedTypeName","referencedDeclaration":10045,"src":"336:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_ISelfPermit_$10045","typeString":"contract ISelfPermit"}},"id":9415,"nodeType":"InheritanceSpecifier","src":"336:11:57"},{"baseName":{"id":9416,"name":"IPoolInitializer","nodeType":"UserDefinedTypeName","referencedDeclaration":9829,"src":"349:16:57","typeDescriptions":{"typeIdentifier":"t_contract$_IPoolInitializer_$9829","typeString":"contract IPoolInitializer"}},"id":9417,"nodeType":"InheritanceSpecifier","src":"349:16:57"}],"contractDependencies":[9526,9829,10045],"contractKind":"interface","documentation":{"id":9411,"nodeType":"StructuredDocumentation","src":"180:119:57","text":"@title CL Migrator\n @notice Enables migration of liqudity from AstraDEX-compatible pairs into AstraDEX CL pools"},"fullyImplemented":false,"id":9451,"linearizedBaseContracts":[9451,9829,10045,9526],"name":"ICLMigrator","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ICLMigrator.MigrateParams","id":9444,"members":[{"constant":false,"id":9419,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","scope":9444,"src":"403:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9418,"name":"address","nodeType":"ElementaryTypeName","src":"403:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9421,"mutability":"mutable","name":"liquidityToMigrate","nodeType":"VariableDeclaration","scope":9444,"src":"457:26:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9420,"name":"uint256","nodeType":"ElementaryTypeName","src":"457:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9423,"mutability":"mutable","name":"percentageToMigrate","nodeType":"VariableDeclaration","scope":9444,"src":"533:25:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9422,"name":"uint8","nodeType":"ElementaryTypeName","src":"533:5:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":9425,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":9444,"src":"607:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9424,"name":"address","nodeType":"ElementaryTypeName","src":"607:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9427,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":9444,"src":"631:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9426,"name":"address","nodeType":"ElementaryTypeName","src":"631:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9429,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":9444,"src":"655:10:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":9428,"name":"uint24","nodeType":"ElementaryTypeName","src":"655:6:57","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":9431,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":9444,"src":"675:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":9430,"name":"int24","nodeType":"ElementaryTypeName","src":"675:5:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":9433,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":9444,"src":"700:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":9432,"name":"int24","nodeType":"ElementaryTypeName","src":"700:5:57","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":9435,"mutability":"mutable","name":"amount0Min","nodeType":"VariableDeclaration","scope":9444,"src":"725:18:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9434,"name":"uint256","nodeType":"ElementaryTypeName","src":"725:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9437,"mutability":"mutable","name":"amount1Min","nodeType":"VariableDeclaration","scope":9444,"src":"798:18:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9436,"name":"uint256","nodeType":"ElementaryTypeName","src":"798:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9439,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":9444,"src":"871:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9438,"name":"address","nodeType":"ElementaryTypeName","src":"871:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9441,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":9444,"src":"898:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9440,"name":"uint256","nodeType":"ElementaryTypeName","src":"898:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9443,"mutability":"mutable","name":"refundAsAMB","nodeType":"VariableDeclaration","scope":9444,"src":"924:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9442,"name":"bool","nodeType":"ElementaryTypeName","src":"924:4:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"MigrateParams","nodeType":"StructDefinition","scope":9451,"src":"372:575:57","visibility":"public"},{"documentation":{"id":9445,"nodeType":"StructuredDocumentation","src":"953:564:57","text":"@notice Migrates liquidity to CL by burning classic liquidity and minting a new position for CL\n @dev Slippage protection is enforced via `amount{0,1}Min`, which should be a discount of the expected values of\n the maximum amount of CL liquidity that the Classic liquidity can get. For the special case of migrating to an\n out-of-range position, `amount{0,1}Min` may be set to 0, enforcing that the position remains out of range\n @param params The params necessary to migrate Classic liquidity, encoded as `MigrateParams` in calldata"},"functionSelector":"d44f2bf2","id":9450,"implemented":false,"kind":"function","modifiers":[],"name":"migrate","nodeType":"FunctionDefinition","parameters":{"id":9448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9447,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":9450,"src":"1539:29:57","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_calldata_ptr","typeString":"struct ICLMigrator.MigrateParams"},"typeName":{"id":9446,"name":"MigrateParams","nodeType":"UserDefinedTypeName","referencedDeclaration":9444,"src":"1539:13:57","typeDescriptions":{"typeIdentifier":"t_struct$_MigrateParams_$9444_storage_ptr","typeString":"struct ICLMigrator.MigrateParams"}},"visibility":"internal"}],"src":"1538:31:57"},"returnParameters":{"id":9449,"nodeType":"ParameterList","parameters":[],"src":"1578:0:57"},"scope":9451,"src":"1522:57:57","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":9452,"src":"299:1282:57"}],"src":"45:1537:57"},"id":57},"contracts/interfaces/IERC20Metadata.sol":{"ast":{"absolutePath":"contracts/interfaces/IERC20Metadata.sol","exportedSymbols":{"IERC20":[4183],"IERC20Metadata":[9476]},"id":9477,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9453,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"45:23:58"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":9454,"nodeType":"ImportDirective","scope":9477,"sourceUnit":4184,"src":"70:56:58","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9456,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":4183,"src":"283:6:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4183","typeString":"contract IERC20"}},"id":9457,"nodeType":"InheritanceSpecifier","src":"283:6:58"}],"contractDependencies":[4183],"contractKind":"interface","documentation":{"id":9455,"nodeType":"StructuredDocumentation","src":"128:127:58","text":"@title IERC20Metadata\n @title Interface for ERC20 Metadata\n @notice Extension to IERC20 that includes token metadata"},"fullyImplemented":false,"id":9476,"linearizedBaseContracts":[9476,4183],"name":"IERC20Metadata","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":9458,"nodeType":"StructuredDocumentation","src":"296:33:58","text":"@return The name of the token"},"functionSelector":"06fdde03","id":9463,"implemented":false,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","parameters":{"id":9459,"nodeType":"ParameterList","parameters":[],"src":"347:2:58"},"returnParameters":{"id":9462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9461,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9463,"src":"373:13:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9460,"name":"string","nodeType":"ElementaryTypeName","src":"373:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"372:15:58"},"scope":9476,"src":"334:54:58","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":9464,"nodeType":"StructuredDocumentation","src":"394:35:58","text":"@return The symbol of the token"},"functionSelector":"95d89b41","id":9469,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","parameters":{"id":9465,"nodeType":"ParameterList","parameters":[],"src":"449:2:58"},"returnParameters":{"id":9468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9467,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9469,"src":"475:13:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9466,"name":"string","nodeType":"ElementaryTypeName","src":"475:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"474:15:58"},"scope":9476,"src":"434:56:58","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":9470,"nodeType":"StructuredDocumentation","src":"496:54:58","text":"@return The number of decimal places the token has"},"functionSelector":"313ce567","id":9475,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nodeType":"FunctionDefinition","parameters":{"id":9471,"nodeType":"ParameterList","parameters":[],"src":"572:2:58"},"returnParameters":{"id":9474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9473,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9475,"src":"598:5:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9472,"name":"uint8","nodeType":"ElementaryTypeName","src":"598:5:58","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"597:7:58"},"scope":9476,"src":"555:50:58","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":9477,"src":"255:352:58"}],"src":"45:563:58"},"id":58},"contracts/interfaces/IERC721Permit.sol":{"ast":{"absolutePath":"contracts/interfaces/IERC721Permit.sol","exportedSymbols":{"IERC165":[3068],"IERC721":[5243],"IERC721Permit":[9511]},"id":9512,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9478,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:59"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721.sol","id":9479,"nodeType":"ImportDirective","scope":9512,"sourceUnit":5244,"src":"71:58:59","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9481,"name":"IERC721","nodeType":"UserDefinedTypeName","referencedDeclaration":5243,"src":"282:7:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$5243","typeString":"contract IERC721"}},"id":9482,"nodeType":"InheritanceSpecifier","src":"282:7:59"}],"contractDependencies":[3068,5243],"contractKind":"interface","documentation":{"id":9480,"nodeType":"StructuredDocumentation","src":"131:124:59","text":"@title ERC721 with permit\n @notice Extension to ERC721 that includes a permit function for signature based approvals"},"fullyImplemented":false,"id":9511,"linearizedBaseContracts":[9511,5243,3068],"name":"IERC721Permit","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":9483,"nodeType":"StructuredDocumentation","src":"296:104:59","text":"@notice The permit typehash used in the permit signature\n @return The typehash for the permit"},"functionSelector":"30adf81f","id":9488,"implemented":false,"kind":"function","modifiers":[],"name":"PERMIT_TYPEHASH","nodeType":"FunctionDefinition","parameters":{"id":9484,"nodeType":"ParameterList","parameters":[],"src":"429:2:59"},"returnParameters":{"id":9487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9486,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9488,"src":"455:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9485,"name":"bytes32","nodeType":"ElementaryTypeName","src":"455:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"454:9:59"},"scope":9511,"src":"405:59:59","stateMutability":"pure","virtual":false,"visibility":"external"},{"documentation":{"id":9489,"nodeType":"StructuredDocumentation","src":"470:135:59","text":"@notice The domain separator used in the permit signature\n @return The domain seperator used in encoding of permit signature"},"functionSelector":"3644e515","id":9494,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","parameters":{"id":9490,"nodeType":"ParameterList","parameters":[],"src":"635:2:59"},"returnParameters":{"id":9493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9492,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9494,"src":"661:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9491,"name":"bytes32","nodeType":"ElementaryTypeName","src":"661:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"660:9:59"},"scope":9511,"src":"610:60:59","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":9495,"nodeType":"StructuredDocumentation","src":"676:605:59","text":"@notice Approve of a specific token ID for spending by spender via signature\n @param spender The account that is being approved\n @param tokenId The ID of the token that is being approved for spending\n @param deadline The deadline timestamp by which the call must be mined for the approve to work\n @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\n @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\n @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`"},"functionSelector":"7ac2ff7b","id":9510,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":9508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9497,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":9510,"src":"1302:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9496,"name":"address","nodeType":"ElementaryTypeName","src":"1302:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9499,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":9510,"src":"1319:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9498,"name":"uint256","nodeType":"ElementaryTypeName","src":"1319:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9501,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":9510,"src":"1336:16:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9500,"name":"uint256","nodeType":"ElementaryTypeName","src":"1336:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9503,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":9510,"src":"1354:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9502,"name":"uint8","nodeType":"ElementaryTypeName","src":"1354:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":9505,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":9510,"src":"1363:9:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9504,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1363:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9507,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":9510,"src":"1374:9:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9506,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1374:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1301:83:59"},"returnParameters":{"id":9509,"nodeType":"ParameterList","parameters":[],"src":"1401:0:59"},"scope":9511,"src":"1286:116:59","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":9512,"src":"255:1149:59"}],"src":"45:1360:59"},"id":59},"contracts/interfaces/IMulticall.sol":{"ast":{"absolutePath":"contracts/interfaces/IMulticall.sol","exportedSymbols":{"IMulticall":[9526]},"id":9527,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9513,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:60"},{"id":9514,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"70:19:60"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":9515,"nodeType":"StructuredDocumentation","src":"91:109:60","text":"@title Multicall interface\n @notice Enables calling multiple methods in a single call to the contract"},"fullyImplemented":false,"id":9526,"linearizedBaseContracts":[9526],"name":"IMulticall","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":9516,"nodeType":"StructuredDocumentation","src":"227:378:60","text":"@notice Call multiple functions in the current contract and return the data from all of them if they all succeed\n @dev The `msg.value` should not be trusted for any method callable from multicall.\n @param data The encoded function data for each of the calls to make to this contract\n @return results The results from each of the calls passed in via data"},"functionSelector":"ac9650d8","id":9525,"implemented":false,"kind":"function","modifiers":[],"name":"multicall","nodeType":"FunctionDefinition","parameters":{"id":9520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9519,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":9525,"src":"629:21:60","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":9517,"name":"bytes","nodeType":"ElementaryTypeName","src":"629:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":9518,"nodeType":"ArrayTypeName","src":"629:7:60","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"628:23:60"},"returnParameters":{"id":9524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9523,"mutability":"mutable","name":"results","nodeType":"VariableDeclaration","scope":9525,"src":"678:22:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":9521,"name":"bytes","nodeType":"ElementaryTypeName","src":"678:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":9522,"nodeType":"ArrayTypeName","src":"678:7:60","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"677:24:60"},"scope":9526,"src":"610:92:60","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":9527,"src":"200:504:60"}],"src":"45:660:60"},"id":60},"contracts/interfaces/INonfungiblePositionManager.sol":{"ast":{"absolutePath":"contracts/interfaces/INonfungiblePositionManager.sol","exportedSymbols":{"IERC165":[3068],"IERC721":[5243],"IERC721Enumerable":[5274],"IERC721Metadata":[5301],"IERC721Permit":[9511],"INonfungiblePositionManager":[9720],"IPeripheryImmutableState":[9751],"IPeripheryPayments":[9777],"IPoolInitializer":[9829]},"id":9721,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9528,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:61"},{"id":9529,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"70:19:61"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol","id":9530,"nodeType":"ImportDirective","scope":9721,"sourceUnit":5302,"src":"91:66:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol","id":9531,"nodeType":"ImportDirective","scope":9721,"sourceUnit":5275,"src":"158:68:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IPoolInitializer.sol","file":"./IPoolInitializer.sol","id":9532,"nodeType":"ImportDirective","scope":9721,"sourceUnit":9830,"src":"228:32:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IERC721Permit.sol","file":"./IERC721Permit.sol","id":9533,"nodeType":"ImportDirective","scope":9721,"sourceUnit":9512,"src":"261:29:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IPeripheryPayments.sol","file":"./IPeripheryPayments.sol","id":9534,"nodeType":"ImportDirective","scope":9721,"sourceUnit":9778,"src":"291:34:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IPeripheryImmutableState.sol","file":"./IPeripheryImmutableState.sol","id":9535,"nodeType":"ImportDirective","scope":9721,"sourceUnit":9752,"src":"326:40:61","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9537,"name":"IPoolInitializer","nodeType":"UserDefinedTypeName","referencedDeclaration":9829,"src":"591:16:61","typeDescriptions":{"typeIdentifier":"t_contract$_IPoolInitializer_$9829","typeString":"contract IPoolInitializer"}},"id":9538,"nodeType":"InheritanceSpecifier","src":"591:16:61"},{"baseName":{"id":9539,"name":"IPeripheryPayments","nodeType":"UserDefinedTypeName","referencedDeclaration":9777,"src":"613:18:61","typeDescriptions":{"typeIdentifier":"t_contract$_IPeripheryPayments_$9777","typeString":"contract IPeripheryPayments"}},"id":9540,"nodeType":"InheritanceSpecifier","src":"613:18:61"},{"baseName":{"id":9541,"name":"IPeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":9751,"src":"637:24:61","typeDescriptions":{"typeIdentifier":"t_contract$_IPeripheryImmutableState_$9751","typeString":"contract IPeripheryImmutableState"}},"id":9542,"nodeType":"InheritanceSpecifier","src":"637:24:61"},{"baseName":{"id":9543,"name":"IERC721Metadata","nodeType":"UserDefinedTypeName","referencedDeclaration":5301,"src":"667:15:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Metadata_$5301","typeString":"contract IERC721Metadata"}},"id":9544,"nodeType":"InheritanceSpecifier","src":"667:15:61"},{"baseName":{"id":9545,"name":"IERC721Enumerable","nodeType":"UserDefinedTypeName","referencedDeclaration":5274,"src":"688:17:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Enumerable_$5274","typeString":"contract IERC721Enumerable"}},"id":9546,"nodeType":"InheritanceSpecifier","src":"688:17:61"},{"baseName":{"id":9547,"name":"IERC721Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":9511,"src":"711:13:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Permit_$9511","typeString":"contract IERC721Permit"}},"id":9548,"nodeType":"InheritanceSpecifier","src":"711:13:61"}],"contractDependencies":[3068,5243,5274,5301,9511,9751,9777,9829],"contractKind":"interface","documentation":{"id":9536,"nodeType":"StructuredDocumentation","src":"368:178:61","text":"@title Non-fungible token for positions\n @notice Wraps AstraDEX CL positions in a non-fungible token interface which allows for them to be transferred\n and authorized."},"fullyImplemented":false,"id":9720,"linearizedBaseContracts":[9720,9511,5274,5301,5243,3068,9751,9777,9829],"name":"INonfungiblePositionManager","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":9549,"nodeType":"StructuredDocumentation","src":"731:458:61","text":"@notice Emitted when liquidity is increased for a position NFT\n @dev Also emitted when a token is minted\n @param tokenId The ID of the token for which liquidity was increased\n @param liquidity The amount by which liquidity for the NFT position was increased\n @param amount0 The amount of token0 that was paid for the increase in liquidity\n @param amount1 The amount of token1 that was paid for the increase in liquidity"},"id":9559,"name":"IncreaseLiquidity","nodeType":"EventDefinition","parameters":{"id":9558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9551,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":9559,"src":"1218:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9550,"name":"uint256","nodeType":"ElementaryTypeName","src":"1218:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9553,"indexed":false,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":9559,"src":"1243:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":9552,"name":"uint128","nodeType":"ElementaryTypeName","src":"1243:7:61","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":9555,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":9559,"src":"1262:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9554,"name":"uint256","nodeType":"ElementaryTypeName","src":"1262:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9557,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":9559,"src":"1279:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9556,"name":"uint256","nodeType":"ElementaryTypeName","src":"1279:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1217:78:61"},"src":"1194:102:61"},{"anonymous":false,"documentation":{"id":9560,"nodeType":"StructuredDocumentation","src":"1301:419:61","text":"@notice Emitted when liquidity is decreased for a position NFT\n @param tokenId The ID of the token for which liquidity was decreased\n @param liquidity The amount by which liquidity for the NFT position was decreased\n @param amount0 The amount of token0 that was accounted for the decrease in liquidity\n @param amount1 The amount of token1 that was accounted for the decrease in liquidity"},"id":9570,"name":"DecreaseLiquidity","nodeType":"EventDefinition","parameters":{"id":9569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9562,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":9570,"src":"1749:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9561,"name":"uint256","nodeType":"ElementaryTypeName","src":"1749:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9564,"indexed":false,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":9570,"src":"1774:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":9563,"name":"uint128","nodeType":"ElementaryTypeName","src":"1774:7:61","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":9566,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":9570,"src":"1793:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9565,"name":"uint256","nodeType":"ElementaryTypeName","src":"1793:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9568,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":9570,"src":"1810:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9567,"name":"uint256","nodeType":"ElementaryTypeName","src":"1810:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1748:78:61"},"src":"1725:102:61"},{"anonymous":false,"documentation":{"id":9571,"nodeType":"StructuredDocumentation","src":"1832:522:61","text":"@notice Emitted when tokens are collected for a position NFT\n @dev The amounts reported may not be exactly equivalent to the amounts transferred, due to rounding behavior\n @param tokenId The ID of the token for which underlying tokens were collected\n @param recipient The address of the account that received the collected tokens\n @param amount0 The amount of token0 owed to the position that was collected\n @param amount1 The amount of token1 owed to the position that was collected"},"id":9581,"name":"Collect","nodeType":"EventDefinition","parameters":{"id":9580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9573,"indexed":true,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":9581,"src":"2373:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9572,"name":"uint256","nodeType":"ElementaryTypeName","src":"2373:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9575,"indexed":false,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":9581,"src":"2398:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9574,"name":"address","nodeType":"ElementaryTypeName","src":"2398:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9577,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":9581,"src":"2417:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9576,"name":"uint256","nodeType":"ElementaryTypeName","src":"2417:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9579,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":9581,"src":"2434:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9578,"name":"uint256","nodeType":"ElementaryTypeName","src":"2434:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2372:78:61"},"src":"2359:92:61"},{"documentation":{"id":9582,"nodeType":"StructuredDocumentation","src":"2457:1157:61","text":"@notice Returns the position information associated with a given token ID.\n @dev Throws if the token ID is not valid.\n @param tokenId The ID of the token that represents the position\n @return nonce The nonce for permits\n @return operator The address that is approved for spending\n @return token0 The address of the token0 for a specific pool\n @return token1 The address of the token1 for a specific pool\n @return fee The fee associated with the pool\n @return tickLower The lower end of the tick range for the position\n @return tickUpper The higher end of the tick range for the position\n @return liquidity The liquidity of the position\n @return feeGrowthInside0LastX128 The fee growth of token0 as of the last action on the individual position\n @return feeGrowthInside1LastX128 The fee growth of token1 as of the last action on the individual position\n @return tokensOwed0 The uncollected amount of token0 owed to the position as of the last computation\n @return tokensOwed1 The uncollected amount of token1 owed to the position as of the last computation"},"functionSelector":"99fbab88","id":9611,"implemented":false,"kind":"function","modifiers":[],"name":"positions","nodeType":"FunctionDefinition","parameters":{"id":9585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9584,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":9611,"src":"3647:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9583,"name":"uint256","nodeType":"ElementaryTypeName","src":"3647:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3637:31:61"},"returnParameters":{"id":9610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9587,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":9611,"src":"3729:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":9586,"name":"uint96","nodeType":"ElementaryTypeName","src":"3729:6:61","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":9589,"mutability":"mutable","name":"operator","nodeType":"VariableDeclaration","scope":9611,"src":"3755:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9588,"name":"address","nodeType":"ElementaryTypeName","src":"3755:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9591,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":9611,"src":"3785:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9590,"name":"address","nodeType":"ElementaryTypeName","src":"3785:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9593,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":9611,"src":"3813:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9592,"name":"address","nodeType":"ElementaryTypeName","src":"3813:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9595,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":9611,"src":"3841:10:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":9594,"name":"uint24","nodeType":"ElementaryTypeName","src":"3841:6:61","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":9597,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":9611,"src":"3865:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":9596,"name":"int24","nodeType":"ElementaryTypeName","src":"3865:5:61","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":9599,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":9611,"src":"3894:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":9598,"name":"int24","nodeType":"ElementaryTypeName","src":"3894:5:61","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":9601,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":9611,"src":"3923:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":9600,"name":"uint128","nodeType":"ElementaryTypeName","src":"3923:7:61","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":9603,"mutability":"mutable","name":"feeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":9611,"src":"3954:32:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9602,"name":"uint256","nodeType":"ElementaryTypeName","src":"3954:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9605,"mutability":"mutable","name":"feeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":9611,"src":"4000:32:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9604,"name":"uint256","nodeType":"ElementaryTypeName","src":"4000:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9607,"mutability":"mutable","name":"tokensOwed0","nodeType":"VariableDeclaration","scope":9611,"src":"4046:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":9606,"name":"uint128","nodeType":"ElementaryTypeName","src":"4046:7:61","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":9609,"mutability":"mutable","name":"tokensOwed1","nodeType":"VariableDeclaration","scope":9611,"src":"4079:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":9608,"name":"uint128","nodeType":"ElementaryTypeName","src":"4079:7:61","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3715:393:61"},"scope":9720,"src":"3619:490:61","stateMutability":"view","virtual":false,"visibility":"external"},{"canonicalName":"INonfungiblePositionManager.MintParams","id":9634,"members":[{"constant":false,"id":9613,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":9634,"src":"4143:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9612,"name":"address","nodeType":"ElementaryTypeName","src":"4143:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9615,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":9634,"src":"4167:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9614,"name":"address","nodeType":"ElementaryTypeName","src":"4167:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9617,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":9634,"src":"4191:10:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":9616,"name":"uint24","nodeType":"ElementaryTypeName","src":"4191:6:61","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":9619,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":9634,"src":"4211:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":9618,"name":"int24","nodeType":"ElementaryTypeName","src":"4211:5:61","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":9621,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":9634,"src":"4236:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":9620,"name":"int24","nodeType":"ElementaryTypeName","src":"4236:5:61","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":9623,"mutability":"mutable","name":"amount0Desired","nodeType":"VariableDeclaration","scope":9634,"src":"4261:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9622,"name":"uint256","nodeType":"ElementaryTypeName","src":"4261:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9625,"mutability":"mutable","name":"amount1Desired","nodeType":"VariableDeclaration","scope":9634,"src":"4293:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9624,"name":"uint256","nodeType":"ElementaryTypeName","src":"4293:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9627,"mutability":"mutable","name":"amount0Min","nodeType":"VariableDeclaration","scope":9634,"src":"4325:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9626,"name":"uint256","nodeType":"ElementaryTypeName","src":"4325:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9629,"mutability":"mutable","name":"amount1Min","nodeType":"VariableDeclaration","scope":9634,"src":"4353:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9628,"name":"uint256","nodeType":"ElementaryTypeName","src":"4353:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9631,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":9634,"src":"4381:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9630,"name":"address","nodeType":"ElementaryTypeName","src":"4381:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9633,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":9634,"src":"4408:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9632,"name":"uint256","nodeType":"ElementaryTypeName","src":"4408:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"MintParams","nodeType":"StructDefinition","scope":9720,"src":"4115:316:61","visibility":"public"},{"documentation":{"id":9635,"nodeType":"StructuredDocumentation","src":"4437:586:61","text":"@notice Creates a new position wrapped in a NFT\n @dev Call this when the pool does exist and is initialized. Note that if the pool is created but not initialized\n a method does not exist, i.e. the pool is assumed to be initialized.\n @param params The params necessary to mint a position, encoded as `MintParams` in calldata\n @return tokenId The ID of the token that represents the minted position\n @return liquidity The amount of liquidity for this position\n @return amount0 The amount of token0\n @return amount1 The amount of token1"},"functionSelector":"88316456","id":9648,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":9638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9637,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":9648,"src":"5051:26:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$9634_calldata_ptr","typeString":"struct INonfungiblePositionManager.MintParams"},"typeName":{"id":9636,"name":"MintParams","nodeType":"UserDefinedTypeName","referencedDeclaration":9634,"src":"5051:10:61","typeDescriptions":{"typeIdentifier":"t_struct$_MintParams_$9634_storage_ptr","typeString":"struct INonfungiblePositionManager.MintParams"}},"visibility":"internal"}],"src":"5041:42:61"},"returnParameters":{"id":9647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9640,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":9648,"src":"5110:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9639,"name":"uint256","nodeType":"ElementaryTypeName","src":"5110:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9642,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":9648,"src":"5127:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":9641,"name":"uint128","nodeType":"ElementaryTypeName","src":"5127:7:61","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":9644,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":9648,"src":"5146:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9643,"name":"uint256","nodeType":"ElementaryTypeName","src":"5146:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9646,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":9648,"src":"5163:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9645,"name":"uint256","nodeType":"ElementaryTypeName","src":"5163:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5109:70:61"},"scope":9720,"src":"5028:152:61","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"INonfungiblePositionManager.IncreaseLiquidityParams","id":9661,"members":[{"constant":false,"id":9650,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":9661,"src":"5227:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9649,"name":"uint256","nodeType":"ElementaryTypeName","src":"5227:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9652,"mutability":"mutable","name":"amount0Desired","nodeType":"VariableDeclaration","scope":9661,"src":"5252:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9651,"name":"uint256","nodeType":"ElementaryTypeName","src":"5252:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9654,"mutability":"mutable","name":"amount1Desired","nodeType":"VariableDeclaration","scope":9661,"src":"5284:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9653,"name":"uint256","nodeType":"ElementaryTypeName","src":"5284:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9656,"mutability":"mutable","name":"amount0Min","nodeType":"VariableDeclaration","scope":9661,"src":"5316:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9655,"name":"uint256","nodeType":"ElementaryTypeName","src":"5316:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9658,"mutability":"mutable","name":"amount1Min","nodeType":"VariableDeclaration","scope":9661,"src":"5344:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9657,"name":"uint256","nodeType":"ElementaryTypeName","src":"5344:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9660,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":9661,"src":"5372:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9659,"name":"uint256","nodeType":"ElementaryTypeName","src":"5372:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"IncreaseLiquidityParams","nodeType":"StructDefinition","scope":9720,"src":"5186:209:61","visibility":"public"},{"documentation":{"id":9662,"nodeType":"StructuredDocumentation","src":"5401:821:61","text":"@notice Increases the amount of liquidity in a position, with tokens paid by the `msg.sender`\n @param params tokenId The ID of the token for which liquidity is being increased,\n amount0Desired The desired amount of token0 to be spent,\n amount1Desired The desired amount of token1 to be spent,\n amount0Min The minimum amount of token0 to spend, which serves as a slippage check,\n amount1Min The minimum amount of token1 to spend, which serves as a slippage check,\n deadline The time by which the transaction must be included to effect the change\n @return liquidity The new liquidity amount as a result of the increase\n @return amount0 The amount of token0 to acheive resulting liquidity\n @return amount1 The amount of token1 to acheive resulting liquidity"},"functionSelector":"219f5d17","id":9673,"implemented":false,"kind":"function","modifiers":[],"name":"increaseLiquidity","nodeType":"FunctionDefinition","parameters":{"id":9665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9664,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":9673,"src":"6263:39:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$9661_calldata_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams"},"typeName":{"id":9663,"name":"IncreaseLiquidityParams","nodeType":"UserDefinedTypeName","referencedDeclaration":9661,"src":"6263:23:61","typeDescriptions":{"typeIdentifier":"t_struct$_IncreaseLiquidityParams_$9661_storage_ptr","typeString":"struct INonfungiblePositionManager.IncreaseLiquidityParams"}},"visibility":"internal"}],"src":"6253:55:61"},"returnParameters":{"id":9672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9667,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":9673,"src":"6335:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":9666,"name":"uint128","nodeType":"ElementaryTypeName","src":"6335:7:61","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":9669,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":9673,"src":"6354:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9668,"name":"uint256","nodeType":"ElementaryTypeName","src":"6354:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9671,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":9673,"src":"6371:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9670,"name":"uint256","nodeType":"ElementaryTypeName","src":"6371:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6334:53:61"},"scope":9720,"src":"6227:161:61","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"INonfungiblePositionManager.DecreaseLiquidityParams","id":9684,"members":[{"constant":false,"id":9675,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":9684,"src":"6435:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9674,"name":"uint256","nodeType":"ElementaryTypeName","src":"6435:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9677,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":9684,"src":"6460:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":9676,"name":"uint128","nodeType":"ElementaryTypeName","src":"6460:7:61","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":9679,"mutability":"mutable","name":"amount0Min","nodeType":"VariableDeclaration","scope":9684,"src":"6487:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9678,"name":"uint256","nodeType":"ElementaryTypeName","src":"6487:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9681,"mutability":"mutable","name":"amount1Min","nodeType":"VariableDeclaration","scope":9684,"src":"6515:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9680,"name":"uint256","nodeType":"ElementaryTypeName","src":"6515:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9683,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":9684,"src":"6543:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9682,"name":"uint256","nodeType":"ElementaryTypeName","src":"6543:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"DecreaseLiquidityParams","nodeType":"StructDefinition","scope":9720,"src":"6394:172:61","visibility":"public"},{"documentation":{"id":9685,"nodeType":"StructuredDocumentation","src":"6572:702:61","text":"@notice Decreases the amount of liquidity in a position and accounts it to the position\n @param params tokenId The ID of the token for which liquidity is being decreased,\n amount The amount by which liquidity will be decreased,\n amount0Min The minimum amount of token0 that should be accounted for the burned liquidity,\n amount1Min The minimum amount of token1 that should be accounted for the burned liquidity,\n deadline The time by which the transaction must be included to effect the change\n @return amount0 The amount of token0 accounted to the position's tokens owed\n @return amount1 The amount of token1 accounted to the position's tokens owed"},"functionSelector":"0c49ccbe","id":9694,"implemented":false,"kind":"function","modifiers":[],"name":"decreaseLiquidity","nodeType":"FunctionDefinition","parameters":{"id":9688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9687,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":9694,"src":"7315:39:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$9684_calldata_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams"},"typeName":{"id":9686,"name":"DecreaseLiquidityParams","nodeType":"UserDefinedTypeName","referencedDeclaration":9684,"src":"7315:23:61","typeDescriptions":{"typeIdentifier":"t_struct$_DecreaseLiquidityParams_$9684_storage_ptr","typeString":"struct INonfungiblePositionManager.DecreaseLiquidityParams"}},"visibility":"internal"}],"src":"7305:55:61"},"returnParameters":{"id":9693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9690,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":9694,"src":"7387:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9689,"name":"uint256","nodeType":"ElementaryTypeName","src":"7387:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9692,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":9694,"src":"7404:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9691,"name":"uint256","nodeType":"ElementaryTypeName","src":"7404:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7386:34:61"},"scope":9720,"src":"7279:142:61","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"INonfungiblePositionManager.CollectParams","id":9703,"members":[{"constant":false,"id":9696,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":9703,"src":"7458:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9695,"name":"uint256","nodeType":"ElementaryTypeName","src":"7458:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9698,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":9703,"src":"7483:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9697,"name":"address","nodeType":"ElementaryTypeName","src":"7483:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9700,"mutability":"mutable","name":"amount0Max","nodeType":"VariableDeclaration","scope":9703,"src":"7510:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":9699,"name":"uint128","nodeType":"ElementaryTypeName","src":"7510:7:61","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":9702,"mutability":"mutable","name":"amount1Max","nodeType":"VariableDeclaration","scope":9703,"src":"7538:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":9701,"name":"uint128","nodeType":"ElementaryTypeName","src":"7538:7:61","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"CollectParams","nodeType":"StructDefinition","scope":9720,"src":"7427:136:61","visibility":"public"},{"documentation":{"id":9704,"nodeType":"StructuredDocumentation","src":"7569:489:61","text":"@notice Collects up to a maximum amount of fees owed to a specific position to the recipient\n @param params tokenId The ID of the NFT for which tokens are being collected,\n recipient The account that should receive the tokens,\n amount0Max The maximum amount of token0 to collect,\n amount1Max The maximum amount of token1 to collect\n @return amount0 The amount of fees collected in token0\n @return amount1 The amount of fees collected in token1"},"functionSelector":"fc6f7865","id":9713,"implemented":false,"kind":"function","modifiers":[],"name":"collect","nodeType":"FunctionDefinition","parameters":{"id":9707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9706,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":9713,"src":"8080:29:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$9703_calldata_ptr","typeString":"struct INonfungiblePositionManager.CollectParams"},"typeName":{"id":9705,"name":"CollectParams","nodeType":"UserDefinedTypeName","referencedDeclaration":9703,"src":"8080:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_CollectParams_$9703_storage_ptr","typeString":"struct INonfungiblePositionManager.CollectParams"}},"visibility":"internal"}],"src":"8079:31:61"},"returnParameters":{"id":9712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9709,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":9713,"src":"8137:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9708,"name":"uint256","nodeType":"ElementaryTypeName","src":"8137:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9711,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":9713,"src":"8154:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9710,"name":"uint256","nodeType":"ElementaryTypeName","src":"8154:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8136:34:61"},"scope":9720,"src":"8063:108:61","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":9714,"nodeType":"StructuredDocumentation","src":"8177:213:61","text":"@notice Burns a token ID, which deletes it from the NFT contract. The token must have 0 liquidity and all tokens\n must be collected first.\n @param tokenId The ID of the token that is being burned"},"functionSelector":"42966c68","id":9719,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":9717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9716,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":9719,"src":"8409:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9715,"name":"uint256","nodeType":"ElementaryTypeName","src":"8409:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8408:17:61"},"returnParameters":{"id":9718,"nodeType":"ParameterList","parameters":[],"src":"8442:0:61"},"scope":9720,"src":"8395:48:61","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":9721,"src":"546:7899:61"}],"src":"45:8401:61"},"id":61},"contracts/interfaces/INonfungibleTokenPositionDescriptor.sol":{"ast":{"absolutePath":"contracts/interfaces/INonfungibleTokenPositionDescriptor.sol","exportedSymbols":{"IERC165":[3068],"IERC721":[5243],"IERC721Enumerable":[5274],"IERC721Metadata":[5301],"IERC721Permit":[9511],"INonfungiblePositionManager":[9720],"INonfungibleTokenPositionDescriptor":[9735],"IPeripheryImmutableState":[9751],"IPeripheryPayments":[9777],"IPoolInitializer":[9829]},"id":9736,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9722,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:62"},{"absolutePath":"contracts/interfaces/INonfungiblePositionManager.sol","file":"./INonfungiblePositionManager.sol","id":9723,"nodeType":"ImportDirective","scope":9736,"sourceUnit":9721,"src":"71:43:62","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":9724,"nodeType":"StructuredDocumentation","src":"116:49:62","text":"@title Describes position NFT tokens via URI"},"fullyImplemented":false,"id":9735,"linearizedBaseContracts":[9735],"name":"INonfungibleTokenPositionDescriptor","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":9725,"nodeType":"StructuredDocumentation","src":"217:413:62","text":"@notice Produces the URI describing a particular token ID for a position manager\n @dev Note this URI may be a data: URI with the JSON contents directly inlined\n @param positionManager The position manager for which to describe the token\n @param tokenId The ID of the token for which to produce a description, which may not be valid\n @return The URI of the ERC721-compliant metadata"},"functionSelector":"e9dc6375","id":9734,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nodeType":"FunctionDefinition","parameters":{"id":9730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9727,"mutability":"mutable","name":"positionManager","nodeType":"VariableDeclaration","scope":9734,"src":"662:43:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":9726,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":9720,"src":"662:27:62","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":9729,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":9734,"src":"715:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9728,"name":"uint256","nodeType":"ElementaryTypeName","src":"715:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"652:84:62"},"returnParameters":{"id":9733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9732,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9734,"src":"760:13:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9731,"name":"string","nodeType":"ElementaryTypeName","src":"760:6:62","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"759:15:62"},"scope":9735,"src":"635:140:62","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":9736,"src":"165:612:62"}],"src":"45:733:62"},"id":62},"contracts/interfaces/IPeripheryImmutableState.sol":{"ast":{"absolutePath":"contracts/interfaces/IPeripheryImmutableState.sol","exportedSymbols":{"IPeripheryImmutableState":[9751]},"id":9752,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9737,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:63"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":9738,"nodeType":"StructuredDocumentation","src":"71:91:63","text":"@title Immutable state\n @notice Functions that return immutable state of the router"},"fullyImplemented":false,"id":9751,"linearizedBaseContracts":[9751],"name":"IPeripheryImmutableState","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":9739,"nodeType":"StructuredDocumentation","src":"203:58:63","text":"@return Returns the address of the AstraDEX CL factory"},"functionSelector":"c45a0155","id":9744,"implemented":false,"kind":"function","modifiers":[],"name":"factory","nodeType":"FunctionDefinition","parameters":{"id":9740,"nodeType":"ParameterList","parameters":[],"src":"282:2:63"},"returnParameters":{"id":9743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9742,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9744,"src":"308:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9741,"name":"address","nodeType":"ElementaryTypeName","src":"308:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"307:9:63"},"scope":9751,"src":"266:51:63","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":9745,"nodeType":"StructuredDocumentation","src":"323:39:63","text":"@return Returns the address of SAMB"},"functionSelector":"90793ea8","id":9750,"implemented":false,"kind":"function","modifiers":[],"name":"SAMB","nodeType":"FunctionDefinition","parameters":{"id":9746,"nodeType":"ParameterList","parameters":[],"src":"380:2:63"},"returnParameters":{"id":9749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9748,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9750,"src":"406:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9747,"name":"address","nodeType":"ElementaryTypeName","src":"406:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"405:9:63"},"scope":9751,"src":"367:48:63","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":9752,"src":"162:255:63"}],"src":"45:373:63"},"id":63},"contracts/interfaces/IPeripheryPayments.sol":{"ast":{"absolutePath":"contracts/interfaces/IPeripheryPayments.sol","exportedSymbols":{"IPeripheryPayments":[9777]},"id":9778,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9753,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:64"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":9754,"nodeType":"StructuredDocumentation","src":"71:92:64","text":"@title Periphery Payments\n @notice Functions to ease deposits and withdrawals of AMB"},"fullyImplemented":false,"id":9777,"linearizedBaseContracts":[9777],"name":"IPeripheryPayments","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":9755,"nodeType":"StructuredDocumentation","src":"198:299:64","text":"@notice Unwraps the contract's SAMB balance and sends it to recipient as AMB.\n @dev The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\n @param amountMinimum The minimum amount of SAMB to unwrap\n @param recipient The address receiving AMB"},"functionSelector":"a98ce37f","id":9762,"implemented":false,"kind":"function","modifiers":[],"name":"unwrapSAMB","nodeType":"FunctionDefinition","parameters":{"id":9760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9757,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":9762,"src":"522:21:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9756,"name":"uint256","nodeType":"ElementaryTypeName","src":"522:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9759,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":9762,"src":"545:17:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9758,"name":"address","nodeType":"ElementaryTypeName","src":"545:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"521:42:64"},"returnParameters":{"id":9761,"nodeType":"ParameterList","parameters":[],"src":"580:0:64"},"scope":9777,"src":"502:79:64","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":9763,"nodeType":"StructuredDocumentation","src":"587:225:64","text":"@notice Refunds any AMB balance held by this contract to the `msg.sender`\n @dev Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps\n that use ether for the input amount"},"functionSelector":"c53af304","id":9766,"implemented":false,"kind":"function","modifiers":[],"name":"refundAMB","nodeType":"FunctionDefinition","parameters":{"id":9764,"nodeType":"ParameterList","parameters":[],"src":"835:2:64"},"returnParameters":{"id":9765,"nodeType":"ParameterList","parameters":[],"src":"854:0:64"},"scope":9777,"src":"817:38:64","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":9767,"nodeType":"StructuredDocumentation","src":"861:427:64","text":"@notice Transfers the full amount of a token held by this contract to recipient\n @dev The amountMinimum parameter prevents malicious contracts from stealing the token from users\n @param token The contract address of the token which will be transferred to `recipient`\n @param amountMinimum The minimum amount of token required for a transfer\n @param recipient The destination address of the token"},"functionSelector":"df2ab5bb","id":9776,"implemented":false,"kind":"function","modifiers":[],"name":"sweepToken","nodeType":"FunctionDefinition","parameters":{"id":9774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9769,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":9776,"src":"1313:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9768,"name":"address","nodeType":"ElementaryTypeName","src":"1313:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9771,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":9776,"src":"1328:21:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9770,"name":"uint256","nodeType":"ElementaryTypeName","src":"1328:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9773,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":9776,"src":"1351:17:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9772,"name":"address","nodeType":"ElementaryTypeName","src":"1351:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1312:57:64"},"returnParameters":{"id":9775,"nodeType":"ParameterList","parameters":[],"src":"1386:0:64"},"scope":9777,"src":"1293:94:64","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":9778,"src":"163:1226:64"}],"src":"45:1345:64"},"id":64},"contracts/interfaces/IPeripheryPaymentsWithFee.sol":{"ast":{"absolutePath":"contracts/interfaces/IPeripheryPaymentsWithFee.sol","exportedSymbols":{"IPeripheryPayments":[9777],"IPeripheryPaymentsWithFee":[9810]},"id":9811,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9779,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:65"},{"absolutePath":"contracts/interfaces/IPeripheryPayments.sol","file":"./IPeripheryPayments.sol","id":9780,"nodeType":"ImportDirective","scope":9811,"sourceUnit":9778,"src":"71:34:65","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9782,"name":"IPeripheryPayments","nodeType":"UserDefinedTypeName","referencedDeclaration":9777,"src":"238:18:65","typeDescriptions":{"typeIdentifier":"t_contract$_IPeripheryPayments_$9777","typeString":"contract IPeripheryPayments"}},"id":9783,"nodeType":"InheritanceSpecifier","src":"238:18:65"}],"contractDependencies":[9777],"contractKind":"interface","documentation":{"id":9781,"nodeType":"StructuredDocumentation","src":"107:92:65","text":"@title Periphery Payments\n @notice Functions to ease deposits and withdrawals of AMB"},"fullyImplemented":false,"id":9810,"linearizedBaseContracts":[9810,9777],"name":"IPeripheryPaymentsWithFee","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":9784,"nodeType":"StructuredDocumentation","src":"263:271:65","text":"@notice Unwraps the contract's SAMB balance and sends it to recipient as AMB, with a percentage between\n 0 (exclusive), and 1 (inclusive) going to feeRecipient\n @dev The amountMinimum parameter prevents malicious contracts from stealing SAMB from users."},"functionSelector":"97e87d9d","id":9795,"implemented":false,"kind":"function","modifiers":[],"name":"unwrapSAMBWithFee","nodeType":"FunctionDefinition","parameters":{"id":9793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9786,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":9795,"src":"575:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9785,"name":"uint256","nodeType":"ElementaryTypeName","src":"575:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9788,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":9795,"src":"606:17:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9787,"name":"address","nodeType":"ElementaryTypeName","src":"606:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9790,"mutability":"mutable","name":"feeBips","nodeType":"VariableDeclaration","scope":9795,"src":"633:15:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9789,"name":"uint256","nodeType":"ElementaryTypeName","src":"633:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9792,"mutability":"mutable","name":"feeRecipient","nodeType":"VariableDeclaration","scope":9795,"src":"658:20:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9791,"name":"address","nodeType":"ElementaryTypeName","src":"658:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"565:119:65"},"returnParameters":{"id":9794,"nodeType":"ParameterList","parameters":[],"src":"701:0:65"},"scope":9810,"src":"539:163:65","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":9796,"nodeType":"StructuredDocumentation","src":"708:277:65","text":"@notice Transfers the full amount of a token held by this contract to recipient, with a percentage between\n 0 (exclusive) and 1 (inclusive) going to feeRecipient\n @dev The amountMinimum parameter prevents malicious contracts from stealing the token from users"},"functionSelector":"e0e189a0","id":9809,"implemented":false,"kind":"function","modifiers":[],"name":"sweepTokenWithFee","nodeType":"FunctionDefinition","parameters":{"id":9807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9798,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":9809,"src":"1026:13:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9797,"name":"address","nodeType":"ElementaryTypeName","src":"1026:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9800,"mutability":"mutable","name":"amountMinimum","nodeType":"VariableDeclaration","scope":9809,"src":"1049:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9799,"name":"uint256","nodeType":"ElementaryTypeName","src":"1049:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9802,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":9809,"src":"1080:17:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9801,"name":"address","nodeType":"ElementaryTypeName","src":"1080:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9804,"mutability":"mutable","name":"feeBips","nodeType":"VariableDeclaration","scope":9809,"src":"1107:15:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9803,"name":"uint256","nodeType":"ElementaryTypeName","src":"1107:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9806,"mutability":"mutable","name":"feeRecipient","nodeType":"VariableDeclaration","scope":9809,"src":"1132:20:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9805,"name":"address","nodeType":"ElementaryTypeName","src":"1132:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1016:142:65"},"returnParameters":{"id":9808,"nodeType":"ParameterList","parameters":[],"src":"1175:0:65"},"scope":9810,"src":"990:186:65","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":9811,"src":"199:979:65"}],"src":"45:1134:65"},"id":65},"contracts/interfaces/IPoolInitializer.sol":{"ast":{"absolutePath":"contracts/interfaces/IPoolInitializer.sol","exportedSymbols":{"IPoolInitializer":[9829]},"id":9830,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9812,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:66"},{"id":9813,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"70:19:66"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":9814,"nodeType":"StructuredDocumentation","src":"91:194:66","text":"@title Creates and initializes CL Pools\n @notice Provides a method for creating and initializing a pool, if necessary, for bundling with other methods that\n require the pool to exist."},"fullyImplemented":false,"id":9829,"linearizedBaseContracts":[9829],"name":"IPoolInitializer","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":9815,"nodeType":"StructuredDocumentation","src":"318:648:66","text":"@notice Creates a new pool if it does not exist, then initializes if not initialized\n @dev This method can be bundled with others via IMulticall for the first action (e.g. mint) performed against a pool\n @param token0 The contract address of token0 of the pool\n @param token1 The contract address of token1 of the pool\n @param fee The fee amount of the CL pool for the specified token pair\n @param sqrtPriceX96 The initial square root price of the pool as a Q64.96 value\n @return pool Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary"},"functionSelector":"13ead562","id":9828,"implemented":false,"kind":"function","modifiers":[],"name":"createAndInitializePoolIfNecessary","nodeType":"FunctionDefinition","parameters":{"id":9824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9817,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":9828,"src":"1024:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9816,"name":"address","nodeType":"ElementaryTypeName","src":"1024:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9819,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":9828,"src":"1048:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9818,"name":"address","nodeType":"ElementaryTypeName","src":"1048:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9821,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":9828,"src":"1072:10:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":9820,"name":"uint24","nodeType":"ElementaryTypeName","src":"1072:6:66","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":9823,"mutability":"mutable","name":"sqrtPriceX96","nodeType":"VariableDeclaration","scope":9828,"src":"1092:20:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":9822,"name":"uint160","nodeType":"ElementaryTypeName","src":"1092:7:66","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1014:104:66"},"returnParameters":{"id":9827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9826,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":9828,"src":"1145:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9825,"name":"address","nodeType":"ElementaryTypeName","src":"1145:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1144:14:66"},"scope":9829,"src":"971:188:66","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":9830,"src":"285:876:66"}],"src":"45:1117:66"},"id":66},"contracts/interfaces/IQuoter.sol":{"ast":{"absolutePath":"contracts/interfaces/IQuoter.sol","exportedSymbols":{"IQuoter":[9886]},"id":9887,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9831,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:67"},{"id":9832,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"70:19:67"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":9833,"nodeType":"StructuredDocumentation","src":"91:320:67","text":"@title Quoter Interface\n @notice Supports quoting the calculated amounts from exact input or exact output swaps\n @dev These functions are not marked view because they rely on calling non-view functions and reverting\n to compute the result. They are also not gas efficient and should not be called on-chain."},"fullyImplemented":false,"id":9886,"linearizedBaseContracts":[9886],"name":"IQuoter","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":9834,"nodeType":"StructuredDocumentation","src":"435:319:67","text":"@notice Returns the amount out received for a given exact input swap without executing the swap\n @param path The path of the swap, i.e. each token pair and the pool fee\n @param amountIn The amount of the first token to swap\n @return amountOut The amount of the last token that would be received"},"functionSelector":"cdca1753","id":9843,"implemented":false,"kind":"function","modifiers":[],"name":"quoteExactInput","nodeType":"FunctionDefinition","parameters":{"id":9839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9836,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":9843,"src":"784:17:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9835,"name":"bytes","nodeType":"ElementaryTypeName","src":"784:5:67","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9838,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":9843,"src":"803:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9837,"name":"uint256","nodeType":"ElementaryTypeName","src":"803:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"783:37:67"},"returnParameters":{"id":9842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9841,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":9843,"src":"839:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9840,"name":"uint256","nodeType":"ElementaryTypeName","src":"839:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"838:19:67"},"scope":9886,"src":"759:99:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":9844,"nodeType":"StructuredDocumentation","src":"864:491:67","text":"@notice Returns the amount out received for a given exact input but for a swap of a single pool\n @param tokenIn The token being swapped in\n @param tokenOut The token being swapped out\n @param fee The fee of the token pool to consider for the pair\n @param amountIn The desired input amount\n @param sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\n @return amountOut The amount of `tokenOut` that would be received"},"functionSelector":"f7729d43","id":9859,"implemented":false,"kind":"function","modifiers":[],"name":"quoteExactInputSingle","nodeType":"FunctionDefinition","parameters":{"id":9855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9846,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":9859,"src":"1400:15:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9845,"name":"address","nodeType":"ElementaryTypeName","src":"1400:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9848,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":9859,"src":"1425:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9847,"name":"address","nodeType":"ElementaryTypeName","src":"1425:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9850,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":9859,"src":"1451:10:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":9849,"name":"uint24","nodeType":"ElementaryTypeName","src":"1451:6:67","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":9852,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":9859,"src":"1471:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9851,"name":"uint256","nodeType":"ElementaryTypeName","src":"1471:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9854,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":9859,"src":"1497:25:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":9853,"name":"uint160","nodeType":"ElementaryTypeName","src":"1497:7:67","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1390:138:67"},"returnParameters":{"id":9858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9857,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":9859,"src":"1547:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9856,"name":"uint256","nodeType":"ElementaryTypeName","src":"1547:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1546:19:67"},"scope":9886,"src":"1360:206:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":9860,"nodeType":"StructuredDocumentation","src":"1572:355:67","text":"@notice Returns the amount in required for a given exact output swap without executing the swap\n @param path The path of the swap, i.e. each token pair and the pool fee. Path must be provided in reverse order\n @param amountOut The amount of the last token to receive\n @return amountIn The amount of first token required to be paid"},"functionSelector":"2f80bb1d","id":9869,"implemented":false,"kind":"function","modifiers":[],"name":"quoteExactOutput","nodeType":"FunctionDefinition","parameters":{"id":9865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9862,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":9869,"src":"1958:17:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9861,"name":"bytes","nodeType":"ElementaryTypeName","src":"1958:5:67","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9864,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":9869,"src":"1977:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9863,"name":"uint256","nodeType":"ElementaryTypeName","src":"1977:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1957:38:67"},"returnParameters":{"id":9868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9867,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":9869,"src":"2014:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9866,"name":"uint256","nodeType":"ElementaryTypeName","src":"2014:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2013:18:67"},"scope":9886,"src":"1932:100:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":9870,"nodeType":"StructuredDocumentation","src":"2038:538:67","text":"@notice Returns the amount in required to receive the given exact output amount but for a swap of a single pool\n @param tokenIn The token being swapped in\n @param tokenOut The token being swapped out\n @param fee The fee of the token pool to consider for the pair\n @param amountOut The desired output amount\n @param sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\n @return amountIn The amount required as the input for the swap in order to receive `amountOut`"},"functionSelector":"30d07f21","id":9885,"implemented":false,"kind":"function","modifiers":[],"name":"quoteExactOutputSingle","nodeType":"FunctionDefinition","parameters":{"id":9881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9872,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":9885,"src":"2622:15:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9871,"name":"address","nodeType":"ElementaryTypeName","src":"2622:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9874,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":9885,"src":"2647:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9873,"name":"address","nodeType":"ElementaryTypeName","src":"2647:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9876,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":9885,"src":"2673:10:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":9875,"name":"uint24","nodeType":"ElementaryTypeName","src":"2673:6:67","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":9878,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":9885,"src":"2693:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9877,"name":"uint256","nodeType":"ElementaryTypeName","src":"2693:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9880,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":9885,"src":"2720:25:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":9879,"name":"uint160","nodeType":"ElementaryTypeName","src":"2720:7:67","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"2612:139:67"},"returnParameters":{"id":9884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9883,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":9885,"src":"2770:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9882,"name":"uint256","nodeType":"ElementaryTypeName","src":"2770:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2769:18:67"},"scope":9886,"src":"2581:207:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":9887,"src":"411:2379:67"}],"src":"45:2746:67"},"id":67},"contracts/interfaces/IQuoterV2.sol":{"ast":{"absolutePath":"contracts/interfaces/IQuoterV2.sol","exportedSymbols":{"IQuoterV2":[9977]},"id":9978,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9888,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:68"},{"id":9889,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"70:19:68"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":9890,"nodeType":"StructuredDocumentation","src":"91:451:68","text":"@title QuoterV2 Interface\n @notice Supports quoting the calculated amounts from exact input or exact output swaps.\n @notice For each pool also tells you the number of initialized ticks crossed and the sqrt price of the pool after the swap.\n @dev These functions are not marked view because they rely on calling non-view functions and reverting\n to compute the result. They are also not gas efficient and should not be called on-chain."},"fullyImplemented":false,"id":9977,"linearizedBaseContracts":[9977],"name":"IQuoterV2","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":9891,"nodeType":"StructuredDocumentation","src":"568:618:68","text":"@notice Returns the amount out received for a given exact input swap without executing the swap\n @param path The path of the swap, i.e. each token pair and the pool fee\n @param amountIn The amount of the first token to swap\n @return amountOut The amount of the last token that would be received\n @return sqrtPriceX96AfterList List of the sqrt price after the swap for each pool in the path\n @return initializedTicksCrossedList List of the initialized ticks that the swap crossed for each pool in the path\n @return gasEstimate The estimate of the gas that the swap consumes"},"functionSelector":"cdca1753","id":9908,"implemented":false,"kind":"function","modifiers":[],"name":"quoteExactInput","nodeType":"FunctionDefinition","parameters":{"id":9896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9893,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":9908,"src":"1225:17:68","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9892,"name":"bytes","nodeType":"ElementaryTypeName","src":"1225:5:68","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9895,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":9908,"src":"1252:16:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9894,"name":"uint256","nodeType":"ElementaryTypeName","src":"1252:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1215:59:68"},"returnParameters":{"id":9907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9898,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":9908,"src":"1322:17:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9897,"name":"uint256","nodeType":"ElementaryTypeName","src":"1322:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9901,"mutability":"mutable","name":"sqrtPriceX96AfterList","nodeType":"VariableDeclaration","scope":9908,"src":"1353:38:68","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[]"},"typeName":{"baseType":{"id":9899,"name":"uint160","nodeType":"ElementaryTypeName","src":"1353:7:68","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":9900,"nodeType":"ArrayTypeName","src":"1353:9:68","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}},"visibility":"internal"},{"constant":false,"id":9904,"mutability":"mutable","name":"initializedTicksCrossedList","nodeType":"VariableDeclaration","scope":9908,"src":"1405:43:68","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":9902,"name":"uint32","nodeType":"ElementaryTypeName","src":"1405:6:68","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":9903,"nodeType":"ArrayTypeName","src":"1405:8:68","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"},{"constant":false,"id":9906,"mutability":"mutable","name":"gasEstimate","nodeType":"VariableDeclaration","scope":9908,"src":"1462:19:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9905,"name":"uint256","nodeType":"ElementaryTypeName","src":"1462:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1308:183:68"},"scope":9977,"src":"1191:301:68","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"IQuoterV2.QuoteExactInputSingleParams","id":9919,"members":[{"constant":false,"id":9910,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":9919,"src":"1543:15:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9909,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9912,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":9919,"src":"1568:16:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9911,"name":"address","nodeType":"ElementaryTypeName","src":"1568:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9914,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":9919,"src":"1594:16:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9913,"name":"uint256","nodeType":"ElementaryTypeName","src":"1594:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9916,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":9919,"src":"1620:10:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":9915,"name":"uint24","nodeType":"ElementaryTypeName","src":"1620:6:68","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":9918,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":9919,"src":"1640:25:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":9917,"name":"uint160","nodeType":"ElementaryTypeName","src":"1640:7:68","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"QuoteExactInputSingleParams","nodeType":"StructDefinition","scope":9977,"src":"1498:174:68","visibility":"public"},{"documentation":{"id":9920,"nodeType":"StructuredDocumentation","src":"1678:790:68","text":"@notice Returns the amount out received for a given exact input but for a swap of a single pool\n @param params The params for the quote, encoded as `QuoteExactInputSingleParams`\n tokenIn The token being swapped in\n tokenOut The token being swapped out\n fee The fee of the token pool to consider for the pair\n amountIn The desired input amount\n sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\n @return amountOut The amount of `tokenOut` that would be received\n @return sqrtPriceX96After The sqrt price of the pool after the swap\n @return initializedTicksCrossed The number of initialized ticks that the swap crossed\n @return gasEstimate The estimate of the gas that the swap consumes"},"functionSelector":"c6a5026a","id":9933,"implemented":false,"kind":"function","modifiers":[],"name":"quoteExactInputSingle","nodeType":"FunctionDefinition","parameters":{"id":9923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9922,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":9933,"src":"2513:41:68","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$9919_memory_ptr","typeString":"struct IQuoterV2.QuoteExactInputSingleParams"},"typeName":{"id":9921,"name":"QuoteExactInputSingleParams","nodeType":"UserDefinedTypeName","referencedDeclaration":9919,"src":"2513:27:68","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$9919_storage_ptr","typeString":"struct IQuoterV2.QuoteExactInputSingleParams"}},"visibility":"internal"}],"src":"2503:57:68"},"returnParameters":{"id":9932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9925,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":9933,"src":"2595:17:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9924,"name":"uint256","nodeType":"ElementaryTypeName","src":"2595:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9927,"mutability":"mutable","name":"sqrtPriceX96After","nodeType":"VariableDeclaration","scope":9933,"src":"2614:25:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":9926,"name":"uint160","nodeType":"ElementaryTypeName","src":"2614:7:68","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":9929,"mutability":"mutable","name":"initializedTicksCrossed","nodeType":"VariableDeclaration","scope":9933,"src":"2641:30:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":9928,"name":"uint32","nodeType":"ElementaryTypeName","src":"2641:6:68","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":9931,"mutability":"mutable","name":"gasEstimate","nodeType":"VariableDeclaration","scope":9933,"src":"2673:19:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9930,"name":"uint256","nodeType":"ElementaryTypeName","src":"2673:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2594:99:68"},"scope":9977,"src":"2473:221:68","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":9934,"nodeType":"StructuredDocumentation","src":"2700:654:68","text":"@notice Returns the amount in required for a given exact output swap without executing the swap\n @param path The path of the swap, i.e. each token pair and the pool fee. Path must be provided in reverse order\n @param amountOut The amount of the last token to receive\n @return amountIn The amount of first token required to be paid\n @return sqrtPriceX96AfterList List of the sqrt price after the swap for each pool in the path\n @return initializedTicksCrossedList List of the initialized ticks that the swap crossed for each pool in the path\n @return gasEstimate The estimate of the gas that the swap consumes"},"functionSelector":"2f80bb1d","id":9951,"implemented":false,"kind":"function","modifiers":[],"name":"quoteExactOutput","nodeType":"FunctionDefinition","parameters":{"id":9939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9936,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":9951,"src":"3394:17:68","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9935,"name":"bytes","nodeType":"ElementaryTypeName","src":"3394:5:68","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9938,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":9951,"src":"3421:17:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9937,"name":"uint256","nodeType":"ElementaryTypeName","src":"3421:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3384:60:68"},"returnParameters":{"id":9950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9941,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":9951,"src":"3492:16:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9940,"name":"uint256","nodeType":"ElementaryTypeName","src":"3492:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9944,"mutability":"mutable","name":"sqrtPriceX96AfterList","nodeType":"VariableDeclaration","scope":9951,"src":"3522:38:68","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[]"},"typeName":{"baseType":{"id":9942,"name":"uint160","nodeType":"ElementaryTypeName","src":"3522:7:68","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":9943,"nodeType":"ArrayTypeName","src":"3522:9:68","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}},"visibility":"internal"},{"constant":false,"id":9947,"mutability":"mutable","name":"initializedTicksCrossedList","nodeType":"VariableDeclaration","scope":9951,"src":"3574:43:68","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":9945,"name":"uint32","nodeType":"ElementaryTypeName","src":"3574:6:68","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":9946,"nodeType":"ArrayTypeName","src":"3574:8:68","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"},{"constant":false,"id":9949,"mutability":"mutable","name":"gasEstimate","nodeType":"VariableDeclaration","scope":9951,"src":"3631:19:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9948,"name":"uint256","nodeType":"ElementaryTypeName","src":"3631:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3478:182:68"},"scope":9977,"src":"3359:302:68","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"IQuoterV2.QuoteExactOutputSingleParams","id":9962,"members":[{"constant":false,"id":9953,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":9962,"src":"3713:15:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9952,"name":"address","nodeType":"ElementaryTypeName","src":"3713:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9955,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":9962,"src":"3738:16:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9954,"name":"address","nodeType":"ElementaryTypeName","src":"3738:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9957,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":9962,"src":"3764:14:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9956,"name":"uint256","nodeType":"ElementaryTypeName","src":"3764:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9959,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":9962,"src":"3788:10:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":9958,"name":"uint24","nodeType":"ElementaryTypeName","src":"3788:6:68","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":9961,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":9962,"src":"3808:25:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":9960,"name":"uint160","nodeType":"ElementaryTypeName","src":"3808:7:68","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"QuoteExactOutputSingleParams","nodeType":"StructDefinition","scope":9977,"src":"3667:173:68","visibility":"public"},{"documentation":{"id":9963,"nodeType":"StructuredDocumentation","src":"3846:838:68","text":"@notice Returns the amount in required to receive the given exact output amount but for a swap of a single pool\n @param params The params for the quote, encoded as `QuoteExactOutputSingleParams`\n tokenIn The token being swapped in\n tokenOut The token being swapped out\n fee The fee of the token pool to consider for the pair\n amountOut The desired output amount\n sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\n @return amountIn The amount required as the input for the swap in order to receive `amountOut`\n @return sqrtPriceX96After The sqrt price of the pool after the swap\n @return initializedTicksCrossed The number of initialized ticks that the swap crossed\n @return gasEstimate The estimate of the gas that the swap consumes"},"functionSelector":"bd21704a","id":9976,"implemented":false,"kind":"function","modifiers":[],"name":"quoteExactOutputSingle","nodeType":"FunctionDefinition","parameters":{"id":9966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9965,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":9976,"src":"4730:42:68","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$9962_memory_ptr","typeString":"struct IQuoterV2.QuoteExactOutputSingleParams"},"typeName":{"id":9964,"name":"QuoteExactOutputSingleParams","nodeType":"UserDefinedTypeName","referencedDeclaration":9962,"src":"4730:28:68","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$9962_storage_ptr","typeString":"struct IQuoterV2.QuoteExactOutputSingleParams"}},"visibility":"internal"}],"src":"4720:58:68"},"returnParameters":{"id":9975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9968,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":9976,"src":"4813:16:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9967,"name":"uint256","nodeType":"ElementaryTypeName","src":"4813:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9970,"mutability":"mutable","name":"sqrtPriceX96After","nodeType":"VariableDeclaration","scope":9976,"src":"4831:25:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":9969,"name":"uint160","nodeType":"ElementaryTypeName","src":"4831:7:68","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":9972,"mutability":"mutable","name":"initializedTicksCrossed","nodeType":"VariableDeclaration","scope":9976,"src":"4858:30:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":9971,"name":"uint32","nodeType":"ElementaryTypeName","src":"4858:6:68","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":9974,"mutability":"mutable","name":"gasEstimate","nodeType":"VariableDeclaration","scope":9976,"src":"4890:19:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9973,"name":"uint256","nodeType":"ElementaryTypeName","src":"4890:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4812:98:68"},"scope":9977,"src":"4689:222:68","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":9978,"src":"542:4371:68"}],"src":"45:4869:68"},"id":68},"contracts/interfaces/ISelfPermit.sol":{"ast":{"absolutePath":"contracts/interfaces/ISelfPermit.sol","exportedSymbols":{"ISelfPermit":[10045]},"id":10046,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9979,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:69"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":9980,"nodeType":"StructuredDocumentation","src":"71:117:69","text":"@title Self Permit\n @notice Functionality to call permit on any EIP-2612-compliant token for use in the route"},"fullyImplemented":false,"id":10045,"linearizedBaseContracts":[10045],"name":"ISelfPermit","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":9981,"nodeType":"StructuredDocumentation","src":"216:663:69","text":"@notice Permits this contract to spend a given token from `msg.sender`\n @dev The `owner` is always msg.sender and the `spender` is always address(this).\n @param token The address of the token spent\n @param value The amount that can be spent of token\n @param deadline A timestamp, the current blocktime must be less than or equal to this timestamp\n @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\n @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\n @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`"},"functionSelector":"f3995c67","id":9996,"implemented":false,"kind":"function","modifiers":[],"name":"selfPermit","nodeType":"FunctionDefinition","parameters":{"id":9994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9983,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":9996,"src":"904:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9982,"name":"address","nodeType":"ElementaryTypeName","src":"904:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9985,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":9996,"src":"919:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9984,"name":"uint256","nodeType":"ElementaryTypeName","src":"919:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9987,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":9996,"src":"934:16:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9986,"name":"uint256","nodeType":"ElementaryTypeName","src":"934:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9989,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":9996,"src":"952:7:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9988,"name":"uint8","nodeType":"ElementaryTypeName","src":"952:5:69","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":9991,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":9996,"src":"961:9:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9990,"name":"bytes32","nodeType":"ElementaryTypeName","src":"961:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9993,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":9996,"src":"972:9:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9992,"name":"bytes32","nodeType":"ElementaryTypeName","src":"972:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"903:79:69"},"returnParameters":{"id":9995,"nodeType":"ParameterList","parameters":[],"src":"999:0:69"},"scope":10045,"src":"884:116:69","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":9997,"nodeType":"StructuredDocumentation","src":"1006:779:69","text":"@notice Permits this contract to spend a given token from `msg.sender`\n @dev The `owner` is always msg.sender and the `spender` is always address(this).\n Can be used instead of #selfPermit to prevent calls from failing due to a frontrun of a call to #selfPermit\n @param token The address of the token spent\n @param value The amount that can be spent of token\n @param deadline A timestamp, the current blocktime must be less than or equal to this timestamp\n @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\n @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\n @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`"},"functionSelector":"c2e3140a","id":10012,"implemented":false,"kind":"function","modifiers":[],"name":"selfPermitIfNecessary","nodeType":"FunctionDefinition","parameters":{"id":10010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9999,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":10012,"src":"1830:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9998,"name":"address","nodeType":"ElementaryTypeName","src":"1830:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10001,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":10012,"src":"1853:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10000,"name":"uint256","nodeType":"ElementaryTypeName","src":"1853:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10003,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":10012,"src":"1876:16:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10002,"name":"uint256","nodeType":"ElementaryTypeName","src":"1876:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10005,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":10012,"src":"1902:7:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":10004,"name":"uint8","nodeType":"ElementaryTypeName","src":"1902:5:69","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":10007,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":10012,"src":"1919:9:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10006,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1919:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10009,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":10012,"src":"1938:9:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10008,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1938:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1820:133:69"},"returnParameters":{"id":10011,"nodeType":"ParameterList","parameters":[],"src":"1970:0:69"},"scope":10045,"src":"1790:181:69","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":10013,"nodeType":"StructuredDocumentation","src":"1977:670:69","text":"@notice Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\n @dev The `owner` is always msg.sender and the `spender` is always address(this)\n @param token The address of the token spent\n @param nonce The current nonce of the owner\n @param expiry The timestamp at which the permit is no longer valid\n @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\n @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\n @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`"},"functionSelector":"4659a494","id":10028,"implemented":false,"kind":"function","modifiers":[],"name":"selfPermitAllowed","nodeType":"FunctionDefinition","parameters":{"id":10026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10015,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":10028,"src":"2688:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10014,"name":"address","nodeType":"ElementaryTypeName","src":"2688:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10017,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":10028,"src":"2711:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10016,"name":"uint256","nodeType":"ElementaryTypeName","src":"2711:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10019,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":10028,"src":"2734:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10018,"name":"uint256","nodeType":"ElementaryTypeName","src":"2734:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10021,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":10028,"src":"2758:7:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":10020,"name":"uint8","nodeType":"ElementaryTypeName","src":"2758:5:69","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":10023,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":10028,"src":"2775:9:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10022,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2775:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10025,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":10028,"src":"2794:9:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10024,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2794:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2678:131:69"},"returnParameters":{"id":10027,"nodeType":"ParameterList","parameters":[],"src":"2826:0:69"},"scope":10045,"src":"2652:175:69","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":10029,"nodeType":"StructuredDocumentation","src":"2833:801:69","text":"@notice Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\n @dev The `owner` is always msg.sender and the `spender` is always address(this)\n Can be used instead of #selfPermitAllowed to prevent calls from failing due to a frontrun of a call to #selfPermitAllowed.\n @param token The address of the token spent\n @param nonce The current nonce of the owner\n @param expiry The timestamp at which the permit is no longer valid\n @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\n @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\n @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`"},"functionSelector":"a4a78f0c","id":10044,"implemented":false,"kind":"function","modifiers":[],"name":"selfPermitAllowedIfNecessary","nodeType":"FunctionDefinition","parameters":{"id":10042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10031,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":10044,"src":"3686:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10030,"name":"address","nodeType":"ElementaryTypeName","src":"3686:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10033,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":10044,"src":"3709:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10032,"name":"uint256","nodeType":"ElementaryTypeName","src":"3709:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10035,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":10044,"src":"3732:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10034,"name":"uint256","nodeType":"ElementaryTypeName","src":"3732:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10037,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":10044,"src":"3756:7:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":10036,"name":"uint8","nodeType":"ElementaryTypeName","src":"3756:5:69","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":10039,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":10044,"src":"3773:9:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10038,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3773:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10041,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":10044,"src":"3792:9:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10040,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3792:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3676:131:69"},"returnParameters":{"id":10043,"nodeType":"ParameterList","parameters":[],"src":"3824:0:69"},"scope":10045,"src":"3639:186:69","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":10046,"src":"188:3639:69"}],"src":"45:3783:69"},"id":69},"contracts/interfaces/ISwapRouter.sol":{"ast":{"absolutePath":"contracts/interfaces/ISwapRouter.sol","exportedSymbols":{"IAstraCLSwapCallback":[152],"ISwapRouter":[10141]},"id":10142,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10047,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:70"},{"id":10048,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"70:19:70"},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol","file":"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol","id":10049,"nodeType":"ImportDirective","scope":10142,"sourceUnit":153,"src":"144:86:70","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10051,"name":"IAstraCLSwapCallback","nodeType":"UserDefinedTypeName","referencedDeclaration":152,"src":"362:20:70","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLSwapCallback_$152","typeString":"contract IAstraCLSwapCallback"}},"id":10052,"nodeType":"InheritanceSpecifier","src":"362:20:70"}],"contractDependencies":[152],"contractKind":"interface","documentation":{"id":10050,"nodeType":"StructuredDocumentation","src":"232:105:70","text":"@title Router token swapping functionality\n @notice Functions for swapping tokens via AstraDEX CL"},"fullyImplemented":false,"id":10141,"linearizedBaseContracts":[10141,152],"name":"ISwapRouter","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ISwapRouter.ExactInputSingleParams","id":10069,"members":[{"constant":false,"id":10054,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":10069,"src":"429:15:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10053,"name":"address","nodeType":"ElementaryTypeName","src":"429:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10056,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":10069,"src":"454:16:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10055,"name":"address","nodeType":"ElementaryTypeName","src":"454:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10058,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":10069,"src":"480:10:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":10057,"name":"uint24","nodeType":"ElementaryTypeName","src":"480:6:70","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":10060,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":10069,"src":"500:17:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10059,"name":"address","nodeType":"ElementaryTypeName","src":"500:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10062,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":10069,"src":"527:16:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10061,"name":"uint256","nodeType":"ElementaryTypeName","src":"527:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10064,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":10069,"src":"553:16:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10063,"name":"uint256","nodeType":"ElementaryTypeName","src":"553:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10066,"mutability":"mutable","name":"amountOutMinimum","nodeType":"VariableDeclaration","scope":10069,"src":"579:24:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10065,"name":"uint256","nodeType":"ElementaryTypeName","src":"579:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10068,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":10069,"src":"613:25:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10067,"name":"uint160","nodeType":"ElementaryTypeName","src":"613:7:70","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"ExactInputSingleParams","nodeType":"StructDefinition","scope":10141,"src":"389:256:70","visibility":"public"},{"documentation":{"id":10070,"nodeType":"StructuredDocumentation","src":"651:250:70","text":"@notice Swaps `amountIn` of one token for as much as possible of another token\n @param params The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\n @return amountOut The amount of the received token"},"functionSelector":"414bf389","id":10077,"implemented":false,"kind":"function","modifiers":[],"name":"exactInputSingle","nodeType":"FunctionDefinition","parameters":{"id":10073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10072,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":10077,"src":"932:38:70","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$10069_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"},"typeName":{"id":10071,"name":"ExactInputSingleParams","nodeType":"UserDefinedTypeName","referencedDeclaration":10069,"src":"932:22:70","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$10069_storage_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"}},"visibility":"internal"}],"src":"931:40:70"},"returnParameters":{"id":10076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10075,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":10077,"src":"998:17:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10074,"name":"uint256","nodeType":"ElementaryTypeName","src":"998:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"997:19:70"},"scope":10141,"src":"906:111:70","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"ISwapRouter.ExactInputParams","id":10088,"members":[{"constant":false,"id":10079,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":10088,"src":"1057:10:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":10078,"name":"bytes","nodeType":"ElementaryTypeName","src":"1057:5:70","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":10081,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":10088,"src":"1077:17:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10080,"name":"address","nodeType":"ElementaryTypeName","src":"1077:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10083,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":10088,"src":"1104:16:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10082,"name":"uint256","nodeType":"ElementaryTypeName","src":"1104:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10085,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":10088,"src":"1130:16:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10084,"name":"uint256","nodeType":"ElementaryTypeName","src":"1130:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10087,"mutability":"mutable","name":"amountOutMinimum","nodeType":"VariableDeclaration","scope":10088,"src":"1156:24:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10086,"name":"uint256","nodeType":"ElementaryTypeName","src":"1156:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ExactInputParams","nodeType":"StructDefinition","scope":10141,"src":"1023:164:70","visibility":"public"},{"documentation":{"id":10089,"nodeType":"StructuredDocumentation","src":"1193:273:70","text":"@notice Swaps `amountIn` of one token for as much as possible of another along the specified path\n @param params The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\n @return amountOut The amount of the received token"},"functionSelector":"c04b8d59","id":10096,"implemented":false,"kind":"function","modifiers":[],"name":"exactInput","nodeType":"FunctionDefinition","parameters":{"id":10092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10091,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":10096,"src":"1491:32:70","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$10088_calldata_ptr","typeString":"struct ISwapRouter.ExactInputParams"},"typeName":{"id":10090,"name":"ExactInputParams","nodeType":"UserDefinedTypeName","referencedDeclaration":10088,"src":"1491:16:70","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$10088_storage_ptr","typeString":"struct ISwapRouter.ExactInputParams"}},"visibility":"internal"}],"src":"1490:34:70"},"returnParameters":{"id":10095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10094,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":10096,"src":"1551:17:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10093,"name":"uint256","nodeType":"ElementaryTypeName","src":"1551:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1550:19:70"},"scope":10141,"src":"1471:99:70","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"ISwapRouter.ExactOutputSingleParams","id":10113,"members":[{"constant":false,"id":10098,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":10113,"src":"1617:15:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10097,"name":"address","nodeType":"ElementaryTypeName","src":"1617:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10100,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":10113,"src":"1642:16:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10099,"name":"address","nodeType":"ElementaryTypeName","src":"1642:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10102,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":10113,"src":"1668:10:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":10101,"name":"uint24","nodeType":"ElementaryTypeName","src":"1668:6:70","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":10104,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":10113,"src":"1688:17:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10103,"name":"address","nodeType":"ElementaryTypeName","src":"1688:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10106,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":10113,"src":"1715:16:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10105,"name":"uint256","nodeType":"ElementaryTypeName","src":"1715:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10108,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":10113,"src":"1741:17:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10107,"name":"uint256","nodeType":"ElementaryTypeName","src":"1741:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10110,"mutability":"mutable","name":"amountInMaximum","nodeType":"VariableDeclaration","scope":10113,"src":"1768:23:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10109,"name":"uint256","nodeType":"ElementaryTypeName","src":"1768:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10112,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":10113,"src":"1801:25:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10111,"name":"uint160","nodeType":"ElementaryTypeName","src":"1801:7:70","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"ExactOutputSingleParams","nodeType":"StructDefinition","scope":10141,"src":"1576:257:70","visibility":"public"},{"documentation":{"id":10114,"nodeType":"StructuredDocumentation","src":"1839:250:70","text":"@notice Swaps as little as possible of one token for `amountOut` of another token\n @param params The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\n @return amountIn The amount of the input token"},"functionSelector":"db3e2198","id":10121,"implemented":false,"kind":"function","modifiers":[],"name":"exactOutputSingle","nodeType":"FunctionDefinition","parameters":{"id":10117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10116,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":10121,"src":"2121:39:70","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$10113_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"},"typeName":{"id":10115,"name":"ExactOutputSingleParams","nodeType":"UserDefinedTypeName","referencedDeclaration":10113,"src":"2121:23:70","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$10113_storage_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"}},"visibility":"internal"}],"src":"2120:41:70"},"returnParameters":{"id":10120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10119,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":10121,"src":"2188:16:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10118,"name":"uint256","nodeType":"ElementaryTypeName","src":"2188:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2187:18:70"},"scope":10141,"src":"2094:112:70","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"ISwapRouter.ExactOutputParams","id":10132,"members":[{"constant":false,"id":10123,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":10132,"src":"2247:10:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":10122,"name":"bytes","nodeType":"ElementaryTypeName","src":"2247:5:70","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":10125,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":10132,"src":"2267:17:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10124,"name":"address","nodeType":"ElementaryTypeName","src":"2267:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10127,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":10132,"src":"2294:16:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10126,"name":"uint256","nodeType":"ElementaryTypeName","src":"2294:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10129,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":10132,"src":"2320:17:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10128,"name":"uint256","nodeType":"ElementaryTypeName","src":"2320:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10131,"mutability":"mutable","name":"amountInMaximum","nodeType":"VariableDeclaration","scope":10132,"src":"2347:23:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10130,"name":"uint256","nodeType":"ElementaryTypeName","src":"2347:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ExactOutputParams","nodeType":"StructDefinition","scope":10141,"src":"2212:165:70","visibility":"public"},{"documentation":{"id":10133,"nodeType":"StructuredDocumentation","src":"2383:284:70","text":"@notice Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)\n @param params The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\n @return amountIn The amount of the input token"},"functionSelector":"f28c0498","id":10140,"implemented":false,"kind":"function","modifiers":[],"name":"exactOutput","nodeType":"FunctionDefinition","parameters":{"id":10136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10135,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":10140,"src":"2693:33:70","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$10132_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams"},"typeName":{"id":10134,"name":"ExactOutputParams","nodeType":"UserDefinedTypeName","referencedDeclaration":10132,"src":"2693:17:70","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$10132_storage_ptr","typeString":"struct ISwapRouter.ExactOutputParams"}},"visibility":"internal"}],"src":"2692:35:70"},"returnParameters":{"id":10139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10138,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":10140,"src":"2754:16:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10137,"name":"uint256","nodeType":"ElementaryTypeName","src":"2754:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2753:18:70"},"scope":10141,"src":"2672:100:70","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":10142,"src":"337:2437:70"}],"src":"45:2730:70"},"id":70},"contracts/interfaces/ITickLens.sol":{"ast":{"absolutePath":"contracts/interfaces/ITickLens.sol","exportedSymbols":{"ITickLens":[10164]},"id":10165,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10143,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:71"},{"id":10144,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"70:19:71"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":10145,"nodeType":"StructuredDocumentation","src":"91:275:71","text":"@title Tick Lens\n @notice Provides functions for fetching chunks of tick data for a pool\n @dev This avoids the waterfall of fetching the tick bitmap, parsing the bitmap to know which ticks to fetch, and\n then sending additional multicalls to fetch the tick data"},"fullyImplemented":false,"id":10164,"linearizedBaseContracts":[10164],"name":"ITickLens","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ITickLens.PopulatedTick","id":10152,"members":[{"constant":false,"id":10147,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":10152,"src":"423:10:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":10146,"name":"int24","nodeType":"ElementaryTypeName","src":"423:5:71","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":10149,"mutability":"mutable","name":"liquidityNet","nodeType":"VariableDeclaration","scope":10152,"src":"443:19:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":10148,"name":"int128","nodeType":"ElementaryTypeName","src":"443:6:71","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":10151,"mutability":"mutable","name":"liquidityGross","nodeType":"VariableDeclaration","scope":10152,"src":"472:22:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":10150,"name":"uint128","nodeType":"ElementaryTypeName","src":"472:7:71","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"PopulatedTick","nodeType":"StructDefinition","scope":10164,"src":"392:109:71","visibility":"public"},{"documentation":{"id":10153,"nodeType":"StructuredDocumentation","src":"507:416:71","text":"@notice Get all the tick data for the populated ticks from a word of the tick bitmap of a pool\n @param pool The address of the pool for which to fetch populated tick data\n @param tickBitmapIndex The index of the word in the tick bitmap for which to parse the bitmap and\n fetch all the populated ticks\n @return populatedTicks An array of tick data for the given word in the tick bitmap"},"functionSelector":"351fb478","id":10163,"implemented":false,"kind":"function","modifiers":[],"name":"getPopulatedTicksInWord","nodeType":"FunctionDefinition","parameters":{"id":10158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10155,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":10163,"src":"970:12:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10154,"name":"address","nodeType":"ElementaryTypeName","src":"970:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10157,"mutability":"mutable","name":"tickBitmapIndex","nodeType":"VariableDeclaration","scope":10163,"src":"992:21:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":10156,"name":"int16","nodeType":"ElementaryTypeName","src":"992:5:71","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"960:59:71"},"returnParameters":{"id":10162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10161,"mutability":"mutable","name":"populatedTicks","nodeType":"VariableDeclaration","scope":10163,"src":"1043:37:71","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PopulatedTick_$10152_memory_ptr_$dyn_memory_ptr","typeString":"struct ITickLens.PopulatedTick[]"},"typeName":{"baseType":{"id":10159,"name":"PopulatedTick","nodeType":"UserDefinedTypeName","referencedDeclaration":10152,"src":"1043:13:71","typeDescriptions":{"typeIdentifier":"t_struct$_PopulatedTick_$10152_storage_ptr","typeString":"struct ITickLens.PopulatedTick"}},"id":10160,"nodeType":"ArrayTypeName","src":"1043:15:71","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PopulatedTick_$10152_storage_$dyn_storage_ptr","typeString":"struct ITickLens.PopulatedTick[]"}},"visibility":"internal"}],"src":"1042:39:71"},"scope":10164,"src":"928:154:71","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10165,"src":"366:718:71"}],"src":"45:1040:71"},"id":71},"contracts/interfaces/classic/IAstraPair.sol":{"ast":{"absolutePath":"contracts/interfaces/classic/IAstraPair.sol","exportedSymbols":{"IAstraPair":[10406]},"id":10407,"nodeType":"SourceUnit","nodes":[{"id":10166,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"0:24:72"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":10406,"linearizedBaseContracts":[10406],"name":"IAstraPair","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":10174,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":10173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10168,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":10174,"src":"68:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10167,"name":"address","nodeType":"ElementaryTypeName","src":"68:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10170,"indexed":true,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":10174,"src":"91:23:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10169,"name":"address","nodeType":"ElementaryTypeName","src":"91:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10172,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":10174,"src":"116:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10171,"name":"uint256","nodeType":"ElementaryTypeName","src":"116:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"67:63:72"},"src":"53:78:72"},{"anonymous":false,"id":10182,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":10181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10176,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":10182,"src":"151:20:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10175,"name":"address","nodeType":"ElementaryTypeName","src":"151:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10178,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":10182,"src":"173:18:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10177,"name":"address","nodeType":"ElementaryTypeName","src":"173:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10180,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":10182,"src":"193:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10179,"name":"uint256","nodeType":"ElementaryTypeName","src":"193:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"150:57:72"},"src":"136:72:72"},{"functionSelector":"06fdde03","id":10187,"implemented":false,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","parameters":{"id":10183,"nodeType":"ParameterList","parameters":[],"src":"227:2:72"},"returnParameters":{"id":10186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10185,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10187,"src":"253:13:72","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10184,"name":"string","nodeType":"ElementaryTypeName","src":"253:6:72","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"252:15:72"},"scope":10406,"src":"214:54:72","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"95d89b41","id":10192,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","parameters":{"id":10188,"nodeType":"ParameterList","parameters":[],"src":"289:2:72"},"returnParameters":{"id":10191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10190,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10192,"src":"315:13:72","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10189,"name":"string","nodeType":"ElementaryTypeName","src":"315:6:72","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"314:15:72"},"scope":10406,"src":"274:56:72","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"313ce567","id":10197,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nodeType":"FunctionDefinition","parameters":{"id":10193,"nodeType":"ParameterList","parameters":[],"src":"353:2:72"},"returnParameters":{"id":10196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10195,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10197,"src":"379:5:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":10194,"name":"uint8","nodeType":"ElementaryTypeName","src":"379:5:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"378:7:72"},"scope":10406,"src":"336:50:72","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"18160ddd","id":10202,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":10198,"nodeType":"ParameterList","parameters":[],"src":"412:2:72"},"returnParameters":{"id":10201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10200,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10202,"src":"438:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10199,"name":"uint256","nodeType":"ElementaryTypeName","src":"438:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"437:9:72"},"scope":10406,"src":"392:55:72","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"70a08231","id":10209,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":10205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10204,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":10209,"src":"472:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10203,"name":"address","nodeType":"ElementaryTypeName","src":"472:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"471:15:72"},"returnParameters":{"id":10208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10207,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10209,"src":"510:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10206,"name":"uint256","nodeType":"ElementaryTypeName","src":"510:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"509:9:72"},"scope":10406,"src":"453:66:72","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"dd62ed3e","id":10218,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":10214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10211,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":10218,"src":"544:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10210,"name":"address","nodeType":"ElementaryTypeName","src":"544:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10213,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":10218,"src":"559:15:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10212,"name":"address","nodeType":"ElementaryTypeName","src":"559:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"543:32:72"},"returnParameters":{"id":10217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10216,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10218,"src":"599:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10215,"name":"uint256","nodeType":"ElementaryTypeName","src":"599:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"598:9:72"},"scope":10406,"src":"525:83:72","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"095ea7b3","id":10227,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":10223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10220,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":10227,"src":"631:15:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10219,"name":"address","nodeType":"ElementaryTypeName","src":"631:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10222,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":10227,"src":"648:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10221,"name":"uint256","nodeType":"ElementaryTypeName","src":"648:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"630:32:72"},"returnParameters":{"id":10226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10225,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10227,"src":"681:4:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10224,"name":"bool","nodeType":"ElementaryTypeName","src":"681:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"680:6:72"},"scope":10406,"src":"614:73:72","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a9059cbb","id":10236,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":10232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10229,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":10236,"src":"711:10:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10228,"name":"address","nodeType":"ElementaryTypeName","src":"711:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10231,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":10236,"src":"723:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10230,"name":"uint256","nodeType":"ElementaryTypeName","src":"723:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"710:27:72"},"returnParameters":{"id":10235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10234,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10236,"src":"756:4:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10233,"name":"bool","nodeType":"ElementaryTypeName","src":"756:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"755:6:72"},"scope":10406,"src":"693:69:72","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"23b872dd","id":10247,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":10243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10238,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":10247,"src":"790:12:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10237,"name":"address","nodeType":"ElementaryTypeName","src":"790:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10240,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":10247,"src":"804:10:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10239,"name":"address","nodeType":"ElementaryTypeName","src":"804:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10242,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":10247,"src":"816:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10241,"name":"uint256","nodeType":"ElementaryTypeName","src":"816:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"789:41:72"},"returnParameters":{"id":10246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10245,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10247,"src":"849:4:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10244,"name":"bool","nodeType":"ElementaryTypeName","src":"849:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"848:6:72"},"scope":10406,"src":"768:87:72","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3644e515","id":10252,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","parameters":{"id":10248,"nodeType":"ParameterList","parameters":[],"src":"886:2:72"},"returnParameters":{"id":10251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10250,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10252,"src":"912:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10249,"name":"bytes32","nodeType":"ElementaryTypeName","src":"912:7:72","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"911:9:72"},"scope":10406,"src":"861:60:72","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"30adf81f","id":10257,"implemented":false,"kind":"function","modifiers":[],"name":"PERMIT_TYPEHASH","nodeType":"FunctionDefinition","parameters":{"id":10253,"nodeType":"ParameterList","parameters":[],"src":"951:2:72"},"returnParameters":{"id":10256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10255,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10257,"src":"977:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10254,"name":"bytes32","nodeType":"ElementaryTypeName","src":"977:7:72","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"976:9:72"},"scope":10406,"src":"927:59:72","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"7ecebe00","id":10264,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nodeType":"FunctionDefinition","parameters":{"id":10260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10259,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":10264,"src":"1008:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10258,"name":"address","nodeType":"ElementaryTypeName","src":"1008:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1007:15:72"},"returnParameters":{"id":10263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10262,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10264,"src":"1046:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10261,"name":"uint256","nodeType":"ElementaryTypeName","src":"1046:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1045:9:72"},"scope":10406,"src":"992:63:72","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d505accf","id":10281,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":10279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10266,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":10281,"src":"1086:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10265,"name":"address","nodeType":"ElementaryTypeName","src":"1086:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10268,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":10281,"src":"1109:15:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10267,"name":"address","nodeType":"ElementaryTypeName","src":"1109:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10270,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":10281,"src":"1134:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10269,"name":"uint256","nodeType":"ElementaryTypeName","src":"1134:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10272,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":10281,"src":"1157:16:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10271,"name":"uint256","nodeType":"ElementaryTypeName","src":"1157:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10274,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":10281,"src":"1183:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":10273,"name":"uint8","nodeType":"ElementaryTypeName","src":"1183:5:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":10276,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":10281,"src":"1200:9:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10275,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1200:7:72","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10278,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":10281,"src":"1219:9:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10277,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1219:7:72","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1076:158:72"},"returnParameters":{"id":10280,"nodeType":"ParameterList","parameters":[],"src":"1243:0:72"},"scope":10406,"src":"1061:183:72","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"id":10289,"name":"Mint","nodeType":"EventDefinition","parameters":{"id":10288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10283,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":10289,"src":"1261:22:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10282,"name":"address","nodeType":"ElementaryTypeName","src":"1261:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10285,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":10289,"src":"1285:15:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10284,"name":"uint256","nodeType":"ElementaryTypeName","src":"1285:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10287,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":10289,"src":"1302:15:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10286,"name":"uint256","nodeType":"ElementaryTypeName","src":"1302:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1260:58:72"},"src":"1250:69:72"},{"anonymous":false,"id":10299,"name":"Burn","nodeType":"EventDefinition","parameters":{"id":10298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10291,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":10299,"src":"1335:22:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10290,"name":"address","nodeType":"ElementaryTypeName","src":"1335:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10293,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":10299,"src":"1359:15:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10292,"name":"uint256","nodeType":"ElementaryTypeName","src":"1359:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10295,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":10299,"src":"1376:15:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10294,"name":"uint256","nodeType":"ElementaryTypeName","src":"1376:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10297,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":10299,"src":"1393:18:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10296,"name":"address","nodeType":"ElementaryTypeName","src":"1393:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1334:78:72"},"src":"1324:89:72"},{"anonymous":false,"id":10313,"name":"Swap","nodeType":"EventDefinition","parameters":{"id":10312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10301,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":10313,"src":"1438:22:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10300,"name":"address","nodeType":"ElementaryTypeName","src":"1438:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10303,"indexed":false,"mutability":"mutable","name":"amount0In","nodeType":"VariableDeclaration","scope":10313,"src":"1470:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10302,"name":"uint256","nodeType":"ElementaryTypeName","src":"1470:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10305,"indexed":false,"mutability":"mutable","name":"amount1In","nodeType":"VariableDeclaration","scope":10313,"src":"1497:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10304,"name":"uint256","nodeType":"ElementaryTypeName","src":"1497:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10307,"indexed":false,"mutability":"mutable","name":"amount0Out","nodeType":"VariableDeclaration","scope":10313,"src":"1524:18:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10306,"name":"uint256","nodeType":"ElementaryTypeName","src":"1524:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10309,"indexed":false,"mutability":"mutable","name":"amount1Out","nodeType":"VariableDeclaration","scope":10313,"src":"1552:18:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10308,"name":"uint256","nodeType":"ElementaryTypeName","src":"1552:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10311,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":10313,"src":"1580:18:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10310,"name":"address","nodeType":"ElementaryTypeName","src":"1580:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1428:176:72"},"src":"1418:187:72"},{"anonymous":false,"id":10319,"name":"Sync","nodeType":"EventDefinition","parameters":{"id":10318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10315,"indexed":false,"mutability":"mutable","name":"reserve0","nodeType":"VariableDeclaration","scope":10319,"src":"1621:16:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":10314,"name":"uint112","nodeType":"ElementaryTypeName","src":"1621:7:72","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},{"constant":false,"id":10317,"indexed":false,"mutability":"mutable","name":"reserve1","nodeType":"VariableDeclaration","scope":10319,"src":"1639:16:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":10316,"name":"uint112","nodeType":"ElementaryTypeName","src":"1639:7:72","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"1620:36:72"},"src":"1610:47:72"},{"functionSelector":"ba9a7a56","id":10324,"implemented":false,"kind":"function","modifiers":[],"name":"MINIMUM_LIQUIDITY","nodeType":"FunctionDefinition","parameters":{"id":10320,"nodeType":"ParameterList","parameters":[],"src":"1689:2:72"},"returnParameters":{"id":10323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10322,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10324,"src":"1715:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10321,"name":"uint256","nodeType":"ElementaryTypeName","src":"1715:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1714:9:72"},"scope":10406,"src":"1663:61:72","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"c45a0155","id":10329,"implemented":false,"kind":"function","modifiers":[],"name":"factory","nodeType":"FunctionDefinition","parameters":{"id":10325,"nodeType":"ParameterList","parameters":[],"src":"1746:2:72"},"returnParameters":{"id":10328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10327,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10329,"src":"1772:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10326,"name":"address","nodeType":"ElementaryTypeName","src":"1772:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1771:9:72"},"scope":10406,"src":"1730:51:72","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0dfe1681","id":10334,"implemented":false,"kind":"function","modifiers":[],"name":"token0","nodeType":"FunctionDefinition","parameters":{"id":10330,"nodeType":"ParameterList","parameters":[],"src":"1802:2:72"},"returnParameters":{"id":10333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10332,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10334,"src":"1828:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10331,"name":"address","nodeType":"ElementaryTypeName","src":"1828:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1827:9:72"},"scope":10406,"src":"1787:50:72","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d21220a7","id":10339,"implemented":false,"kind":"function","modifiers":[],"name":"token1","nodeType":"FunctionDefinition","parameters":{"id":10335,"nodeType":"ParameterList","parameters":[],"src":"1858:2:72"},"returnParameters":{"id":10338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10337,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10339,"src":"1884:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10336,"name":"address","nodeType":"ElementaryTypeName","src":"1884:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1883:9:72"},"scope":10406,"src":"1843:50:72","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0902f1ac","id":10348,"implemented":false,"kind":"function","modifiers":[],"name":"getReserves","nodeType":"FunctionDefinition","parameters":{"id":10340,"nodeType":"ParameterList","parameters":[],"src":"1919:2:72"},"returnParameters":{"id":10347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10342,"mutability":"mutable","name":"reserve0","nodeType":"VariableDeclaration","scope":10348,"src":"1945:16:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":10341,"name":"uint112","nodeType":"ElementaryTypeName","src":"1945:7:72","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},{"constant":false,"id":10344,"mutability":"mutable","name":"reserve1","nodeType":"VariableDeclaration","scope":10348,"src":"1963:16:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":10343,"name":"uint112","nodeType":"ElementaryTypeName","src":"1963:7:72","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"},{"constant":false,"id":10346,"mutability":"mutable","name":"blockTimestampLast","nodeType":"VariableDeclaration","scope":10348,"src":"1981:25:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":10345,"name":"uint32","nodeType":"ElementaryTypeName","src":"1981:6:72","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1944:63:72"},"scope":10406,"src":"1899:109:72","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"5909c0d5","id":10353,"implemented":false,"kind":"function","modifiers":[],"name":"price0CumulativeLast","nodeType":"FunctionDefinition","parameters":{"id":10349,"nodeType":"ParameterList","parameters":[],"src":"2043:2:72"},"returnParameters":{"id":10352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10351,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10353,"src":"2069:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10350,"name":"uint256","nodeType":"ElementaryTypeName","src":"2069:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2068:9:72"},"scope":10406,"src":"2014:64:72","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"5a3d5493","id":10358,"implemented":false,"kind":"function","modifiers":[],"name":"price1CumulativeLast","nodeType":"FunctionDefinition","parameters":{"id":10354,"nodeType":"ParameterList","parameters":[],"src":"2113:2:72"},"returnParameters":{"id":10357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10356,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10358,"src":"2139:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10355,"name":"uint256","nodeType":"ElementaryTypeName","src":"2139:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2138:9:72"},"scope":10406,"src":"2084:64:72","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7464fc3d","id":10363,"implemented":false,"kind":"function","modifiers":[],"name":"kLast","nodeType":"FunctionDefinition","parameters":{"id":10359,"nodeType":"ParameterList","parameters":[],"src":"2168:2:72"},"returnParameters":{"id":10362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10361,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10363,"src":"2194:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10360,"name":"uint256","nodeType":"ElementaryTypeName","src":"2194:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2193:9:72"},"scope":10406,"src":"2154:49:72","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6a627842","id":10370,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":10366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10365,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":10370,"src":"2223:10:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10364,"name":"address","nodeType":"ElementaryTypeName","src":"2223:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2222:12:72"},"returnParameters":{"id":10369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10368,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":10370,"src":"2253:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10367,"name":"uint256","nodeType":"ElementaryTypeName","src":"2253:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2252:19:72"},"scope":10406,"src":"2209:63:72","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"89afcb44","id":10379,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":10373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10372,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":10379,"src":"2292:10:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10371,"name":"address","nodeType":"ElementaryTypeName","src":"2292:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2291:12:72"},"returnParameters":{"id":10378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10375,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":10379,"src":"2322:15:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10374,"name":"uint256","nodeType":"ElementaryTypeName","src":"2322:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10377,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":10379,"src":"2339:15:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10376,"name":"uint256","nodeType":"ElementaryTypeName","src":"2339:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2321:34:72"},"scope":10406,"src":"2278:78:72","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"022c0d9f","id":10390,"implemented":false,"kind":"function","modifiers":[],"name":"swap","nodeType":"FunctionDefinition","parameters":{"id":10388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10381,"mutability":"mutable","name":"amount0Out","nodeType":"VariableDeclaration","scope":10390,"src":"2376:18:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10380,"name":"uint256","nodeType":"ElementaryTypeName","src":"2376:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10383,"mutability":"mutable","name":"amount1Out","nodeType":"VariableDeclaration","scope":10390,"src":"2396:18:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10382,"name":"uint256","nodeType":"ElementaryTypeName","src":"2396:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10385,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":10390,"src":"2416:10:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10384,"name":"address","nodeType":"ElementaryTypeName","src":"2416:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10387,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":10390,"src":"2428:19:72","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":10386,"name":"bytes","nodeType":"ElementaryTypeName","src":"2428:5:72","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2375:73:72"},"returnParameters":{"id":10389,"nodeType":"ParameterList","parameters":[],"src":"2457:0:72"},"scope":10406,"src":"2362:96:72","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"bc25cf77","id":10395,"implemented":false,"kind":"function","modifiers":[],"name":"skim","nodeType":"FunctionDefinition","parameters":{"id":10393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10392,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":10395,"src":"2478:10:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10391,"name":"address","nodeType":"ElementaryTypeName","src":"2478:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2477:12:72"},"returnParameters":{"id":10394,"nodeType":"ParameterList","parameters":[],"src":"2498:0:72"},"scope":10406,"src":"2464:35:72","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"fff6cae9","id":10398,"implemented":false,"kind":"function","modifiers":[],"name":"sync","nodeType":"FunctionDefinition","parameters":{"id":10396,"nodeType":"ParameterList","parameters":[],"src":"2518:2:72"},"returnParameters":{"id":10397,"nodeType":"ParameterList","parameters":[],"src":"2529:0:72"},"scope":10406,"src":"2505:25:72","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"485cc955","id":10405,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":10403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10400,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10405,"src":"2556:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10399,"name":"address","nodeType":"ElementaryTypeName","src":"2556:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10402,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10405,"src":"2565:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10401,"name":"address","nodeType":"ElementaryTypeName","src":"2565:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2555:18:72"},"returnParameters":{"id":10404,"nodeType":"ParameterList","parameters":[],"src":"2582:0:72"},"scope":10406,"src":"2536:47:72","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":10407,"src":"26:2559:72"}],"src":"0:2586:72"},"id":72},"contracts/interfaces/external/IERC1271.sol":{"ast":{"absolutePath":"contracts/interfaces/external/IERC1271.sol","exportedSymbols":{"IERC1271":[10420]},"id":10421,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10408,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:73"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":10409,"nodeType":"StructuredDocumentation","src":"71:176:73","text":"@title Interface for verifying contract-based account signatures\n @notice Interface that verifies provided signature for the data\n @dev Interface defined by EIP-1271"},"fullyImplemented":false,"id":10420,"linearizedBaseContracts":[10420],"name":"IERC1271","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":10410,"nodeType":"StructuredDocumentation","src":"272:471:73","text":"@notice Returns whether the provided signature is valid for the provided data\n @dev MUST return the bytes4 magic value 0x1626ba7e when function passes.\n MUST NOT modify state (using STATICCALL for solc < 0.5, view modifier for solc > 0.5).\n MUST allow external calls.\n @param hash Hash of the data to be signed\n @param signature Signature byte array associated with _data\n @return magicValue The bytes4 magic value 0x1626ba7e"},"functionSelector":"1626ba7e","id":10419,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nodeType":"FunctionDefinition","parameters":{"id":10415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10412,"mutability":"mutable","name":"hash","nodeType":"VariableDeclaration","scope":10419,"src":"774:12:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10411,"name":"bytes32","nodeType":"ElementaryTypeName","src":"774:7:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10414,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":10419,"src":"788:22:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10413,"name":"bytes","nodeType":"ElementaryTypeName","src":"788:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"773:38:73"},"returnParameters":{"id":10418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10417,"mutability":"mutable","name":"magicValue","nodeType":"VariableDeclaration","scope":10419,"src":"835:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10416,"name":"bytes4","nodeType":"ElementaryTypeName","src":"835:6:73","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"834:19:73"},"scope":10420,"src":"748:106:73","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10421,"src":"247:609:73"}],"src":"45:812:73"},"id":73},"contracts/interfaces/external/IERC20PermitAllowed.sol":{"ast":{"absolutePath":"contracts/interfaces/external/IERC20PermitAllowed.sol","exportedSymbols":{"IERC20PermitAllowed":[10444]},"id":10445,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10422,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:74"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":10423,"nodeType":"StructuredDocumentation","src":"71:82:74","text":"@title Interface for permit\n @notice Interface used by DAI/CHAI for permit"},"fullyImplemented":false,"id":10444,"linearizedBaseContracts":[10444],"name":"IERC20PermitAllowed","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":10424,"nodeType":"StructuredDocumentation","src":"189:802:74","text":"@notice Approve the spender to spend some tokens via the holder signature\n @dev This is the permit interface used by DAI and CHAI\n @param holder The address of the token holder, the token owner\n @param spender The address of the token spender\n @param nonce The holder's nonce, increases at each call to permit\n @param expiry The timestamp at which the permit is no longer valid\n @param allowed Boolean that sets approval amount, true for type(uint256).max and false for 0\n @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`\n @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`\n @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`"},"functionSelector":"8fcbaf0c","id":10443,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":10441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10426,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":10443,"src":"1021:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10425,"name":"address","nodeType":"ElementaryTypeName","src":"1021:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10428,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":10443,"src":"1045:15:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10427,"name":"address","nodeType":"ElementaryTypeName","src":"1045:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10430,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":10443,"src":"1070:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10429,"name":"uint256","nodeType":"ElementaryTypeName","src":"1070:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10432,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":10443,"src":"1093:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10431,"name":"uint256","nodeType":"ElementaryTypeName","src":"1093:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10434,"mutability":"mutable","name":"allowed","nodeType":"VariableDeclaration","scope":10443,"src":"1117:12:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10433,"name":"bool","nodeType":"ElementaryTypeName","src":"1117:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10436,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":10443,"src":"1139:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":10435,"name":"uint8","nodeType":"ElementaryTypeName","src":"1139:5:74","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":10438,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":10443,"src":"1156:9:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10437,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1156:7:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10440,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":10443,"src":"1175:9:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10439,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1175:7:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1011:179:74"},"returnParameters":{"id":10442,"nodeType":"ParameterList","parameters":[],"src":"1199:0:74"},"scope":10444,"src":"996:204:74","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":10445,"src":"153:1049:74"}],"src":"45:1158:74"},"id":74},"contracts/interfaces/external/ISAMB.sol":{"ast":{"absolutePath":"contracts/interfaces/external/ISAMB.sol","exportedSymbols":{"IERC20":[4183],"ISAMB":[10461]},"id":10462,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10446,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:75"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":10447,"nodeType":"ImportDirective","scope":10462,"sourceUnit":4184,"src":"70:56:75","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10449,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":4183,"src":"177:6:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4183","typeString":"contract IERC20"}},"id":10450,"nodeType":"InheritanceSpecifier","src":"177:6:75"}],"contractDependencies":[4183],"contractKind":"interface","documentation":{"id":10448,"nodeType":"StructuredDocumentation","src":"128:30:75","text":"@title Interface for SAMB"},"fullyImplemented":false,"id":10461,"linearizedBaseContracts":[10461,4183],"name":"ISAMB","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":10451,"nodeType":"StructuredDocumentation","src":"190:46:75","text":"@notice Deposit ether to get wrapped ether"},"functionSelector":"d0e30db0","id":10454,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":10452,"nodeType":"ParameterList","parameters":[],"src":"257:2:75"},"returnParameters":{"id":10453,"nodeType":"ParameterList","parameters":[],"src":"276:0:75"},"scope":10461,"src":"241:36:75","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":10455,"nodeType":"StructuredDocumentation","src":"283:47:75","text":"@notice Withdraw wrapped ether to get ether"},"functionSelector":"2e1a7d4d","id":10460,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":10458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10457,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10460,"src":"353:7:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10456,"name":"uint256","nodeType":"ElementaryTypeName","src":"353:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"352:9:75"},"returnParameters":{"id":10459,"nodeType":"ParameterList","parameters":[],"src":"370:0:75"},"scope":10461,"src":"335:36:75","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":10462,"src":"158:215:75"}],"src":"45:329:75"},"id":75},"contracts/lens/Quoter.sol":{"ast":{"absolutePath":"contracts/lens/Quoter.sol","exportedSymbols":{"BytesLib":[12063],"CallbackValidation":[12125],"IAstraCLPool":[110],"IAstraCLPoolActions":[248],"IAstraCLPoolDerivedState":[279],"IAstraCLPoolEvents":[398],"IAstraCLPoolImmutables":[438],"IAstraCLPoolOwnerActions":[464],"IAstraCLPoolState":[572],"IAstraCLSwapCallback":[152],"IPeripheryImmutableState":[9751],"IQuoter":[9886],"Path":[14272],"PeripheryImmutableState":[8400],"PoolAddress":[14364],"Quoter":[10932],"SafeCast":[1293],"TickMath":[2536]},"id":10933,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10463,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:76"},{"id":10464,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"69:19:76"},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol","file":"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol","id":10465,"nodeType":"ImportDirective","scope":10933,"sourceUnit":1294,"src":"143:64:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/TickMath.sol","file":"@airdao/astra-cl-core/contracts/libraries/TickMath.sol","id":10466,"nodeType":"ImportDirective","scope":10933,"sourceUnit":2537,"src":"261:64:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","file":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","id":10467,"nodeType":"ImportDirective","scope":10933,"sourceUnit":111,"src":"379:69:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol","file":"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol","id":10468,"nodeType":"ImportDirective","scope":10933,"sourceUnit":153,"src":"502:86:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IQuoter.sol","file":"../interfaces/IQuoter.sol","id":10469,"nodeType":"ImportDirective","scope":10933,"sourceUnit":9887,"src":"590:35:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/PeripheryImmutableState.sol","file":"../base/PeripheryImmutableState.sol","id":10470,"nodeType":"ImportDirective","scope":10933,"sourceUnit":8401,"src":"626:45:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/Path.sol","file":"../libraries/Path.sol","id":10471,"nodeType":"ImportDirective","scope":10933,"sourceUnit":14273,"src":"672:31:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/PoolAddress.sol","file":"../libraries/PoolAddress.sol","id":10472,"nodeType":"ImportDirective","scope":10933,"sourceUnit":14365,"src":"704:38:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/CallbackValidation.sol","file":"../libraries/CallbackValidation.sol","id":10473,"nodeType":"ImportDirective","scope":10933,"sourceUnit":12126,"src":"743:45:76","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10475,"name":"IQuoter","nodeType":"UserDefinedTypeName","referencedDeclaration":9886,"src":"1122:7:76","typeDescriptions":{"typeIdentifier":"t_contract$_IQuoter_$9886","typeString":"contract IQuoter"}},"id":10476,"nodeType":"InheritanceSpecifier","src":"1122:7:76"},{"baseName":{"id":10477,"name":"IAstraCLSwapCallback","nodeType":"UserDefinedTypeName","referencedDeclaration":152,"src":"1131:20:76","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLSwapCallback_$152","typeString":"contract IAstraCLSwapCallback"}},"id":10478,"nodeType":"InheritanceSpecifier","src":"1131:20:76"},{"baseName":{"id":10479,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":8400,"src":"1153:23:76","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$8400","typeString":"contract PeripheryImmutableState"}},"id":10480,"nodeType":"InheritanceSpecifier","src":"1153:23:76"}],"contractDependencies":[152,8400,9751,9886],"contractKind":"contract","documentation":{"id":10474,"nodeType":"StructuredDocumentation","src":"790:313:76","text":"@title Provides quotes for swaps\n @notice Allows getting the expected amount out or amount in for a given swap without executing the swap\n @dev These functions are not gas efficient and should _not_ be called on chain. Instead, optimistically execute\n the swap and check the amounts in the callback."},"fullyImplemented":true,"id":10932,"linearizedBaseContracts":[10932,8400,9751,152,9886],"name":"Quoter","nodeType":"ContractDefinition","nodes":[{"id":10483,"libraryName":{"id":10481,"name":"Path","nodeType":"UserDefinedTypeName","referencedDeclaration":14272,"src":"1189:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_Path_$14272","typeString":"library Path"}},"nodeType":"UsingForDirective","src":"1183:21:76","typeName":{"id":10482,"name":"bytes","nodeType":"ElementaryTypeName","src":"1198:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"id":10486,"libraryName":{"id":10484,"name":"SafeCast","nodeType":"UserDefinedTypeName","referencedDeclaration":1293,"src":"1215:8:76","typeDescriptions":{"typeIdentifier":"t_contract$_SafeCast_$1293","typeString":"library SafeCast"}},"nodeType":"UsingForDirective","src":"1209:27:76","typeName":{"id":10485,"name":"uint256","nodeType":"ElementaryTypeName","src":"1228:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"documentation":{"id":10487,"nodeType":"StructuredDocumentation","src":"1242:91:76","text":"@dev Transient storage variable used to check a safety condition in exact output swaps."},"id":10489,"mutability":"mutable","name":"amountOutCached","nodeType":"VariableDeclaration","scope":10932,"src":"1338:31:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10488,"name":"uint256","nodeType":"ElementaryTypeName","src":"1338:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":10500,"nodeType":"Block","src":"1462:2:76","statements":[]},"id":10501,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":10496,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10491,"src":"1445:8:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10497,"name":"_SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10493,"src":"1455:5:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":10498,"modifierName":{"id":10495,"name":"PeripheryImmutableState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8400,"src":"1421:23:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PeripheryImmutableState_$8400_$","typeString":"type(contract PeripheryImmutableState)"}},"nodeType":"ModifierInvocation","src":"1421:40:76"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":10494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10491,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":10501,"src":"1388:16:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10490,"name":"address","nodeType":"ElementaryTypeName","src":"1388:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10493,"mutability":"mutable","name":"_SAMB","nodeType":"VariableDeclaration","scope":10501,"src":"1406:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10492,"name":"address","nodeType":"ElementaryTypeName","src":"1406:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1387:33:76"},"returnParameters":{"id":10499,"nodeType":"ParameterList","parameters":[],"src":"1462:0:76"},"scope":10932,"src":"1376:88:76","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":10525,"nodeType":"Block","src":"1567:118:76","statements":[{"expression":{"arguments":[{"arguments":[{"id":10515,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8379,"src":"1624:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":10518,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10503,"src":"1656:6:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10519,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10505,"src":"1664:6:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10520,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10507,"src":"1672:3:76","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":10516,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14364,"src":"1633:11:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$14364_$","typeString":"type(library PoolAddress)"}},"id":10517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPoolKey","nodeType":"MemberAccess","referencedDeclaration":14316,"src":"1633:22:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_uint24_$returns$_t_struct$_PoolKey_$14285_memory_ptr_$","typeString":"function (address,address,uint24) pure returns (struct PoolAddress.PoolKey memory)"}},"id":10521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1633:43:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":10513,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14364,"src":"1597:11:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$14364_$","typeString":"type(library PoolAddress)"}},"id":10514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":14363,"src":"1597:26:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$14285_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":10522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1597:80:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10512,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"1584:12:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":10523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1584:94:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"functionReturnParameters":10511,"id":10524,"nodeType":"Return","src":"1577:101:76"}]},"id":10526,"implemented":true,"kind":"function","modifiers":[],"name":"getPool","nodeType":"FunctionDefinition","parameters":{"id":10508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10503,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":10526,"src":"1487:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10502,"name":"address","nodeType":"ElementaryTypeName","src":"1487:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10505,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":10526,"src":"1503:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10504,"name":"address","nodeType":"ElementaryTypeName","src":"1503:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10507,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":10526,"src":"1519:10:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":10506,"name":"uint24","nodeType":"ElementaryTypeName","src":"1519:6:76","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"1486:44:76"},"returnParameters":{"id":10511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10510,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10526,"src":"1553:12:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":10509,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"1553:12:76","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"}],"src":"1552:14:76"},"scope":10932,"src":"1470:215:76","stateMutability":"view","virtual":false,"visibility":"private"},{"baseFunctions":[151],"body":{"id":10619,"nodeType":"Block","src":"1845:1080:76","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10538,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10529,"src":"1863:12:76","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1878:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1863:16:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10541,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10531,"src":"1883:12:76","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1898:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1883:16:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1863:36:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10537,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1855:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1855:45:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10546,"nodeType":"ExpressionStatement","src":"1855:45:76"},{"assignments":[10548,10550,10552],"declarations":[{"constant":false,"id":10548,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":10619,"src":"1974:15:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10547,"name":"address","nodeType":"ElementaryTypeName","src":"1974:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10550,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":10619,"src":"1991:16:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10549,"name":"address","nodeType":"ElementaryTypeName","src":"1991:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10552,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":10619,"src":"2009:10:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":10551,"name":"uint24","nodeType":"ElementaryTypeName","src":"2009:6:76","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":10556,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10553,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10533,"src":"2023:4:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decodeFirstPool","nodeType":"MemberAccess","referencedDeclaration":14238,"src":"2023:20:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$_t_address_$_t_uint24_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (address,address,uint24)"}},"id":10555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2023:22:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint24_$","typeString":"tuple(address,address,uint24)"}},"nodeType":"VariableDeclarationStatement","src":"1973:72:76"},{"expression":{"arguments":[{"id":10560,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8379,"src":"2089:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10561,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10548,"src":"2098:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10562,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10550,"src":"2107:8:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10563,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10552,"src":"2117:3:76","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":10557,"name":"CallbackValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12125,"src":"2055:18:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CallbackValidation_$12125_$","typeString":"type(library CallbackValidation)"}},"id":10559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"verifyCallback","nodeType":"MemberAccess","referencedDeclaration":12093,"src":"2055:33:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint24_$returns$_t_contract$_IAstraCLPool_$110_$","typeString":"function (address,address,address,uint24) view returns (contract IAstraCLPool)"}},"id":10564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2055:66:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":10565,"nodeType":"ExpressionStatement","src":"2055:66:76"},{"assignments":[10567,10569,10571],"declarations":[{"constant":false,"id":10567,"mutability":"mutable","name":"isExactInput","nodeType":"VariableDeclaration","scope":10619,"src":"2133:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10566,"name":"bool","nodeType":"ElementaryTypeName","src":"2133:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10569,"mutability":"mutable","name":"amountToPay","nodeType":"VariableDeclaration","scope":10619,"src":"2152:19:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10568,"name":"uint256","nodeType":"ElementaryTypeName","src":"2152:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10571,"mutability":"mutable","name":"amountReceived","nodeType":"VariableDeclaration","scope":10619,"src":"2173:22:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10570,"name":"uint256","nodeType":"ElementaryTypeName","src":"2173:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10602,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10572,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10529,"src":"2199:12:76","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2214:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2199:16:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10588,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10550,"src":"2313:8:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10589,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10548,"src":"2324:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2313:18:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":10593,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10531,"src":"2341:12:76","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":10592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2333:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10591,"name":"uint256","nodeType":"ElementaryTypeName","src":"2333:7:76","typeDescriptions":{}}},"id":10594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2333:21:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":10598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2364:13:76","subExpression":{"id":10597,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10529,"src":"2365:12:76","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":10596,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2356:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10595,"name":"uint256","nodeType":"ElementaryTypeName","src":"2356:7:76","typeDescriptions":{}}},"id":10599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2356:22:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10600,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2312:67:76","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$_t_uint256_$","typeString":"tuple(bool,uint256,uint256)"}},"id":10601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2199:180:76","trueExpression":{"components":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10575,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10548,"src":"2231:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10576,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10550,"src":"2241:8:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2231:18:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":10580,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10529,"src":"2259:12:76","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":10579,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2251:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10578,"name":"uint256","nodeType":"ElementaryTypeName","src":"2251:7:76","typeDescriptions":{}}},"id":10581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2251:21:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":10585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2282:13:76","subExpression":{"id":10584,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10531,"src":"2283:12:76","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":10583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2274:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10582,"name":"uint256","nodeType":"ElementaryTypeName","src":"2274:7:76","typeDescriptions":{}}},"id":10586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2274:22:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10587,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2230:67:76","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$_t_uint256_$","typeString":"tuple(bool,uint256,uint256)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$_t_uint256_$","typeString":"tuple(bool,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"2132:247:76"},{"condition":{"id":10603,"name":"isExactInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10567,"src":"2393:12:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10617,"nodeType":"Block","src":"2576:343:76","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10606,"name":"amountOutCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"2695:15:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":10607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2714:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2695:20:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10615,"nodeType":"IfStatement","src":"2691:68:76","trueBody":{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10610,"name":"amountReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10571,"src":"2725:14:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":10611,"name":"amountOutCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"2743:15:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2725:33:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10609,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2717:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":10613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2717:42:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10614,"nodeType":"ExpressionStatement","src":"2717:42:76"}},{"AST":{"nodeType":"YulBlock","src":"2782:127:76","statements":[{"nodeType":"YulVariableDeclaration","src":"2800:22:76","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2817:4:76","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2811:5:76"},"nodeType":"YulFunctionCall","src":"2811:11:76"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"2804:3:76","type":""}]},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2846:3:76"},{"name":"amountToPay","nodeType":"YulIdentifier","src":"2851:11:76"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2839:6:76"},"nodeType":"YulFunctionCall","src":"2839:24:76"},"nodeType":"YulExpressionStatement","src":"2839:24:76"},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2887:3:76"},{"kind":"number","nodeType":"YulLiteral","src":"2892:2:76","type":"","value":"32"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2880:6:76"},"nodeType":"YulFunctionCall","src":"2880:15:76"},"nodeType":"YulExpressionStatement","src":"2880:15:76"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":10569,"isOffset":false,"isSlot":false,"src":"2851:11:76","valueSize":1}],"id":10616,"nodeType":"InlineAssembly","src":"2773:136:76"}]},"id":10618,"nodeType":"IfStatement","src":"2389:530:76","trueBody":{"id":10605,"nodeType":"Block","src":"2407:163:76","statements":[{"AST":{"nodeType":"YulBlock","src":"2430:130:76","statements":[{"nodeType":"YulVariableDeclaration","src":"2448:22:76","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2465:4:76","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2459:5:76"},"nodeType":"YulFunctionCall","src":"2459:11:76"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"2452:3:76","type":""}]},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2494:3:76"},{"name":"amountReceived","nodeType":"YulIdentifier","src":"2499:14:76"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2487:6:76"},"nodeType":"YulFunctionCall","src":"2487:27:76"},"nodeType":"YulExpressionStatement","src":"2487:27:76"},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2538:3:76"},{"kind":"number","nodeType":"YulLiteral","src":"2543:2:76","type":"","value":"32"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2531:6:76"},"nodeType":"YulFunctionCall","src":"2531:15:76"},"nodeType":"YulExpressionStatement","src":"2531:15:76"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":10571,"isOffset":false,"isSlot":false,"src":"2499:14:76","valueSize":1}],"id":10604,"nodeType":"InlineAssembly","src":"2421:139:76"}]}}]},"documentation":{"id":10527,"nodeType":"StructuredDocumentation","src":"1691:36:76","text":"@inheritdoc IAstraCLSwapCallback"},"functionSelector":"11c17848","id":10620,"implemented":true,"kind":"function","modifiers":[],"name":"astraCLSwapCallback","nodeType":"FunctionDefinition","overrides":{"id":10535,"nodeType":"OverrideSpecifier","overrides":[],"src":"1836:8:76"},"parameters":{"id":10534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10529,"mutability":"mutable","name":"amount0Delta","nodeType":"VariableDeclaration","scope":10620,"src":"1761:19:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10528,"name":"int256","nodeType":"ElementaryTypeName","src":"1761:6:76","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":10531,"mutability":"mutable","name":"amount1Delta","nodeType":"VariableDeclaration","scope":10620,"src":"1782:19:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10530,"name":"int256","nodeType":"ElementaryTypeName","src":"1782:6:76","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":10533,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":10620,"src":"1803:17:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10532,"name":"bytes","nodeType":"ElementaryTypeName","src":"1803:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1760:61:76"},"returnParameters":{"id":10536,"nodeType":"ParameterList","parameters":[],"src":"1845:0:76"},"scope":10932,"src":"1732:1193:76","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10662,"nodeType":"Block","src":"3084:293:76","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10628,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10623,"src":"3098:6:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3098:13:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"3332","id":10630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3115:2:76","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"3098:19:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10653,"nodeType":"IfStatement","src":"3094:231:76","trueBody":{"id":10652,"nodeType":"Block","src":"3119:206:76","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10632,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10623,"src":"3137:6:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3137:13:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3638","id":10634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3153:2:76","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"68"},"src":"3137:18:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10640,"nodeType":"IfStatement","src":"3133:50:76","trueBody":{"expression":{"arguments":[{"hexValue":"556e6578706563746564206572726f72","id":10637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3164:18:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_9b951eb3fb3742579e39d15610bb1800acf108358e69a1cabf56fc48cbe86cff","typeString":"literal_string \"Unexpected error\""},"value":"Unexpected error"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9b951eb3fb3742579e39d15610bb1800acf108358e69a1cabf56fc48cbe86cff","typeString":"literal_string \"Unexpected error\""}],"id":10636,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3157:6:76","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":10638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3157:26:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10639,"nodeType":"ExpressionStatement","src":"3157:26:76"}},{"AST":{"nodeType":"YulBlock","src":"3206:59:76","statements":[{"nodeType":"YulAssignment","src":"3224:27:76","value":{"arguments":[{"name":"reason","nodeType":"YulIdentifier","src":"3238:6:76"},{"kind":"number","nodeType":"YulLiteral","src":"3246:4:76","type":"","value":"0x04"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3234:3:76"},"nodeType":"YulFunctionCall","src":"3234:17:76"},"variableNames":[{"name":"reason","nodeType":"YulIdentifier","src":"3224:6:76"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":10623,"isOffset":false,"isSlot":false,"src":"3224:6:76","valueSize":1},{"declaration":10623,"isOffset":false,"isSlot":false,"src":"3238:6:76","valueSize":1}],"id":10641,"nodeType":"InlineAssembly","src":"3197:68:76"},{"expression":{"arguments":[{"arguments":[{"id":10645,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10623,"src":"3296:6:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":10647,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3305:6:76","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":10646,"name":"string","nodeType":"ElementaryTypeName","src":"3305:6:76","typeDescriptions":{}}}],"id":10648,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3304:8:76","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":10643,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3285:3:76","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":10644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"3285:10:76","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":10649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3285:28:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":10642,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3278:6:76","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":10650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3278:36:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10651,"nodeType":"ExpressionStatement","src":"3278:36:76"}]}},{"expression":{"arguments":[{"id":10656,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10623,"src":"3352:6:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":10658,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3361:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10657,"name":"uint256","nodeType":"ElementaryTypeName","src":"3361:7:76","typeDescriptions":{}}}],"id":10659,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3360:9:76","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"expression":{"id":10654,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3341:3:76","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":10655,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"3341:10:76","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":10660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3341:29:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10627,"id":10661,"nodeType":"Return","src":"3334:36:76"}]},"documentation":{"id":10621,"nodeType":"StructuredDocumentation","src":"2931:69:76","text":"@dev Parses a revert reason that should contain the numeric quote"},"id":10663,"implemented":true,"kind":"function","modifiers":[],"name":"parseRevertReason","nodeType":"FunctionDefinition","parameters":{"id":10624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10623,"mutability":"mutable","name":"reason","nodeType":"VariableDeclaration","scope":10663,"src":"3032:19:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10622,"name":"bytes","nodeType":"ElementaryTypeName","src":"3032:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3031:21:76"},"returnParameters":{"id":10627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10626,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10663,"src":"3075:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10625,"name":"uint256","nodeType":"ElementaryTypeName","src":"3075:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3074:9:76"},"scope":10932,"src":"3005:372:76","stateMutability":"pure","virtual":false,"visibility":"private"},{"baseFunctions":[9859],"body":{"id":10735,"nodeType":"Block","src":"3624:605:76","statements":[{"assignments":[10681],"declarations":[{"constant":false,"id":10681,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":10735,"src":"3634:15:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10680,"name":"bool","nodeType":"ElementaryTypeName","src":"3634:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":10685,"initialValue":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10682,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10666,"src":"3652:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10683,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10668,"src":"3662:8:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3652:18:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3634:36:76"},{"clauses":[{"block":{"id":10723,"nodeType":"Block","src":"4135:2:76","statements":[]},"errorName":"","id":10724,"nodeType":"TryCatchClause","src":"4135:2:76"},{"block":{"id":10732,"nodeType":"Block","src":"4166:57:76","statements":[{"expression":{"arguments":[{"id":10729,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10726,"src":"4205:6:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10728,"name":"parseRevertReason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10663,"src":"4187:17:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (bytes memory) pure returns (uint256)"}},"id":10730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4187:25:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10679,"id":10731,"nodeType":"Return","src":"4180:32:76"}]},"errorName":"","id":10733,"nodeType":"TryCatchClause","parameters":{"id":10727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10726,"mutability":"mutable","name":"reason","nodeType":"VariableDeclaration","scope":10733,"src":"4145:19:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10725,"name":"bytes","nodeType":"ElementaryTypeName","src":"4145:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4144:21:76"},"src":"4138:85:76"}],"externalCall":{"arguments":[{"arguments":[{"id":10694,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3759:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_Quoter_$10932","typeString":"contract Quoter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Quoter_$10932","typeString":"contract Quoter"}],"id":10693,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3751:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10692,"name":"address","nodeType":"ElementaryTypeName","src":"3751:7:76","typeDescriptions":{}}},"id":10695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3751:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10696,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10681,"src":"3832:10:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10697,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10672,"src":"3860:8:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":1292,"src":"3860:17:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":10699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3860:19:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10700,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10674,"src":"3897:17:76","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3918:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3897:22:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":10714,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10674,"src":"4037:17:76","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":10715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3897:157:76","trueExpression":{"components":[{"condition":{"id":10703,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10681,"src":"3943:10:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10708,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"3986:8:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$2536_$","typeString":"type(library TickMath)"}},"id":10709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":2022,"src":"3986:23:76","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4012:1:76","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3986:27:76","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":10712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3943:70:76","trueExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10704,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"3956:8:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$2536_$","typeString":"type(library TickMath)"}},"id":10705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":2018,"src":"3956:23:76","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":10706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3982:1:76","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3956:27:76","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":10713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3942:72:76","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":10718,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10666,"src":"4089:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10719,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10670,"src":"4098:3:76","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"id":10720,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10668,"src":"4103:8:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10716,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4072:3:76","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":10717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"4072:16:76","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":10721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4072:40:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":10687,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10666,"src":"3705:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10688,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10668,"src":"3714:8:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10689,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10670,"src":"3724:3:76","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":10686,"name":"getPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10526,"src":"3697:7:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint24_$returns$_t_contract$_IAstraCLPool_$110_$","typeString":"function (address,address,uint24) view returns (contract IAstraCLPool)"}},"id":10690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3697:31:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":10691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":229,"src":"3697:36:76","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bool_$_t_int256_$_t_uint160_$_t_bytes_memory_ptr_$returns$_t_int256_$_t_int256_$","typeString":"function (address,bool,int256,uint160,bytes memory) external returns (int256,int256)"}},"id":10722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3697:429:76","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":10734,"nodeType":"TryStatement","src":"3681:542:76"}]},"documentation":{"id":10664,"nodeType":"StructuredDocumentation","src":"3383:23:76","text":"@inheritdoc IQuoter"},"functionSelector":"f7729d43","id":10736,"implemented":true,"kind":"function","modifiers":[],"name":"quoteExactInputSingle","nodeType":"FunctionDefinition","overrides":{"id":10676,"nodeType":"OverrideSpecifier","overrides":[],"src":"3587:8:76"},"parameters":{"id":10675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10666,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":10736,"src":"3451:15:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10665,"name":"address","nodeType":"ElementaryTypeName","src":"3451:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10668,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":10736,"src":"3476:16:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10667,"name":"address","nodeType":"ElementaryTypeName","src":"3476:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10670,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":10736,"src":"3502:10:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":10669,"name":"uint24","nodeType":"ElementaryTypeName","src":"3502:6:76","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":10672,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":10736,"src":"3522:16:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10671,"name":"uint256","nodeType":"ElementaryTypeName","src":"3522:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10674,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":10736,"src":"3548:25:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10673,"name":"uint160","nodeType":"ElementaryTypeName","src":"3548:7:76","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"3441:138:76"},"returnParameters":{"id":10679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10678,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":10736,"src":"3605:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10677,"name":"uint256","nodeType":"ElementaryTypeName","src":"3605:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3604:19:76"},"scope":10932,"src":"3411:818:76","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[9843],"body":{"id":10788,"nodeType":"Block","src":"4371:552:76","statements":[{"body":{"id":10786,"nodeType":"Block","src":"4394:523:76","statements":[{"assignments":[10749],"declarations":[{"constant":false,"id":10749,"mutability":"mutable","name":"hasMultiplePools","nodeType":"VariableDeclaration","scope":10786,"src":"4408:21:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10748,"name":"bool","nodeType":"ElementaryTypeName","src":"4408:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":10753,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10750,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10739,"src":"4432:4:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hasMultiplePools","nodeType":"MemberAccess","referencedDeclaration":14186,"src":"4432:21:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bool)"}},"id":10752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4432:23:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4408:47:76"},{"assignments":[10755,10757,10759],"declarations":[{"constant":false,"id":10755,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":10786,"src":"4471:15:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10754,"name":"address","nodeType":"ElementaryTypeName","src":"4471:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10757,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":10786,"src":"4488:16:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10756,"name":"address","nodeType":"ElementaryTypeName","src":"4488:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10759,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":10786,"src":"4506:10:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":10758,"name":"uint24","nodeType":"ElementaryTypeName","src":"4506:6:76","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":10763,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10760,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10739,"src":"4520:4:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decodeFirstPool","nodeType":"MemberAccess","referencedDeclaration":14238,"src":"4520:20:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$_t_address_$_t_uint24_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (address,address,uint24)"}},"id":10762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4520:22:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint24_$","typeString":"tuple(address,address,uint24)"}},"nodeType":"VariableDeclarationStatement","src":"4470:72:76"},{"expression":{"id":10772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10764,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10741,"src":"4636:8:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10766,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10755,"src":"4669:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10767,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10757,"src":"4678:8:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10768,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10759,"src":"4688:3:76","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"id":10769,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10741,"src":"4693:8:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":10770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4703:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10765,"name":"quoteExactInputSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10736,"src":"4647:21:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint24_$_t_uint256_$_t_uint160_$returns$_t_uint256_$","typeString":"function (address,address,uint24,uint256,uint160) returns (uint256)"}},"id":10771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4647:58:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4636:69:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10773,"nodeType":"ExpressionStatement","src":"4636:69:76"},{"condition":{"id":10774,"name":"hasMultiplePools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10749,"src":"4779:16:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10784,"nodeType":"Block","src":"4859:48:76","statements":[{"expression":{"id":10782,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10741,"src":"4884:8:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10746,"id":10783,"nodeType":"Return","src":"4877:15:76"}]},"id":10785,"nodeType":"IfStatement","src":"4775:132:76","trueBody":{"id":10781,"nodeType":"Block","src":"4797:56:76","statements":[{"expression":{"id":10779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10775,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10739,"src":"4815:4:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10776,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10739,"src":"4822:4:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"skipToken","nodeType":"MemberAccess","referencedDeclaration":14271,"src":"4822:14:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":10778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4822:16:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"4815:23:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10780,"nodeType":"ExpressionStatement","src":"4815:23:76"}]}}]},"condition":{"hexValue":"74727565","id":10747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4388:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":10787,"nodeType":"WhileStatement","src":"4381:536:76"}]},"documentation":{"id":10737,"nodeType":"StructuredDocumentation","src":"4235:23:76","text":"@inheritdoc IQuoter"},"functionSelector":"cdca1753","id":10789,"implemented":true,"kind":"function","modifiers":[],"name":"quoteExactInput","nodeType":"FunctionDefinition","overrides":{"id":10743,"nodeType":"OverrideSpecifier","overrides":[],"src":"4334:8:76"},"parameters":{"id":10742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10739,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":10789,"src":"4288:17:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10738,"name":"bytes","nodeType":"ElementaryTypeName","src":"4288:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":10741,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":10789,"src":"4307:16:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10740,"name":"uint256","nodeType":"ElementaryTypeName","src":"4307:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4287:37:76"},"returnParameters":{"id":10746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10745,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":10789,"src":"4352:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10744,"name":"uint256","nodeType":"ElementaryTypeName","src":"4352:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4351:19:76"},"scope":10932,"src":"4263:660:76","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[9885],"body":{"id":10877,"nodeType":"Block","src":"5171:860:76","statements":[{"assignments":[10807],"declarations":[{"constant":false,"id":10807,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":10877,"src":"5181:15:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10806,"name":"bool","nodeType":"ElementaryTypeName","src":"5181:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":10811,"initialValue":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10808,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10792,"src":"5199:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10809,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10794,"src":"5209:8:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5199:18:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"5181:36:76"},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10812,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10800,"src":"5341:17:76","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5362:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5341:22:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10819,"nodeType":"IfStatement","src":"5337:55:76","trueBody":{"expression":{"id":10817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10815,"name":"amountOutCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"5365:15:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10816,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10798,"src":"5383:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5365:27:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10818,"nodeType":"ExpressionStatement","src":"5365:27:76"}},{"clauses":[{"block":{"id":10858,"nodeType":"Block","src":"5858:2:76","statements":[]},"errorName":"","id":10859,"nodeType":"TryCatchClause","src":"5858:2:76"},{"block":{"id":10874,"nodeType":"Block","src":"5889:136:76","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10863,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10800,"src":"5907:17:76","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5928:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5907:22:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10869,"nodeType":"IfStatement","src":"5903:50:76","trueBody":{"expression":{"id":10867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5931:22:76","subExpression":{"id":10866,"name":"amountOutCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"5938:15:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10868,"nodeType":"ExpressionStatement","src":"5931:22:76"}},{"expression":{"arguments":[{"id":10871,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10861,"src":"6007:6:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10870,"name":"parseRevertReason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10663,"src":"5989:17:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (bytes memory) pure returns (uint256)"}},"id":10872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5989:25:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10805,"id":10873,"nodeType":"Return","src":"5982:32:76"}]},"errorName":"","id":10875,"nodeType":"TryCatchClause","parameters":{"id":10862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10861,"mutability":"mutable","name":"reason","nodeType":"VariableDeclaration","scope":10875,"src":"5868:19:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10860,"name":"bytes","nodeType":"ElementaryTypeName","src":"5868:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5867:21:76"},"src":"5861:164:76"}],"externalCall":{"arguments":[{"arguments":[{"id":10828,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5480:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_Quoter_$10932","typeString":"contract Quoter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Quoter_$10932","typeString":"contract Quoter"}],"id":10827,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5472:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10826,"name":"address","nodeType":"ElementaryTypeName","src":"5472:7:76","typeDescriptions":{}}},"id":10829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5472:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10830,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10807,"src":"5553:10:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":10834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"5581:21:76","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10831,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10798,"src":"5582:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":1292,"src":"5582:18:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":10833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5582:20:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10835,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10800,"src":"5620:17:76","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5641:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5620:22:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":10849,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10800,"src":"5760:17:76","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":10850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5620:157:76","trueExpression":{"components":[{"condition":{"id":10838,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10807,"src":"5666:10:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10843,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"5709:8:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$2536_$","typeString":"type(library TickMath)"}},"id":10844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":2022,"src":"5709:23:76","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5735:1:76","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5709:27:76","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":10847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5666:70:76","trueExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":10842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10839,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"5679:8:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$2536_$","typeString":"type(library TickMath)"}},"id":10840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":2018,"src":"5679:23:76","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":10841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5705:1:76","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5679:27:76","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":10848,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5665:72:76","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":10853,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10794,"src":"5812:8:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10854,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10796,"src":"5822:3:76","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"id":10855,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10792,"src":"5827:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10851,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5795:3:76","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":10852,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"5795:16:76","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":10856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5795:40:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":10821,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10792,"src":"5426:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10822,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10794,"src":"5435:8:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10823,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10796,"src":"5445:3:76","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":10820,"name":"getPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10526,"src":"5418:7:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint24_$returns$_t_contract$_IAstraCLPool_$110_$","typeString":"function (address,address,uint24) view returns (contract IAstraCLPool)"}},"id":10824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5418:31:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":10825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":229,"src":"5418:36:76","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bool_$_t_int256_$_t_uint160_$_t_bytes_memory_ptr_$returns$_t_int256_$_t_int256_$","typeString":"function (address,bool,int256,uint160,bytes memory) external returns (int256,int256)"}},"id":10857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5418:431:76","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":10876,"nodeType":"TryStatement","src":"5402:623:76"}]},"documentation":{"id":10790,"nodeType":"StructuredDocumentation","src":"4929:23:76","text":"@inheritdoc IQuoter"},"functionSelector":"30d07f21","id":10878,"implemented":true,"kind":"function","modifiers":[],"name":"quoteExactOutputSingle","nodeType":"FunctionDefinition","overrides":{"id":10802,"nodeType":"OverrideSpecifier","overrides":[],"src":"5135:8:76"},"parameters":{"id":10801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10792,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":10878,"src":"4998:15:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10791,"name":"address","nodeType":"ElementaryTypeName","src":"4998:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10794,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":10878,"src":"5023:16:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10793,"name":"address","nodeType":"ElementaryTypeName","src":"5023:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10796,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":10878,"src":"5049:10:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":10795,"name":"uint24","nodeType":"ElementaryTypeName","src":"5049:6:76","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":10798,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":10878,"src":"5069:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10797,"name":"uint256","nodeType":"ElementaryTypeName","src":"5069:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10800,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":10878,"src":"5096:25:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10799,"name":"uint160","nodeType":"ElementaryTypeName","src":"5096:7:76","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"4988:139:76"},"returnParameters":{"id":10805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10804,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":10878,"src":"5153:16:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10803,"name":"uint256","nodeType":"ElementaryTypeName","src":"5153:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5152:18:76"},"scope":10932,"src":"4957:1074:76","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[9869],"body":{"id":10930,"nodeType":"Block","src":"6174:556:76","statements":[{"body":{"id":10928,"nodeType":"Block","src":"6197:527:76","statements":[{"assignments":[10891],"declarations":[{"constant":false,"id":10891,"mutability":"mutable","name":"hasMultiplePools","nodeType":"VariableDeclaration","scope":10928,"src":"6211:21:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10890,"name":"bool","nodeType":"ElementaryTypeName","src":"6211:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":10895,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10892,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10881,"src":"6235:4:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hasMultiplePools","nodeType":"MemberAccess","referencedDeclaration":14186,"src":"6235:21:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bool)"}},"id":10894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6235:23:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"6211:47:76"},{"assignments":[10897,10899,10901],"declarations":[{"constant":false,"id":10897,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":10928,"src":"6274:16:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10896,"name":"address","nodeType":"ElementaryTypeName","src":"6274:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10899,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":10928,"src":"6292:15:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10898,"name":"address","nodeType":"ElementaryTypeName","src":"6292:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10901,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":10928,"src":"6309:10:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":10900,"name":"uint24","nodeType":"ElementaryTypeName","src":"6309:6:76","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":10905,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10902,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10881,"src":"6323:4:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decodeFirstPool","nodeType":"MemberAccess","referencedDeclaration":14238,"src":"6323:20:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$_t_address_$_t_uint24_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (address,address,uint24)"}},"id":10904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6323:22:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint24_$","typeString":"tuple(address,address,uint24)"}},"nodeType":"VariableDeclarationStatement","src":"6273:72:76"},{"expression":{"id":10914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10906,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10883,"src":"6439:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10908,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10899,"src":"6474:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10909,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10897,"src":"6483:8:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10910,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10901,"src":"6493:3:76","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"id":10911,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10883,"src":"6498:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":10912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6509:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10907,"name":"quoteExactOutputSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10878,"src":"6451:22:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint24_$_t_uint256_$_t_uint160_$returns$_t_uint256_$","typeString":"function (address,address,uint24,uint256,uint160) returns (uint256)"}},"id":10913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6451:60:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6439:72:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10915,"nodeType":"ExpressionStatement","src":"6439:72:76"},{"condition":{"id":10916,"name":"hasMultiplePools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10891,"src":"6585:16:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10926,"nodeType":"Block","src":"6665:49:76","statements":[{"expression":{"id":10924,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10883,"src":"6690:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10888,"id":10925,"nodeType":"Return","src":"6683:16:76"}]},"id":10927,"nodeType":"IfStatement","src":"6581:133:76","trueBody":{"id":10923,"nodeType":"Block","src":"6603:56:76","statements":[{"expression":{"id":10921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10917,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10881,"src":"6621:4:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10918,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10881,"src":"6628:4:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"skipToken","nodeType":"MemberAccess","referencedDeclaration":14271,"src":"6628:14:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":10920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6628:16:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"6621:23:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10922,"nodeType":"ExpressionStatement","src":"6621:23:76"}]}}]},"condition":{"hexValue":"74727565","id":10889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6191:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":10929,"nodeType":"WhileStatement","src":"6184:540:76"}]},"documentation":{"id":10879,"nodeType":"StructuredDocumentation","src":"6037:23:76","text":"@inheritdoc IQuoter"},"functionSelector":"2f80bb1d","id":10931,"implemented":true,"kind":"function","modifiers":[],"name":"quoteExactOutput","nodeType":"FunctionDefinition","overrides":{"id":10885,"nodeType":"OverrideSpecifier","overrides":[],"src":"6138:8:76"},"parameters":{"id":10884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10881,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":10931,"src":"6091:17:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10880,"name":"bytes","nodeType":"ElementaryTypeName","src":"6091:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":10883,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":10931,"src":"6110:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10882,"name":"uint256","nodeType":"ElementaryTypeName","src":"6110:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6090:38:76"},"returnParameters":{"id":10888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10887,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":10931,"src":"6156:16:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10886,"name":"uint256","nodeType":"ElementaryTypeName","src":"6156:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6155:18:76"},"scope":10932,"src":"6065:665:76","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":10933,"src":"1103:5629:76"}],"src":"45:6688:76"},"id":76},"contracts/lens/QuoterV2.sol":{"ast":{"absolutePath":"contracts/lens/QuoterV2.sol","exportedSymbols":{"BitMath":[851],"BytesLib":[12063],"CallbackValidation":[12125],"IAstraCLPool":[110],"IAstraCLPoolActions":[248],"IAstraCLPoolDerivedState":[279],"IAstraCLPoolEvents":[398],"IAstraCLPoolImmutables":[438],"IAstraCLPoolOwnerActions":[464],"IAstraCLPoolState":[572],"IAstraCLSwapCallback":[152],"IPeripheryImmutableState":[9751],"IQuoterV2":[9977],"Path":[14272],"PeripheryImmutableState":[8400],"PoolAddress":[14364],"PoolTicksCounter":[14672],"QuoterV2":[11665],"SafeCast":[1293],"TickBitmap":[2001],"TickMath":[2536]},"id":11666,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10934,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:77"},{"id":10935,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"69:19:77"},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol","file":"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol","id":10936,"nodeType":"ImportDirective","scope":11666,"sourceUnit":1294,"src":"143:64:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/TickMath.sol","file":"@airdao/astra-cl-core/contracts/libraries/TickMath.sol","id":10937,"nodeType":"ImportDirective","scope":11666,"sourceUnit":2537,"src":"261:64:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/TickBitmap.sol","file":"@airdao/astra-cl-core/contracts/libraries/TickBitmap.sol","id":10938,"nodeType":"ImportDirective","scope":11666,"sourceUnit":2002,"src":"379:66:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","file":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","id":10939,"nodeType":"ImportDirective","scope":11666,"sourceUnit":111,"src":"499:69:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol","file":"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol","id":10940,"nodeType":"ImportDirective","scope":11666,"sourceUnit":153,"src":"622:86:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IQuoterV2.sol","file":"../interfaces/IQuoterV2.sol","id":10941,"nodeType":"ImportDirective","scope":11666,"sourceUnit":9978,"src":"710:37:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/base/PeripheryImmutableState.sol","file":"../base/PeripheryImmutableState.sol","id":10942,"nodeType":"ImportDirective","scope":11666,"sourceUnit":8401,"src":"748:45:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/Path.sol","file":"../libraries/Path.sol","id":10943,"nodeType":"ImportDirective","scope":11666,"sourceUnit":14273,"src":"794:31:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/PoolAddress.sol","file":"../libraries/PoolAddress.sol","id":10944,"nodeType":"ImportDirective","scope":11666,"sourceUnit":14365,"src":"826:38:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/CallbackValidation.sol","file":"../libraries/CallbackValidation.sol","id":10945,"nodeType":"ImportDirective","scope":11666,"sourceUnit":12126,"src":"865:45:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/PoolTicksCounter.sol","file":"../libraries/PoolTicksCounter.sol","id":10946,"nodeType":"ImportDirective","scope":11666,"sourceUnit":14673,"src":"911:43:77","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10948,"name":"IQuoterV2","nodeType":"UserDefinedTypeName","referencedDeclaration":9977,"src":"1290:9:77","typeDescriptions":{"typeIdentifier":"t_contract$_IQuoterV2_$9977","typeString":"contract IQuoterV2"}},"id":10949,"nodeType":"InheritanceSpecifier","src":"1290:9:77"},{"baseName":{"id":10950,"name":"IAstraCLSwapCallback","nodeType":"UserDefinedTypeName","referencedDeclaration":152,"src":"1301:20:77","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLSwapCallback_$152","typeString":"contract IAstraCLSwapCallback"}},"id":10951,"nodeType":"InheritanceSpecifier","src":"1301:20:77"},{"baseName":{"id":10952,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":8400,"src":"1323:23:77","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$8400","typeString":"contract PeripheryImmutableState"}},"id":10953,"nodeType":"InheritanceSpecifier","src":"1323:23:77"}],"contractDependencies":[152,8400,9751,9977],"contractKind":"contract","documentation":{"id":10947,"nodeType":"StructuredDocumentation","src":"956:313:77","text":"@title Provides quotes for swaps\n @notice Allows getting the expected amount out or amount in for a given swap without executing the swap\n @dev These functions are not gas efficient and should _not_ be called on chain. Instead, optimistically execute\n the swap and check the amounts in the callback."},"fullyImplemented":true,"id":11665,"linearizedBaseContracts":[11665,8400,9751,152,9977],"name":"QuoterV2","nodeType":"ContractDefinition","nodes":[{"id":10956,"libraryName":{"id":10954,"name":"Path","nodeType":"UserDefinedTypeName","referencedDeclaration":14272,"src":"1359:4:77","typeDescriptions":{"typeIdentifier":"t_contract$_Path_$14272","typeString":"library Path"}},"nodeType":"UsingForDirective","src":"1353:21:77","typeName":{"id":10955,"name":"bytes","nodeType":"ElementaryTypeName","src":"1368:5:77","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"id":10959,"libraryName":{"id":10957,"name":"SafeCast","nodeType":"UserDefinedTypeName","referencedDeclaration":1293,"src":"1385:8:77","typeDescriptions":{"typeIdentifier":"t_contract$_SafeCast_$1293","typeString":"library SafeCast"}},"nodeType":"UsingForDirective","src":"1379:27:77","typeName":{"id":10958,"name":"uint256","nodeType":"ElementaryTypeName","src":"1398:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":10962,"libraryName":{"id":10960,"name":"PoolTicksCounter","nodeType":"UserDefinedTypeName","referencedDeclaration":14672,"src":"1417:16:77","typeDescriptions":{"typeIdentifier":"t_contract$_PoolTicksCounter_$14672","typeString":"library PoolTicksCounter"}},"nodeType":"UsingForDirective","src":"1411:40:77","typeName":{"id":10961,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"1438:12:77","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}}},{"constant":false,"documentation":{"id":10963,"nodeType":"StructuredDocumentation","src":"1457:91:77","text":"@dev Transient storage variable used to check a safety condition in exact output swaps."},"id":10965,"mutability":"mutable","name":"amountOutCached","nodeType":"VariableDeclaration","scope":11665,"src":"1553:31:77","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10964,"name":"uint256","nodeType":"ElementaryTypeName","src":"1553:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":10976,"nodeType":"Block","src":"1677:2:77","statements":[]},"id":10977,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":10972,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10967,"src":"1660:8:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10973,"name":"_SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10969,"src":"1670:5:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":10974,"modifierName":{"id":10971,"name":"PeripheryImmutableState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8400,"src":"1636:23:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PeripheryImmutableState_$8400_$","typeString":"type(contract PeripheryImmutableState)"}},"nodeType":"ModifierInvocation","src":"1636:40:77"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":10970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10967,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":10977,"src":"1603:16:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10966,"name":"address","nodeType":"ElementaryTypeName","src":"1603:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10969,"mutability":"mutable","name":"_SAMB","nodeType":"VariableDeclaration","scope":10977,"src":"1621:13:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10968,"name":"address","nodeType":"ElementaryTypeName","src":"1621:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1602:33:77"},"returnParameters":{"id":10975,"nodeType":"ParameterList","parameters":[],"src":"1677:0:77"},"scope":11665,"src":"1591:88:77","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":11001,"nodeType":"Block","src":"1782:118:77","statements":[{"expression":{"arguments":[{"arguments":[{"id":10991,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8379,"src":"1839:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":10994,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10979,"src":"1871:6:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10995,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10981,"src":"1879:6:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10996,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10983,"src":"1887:3:77","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":10992,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14364,"src":"1848:11:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$14364_$","typeString":"type(library PoolAddress)"}},"id":10993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPoolKey","nodeType":"MemberAccess","referencedDeclaration":14316,"src":"1848:22:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_uint24_$returns$_t_struct$_PoolKey_$14285_memory_ptr_$","typeString":"function (address,address,uint24) pure returns (struct PoolAddress.PoolKey memory)"}},"id":10997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1848:43:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":10989,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14364,"src":"1812:11:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$14364_$","typeString":"type(library PoolAddress)"}},"id":10990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":14363,"src":"1812:26:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$14285_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":10998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1812:80:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10988,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"1799:12:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":10999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1799:94:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"functionReturnParameters":10987,"id":11000,"nodeType":"Return","src":"1792:101:77"}]},"id":11002,"implemented":true,"kind":"function","modifiers":[],"name":"getPool","nodeType":"FunctionDefinition","parameters":{"id":10984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10979,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":11002,"src":"1702:14:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10978,"name":"address","nodeType":"ElementaryTypeName","src":"1702:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10981,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":11002,"src":"1718:14:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10980,"name":"address","nodeType":"ElementaryTypeName","src":"1718:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10983,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":11002,"src":"1734:10:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":10982,"name":"uint24","nodeType":"ElementaryTypeName","src":"1734:6:77","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"1701:44:77"},"returnParameters":{"id":10987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10986,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11002,"src":"1768:12:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":10985,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"1768:12:77","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"}],"src":"1767:14:77"},"scope":11665,"src":"1685:215:77","stateMutability":"view","virtual":false,"visibility":"private"},{"baseFunctions":[151],"body":{"id":11111,"nodeType":"Block","src":"2060:1438:77","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11014,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11005,"src":"2078:12:77","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2093:1:77","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2078:16:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11017,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11007,"src":"2098:12:77","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2113:1:77","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2098:16:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2078:36:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11013,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2070:7:77","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":11021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2070:45:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11022,"nodeType":"ExpressionStatement","src":"2070:45:77"},{"assignments":[11024,11026,11028],"declarations":[{"constant":false,"id":11024,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":11111,"src":"2189:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11023,"name":"address","nodeType":"ElementaryTypeName","src":"2189:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11026,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":11111,"src":"2206:16:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11025,"name":"address","nodeType":"ElementaryTypeName","src":"2206:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11028,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":11111,"src":"2224:10:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":11027,"name":"uint24","nodeType":"ElementaryTypeName","src":"2224:6:77","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":11032,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11029,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11009,"src":"2238:4:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decodeFirstPool","nodeType":"MemberAccess","referencedDeclaration":14238,"src":"2238:20:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$_t_address_$_t_uint24_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (address,address,uint24)"}},"id":11031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2238:22:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint24_$","typeString":"tuple(address,address,uint24)"}},"nodeType":"VariableDeclarationStatement","src":"2188:72:77"},{"expression":{"arguments":[{"id":11036,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8379,"src":"2304:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11037,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11024,"src":"2313:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11038,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11026,"src":"2322:8:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11039,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11028,"src":"2332:3:77","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":11033,"name":"CallbackValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12125,"src":"2270:18:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CallbackValidation_$12125_$","typeString":"type(library CallbackValidation)"}},"id":11035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"verifyCallback","nodeType":"MemberAccess","referencedDeclaration":12093,"src":"2270:33:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint24_$returns$_t_contract$_IAstraCLPool_$110_$","typeString":"function (address,address,address,uint24) view returns (contract IAstraCLPool)"}},"id":11040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2270:66:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":11041,"nodeType":"ExpressionStatement","src":"2270:66:77"},{"assignments":[11043,11045,11047],"declarations":[{"constant":false,"id":11043,"mutability":"mutable","name":"isExactInput","nodeType":"VariableDeclaration","scope":11111,"src":"2348:17:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11042,"name":"bool","nodeType":"ElementaryTypeName","src":"2348:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11045,"mutability":"mutable","name":"amountToPay","nodeType":"VariableDeclaration","scope":11111,"src":"2367:19:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11044,"name":"uint256","nodeType":"ElementaryTypeName","src":"2367:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11047,"mutability":"mutable","name":"amountReceived","nodeType":"VariableDeclaration","scope":11111,"src":"2388:22:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11046,"name":"uint256","nodeType":"ElementaryTypeName","src":"2388:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11078,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11048,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11005,"src":"2414:12:77","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2429:1:77","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2414:16:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11064,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11026,"src":"2528:8:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11065,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11024,"src":"2539:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2528:18:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":11069,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11007,"src":"2556:12:77","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11068,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2548:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11067,"name":"uint256","nodeType":"ElementaryTypeName","src":"2548:7:77","typeDescriptions":{}}},"id":11070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2548:21:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":11074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2579:13:77","subExpression":{"id":11073,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11005,"src":"2580:12:77","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2571:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11071,"name":"uint256","nodeType":"ElementaryTypeName","src":"2571:7:77","typeDescriptions":{}}},"id":11075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2571:22:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11076,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2527:67:77","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$_t_uint256_$","typeString":"tuple(bool,uint256,uint256)"}},"id":11077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2414:180:77","trueExpression":{"components":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11051,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11024,"src":"2446:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11052,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11026,"src":"2456:8:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2446:18:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":11056,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11005,"src":"2474:12:77","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2466:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11054,"name":"uint256","nodeType":"ElementaryTypeName","src":"2466:7:77","typeDescriptions":{}}},"id":11057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2466:21:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":11061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2497:13:77","subExpression":{"id":11060,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11007,"src":"2498:12:77","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11059,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2489:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11058,"name":"uint256","nodeType":"ElementaryTypeName","src":"2489:7:77","typeDescriptions":{}}},"id":11062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2489:22:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11063,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2445:67:77","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$_t_uint256_$","typeString":"tuple(bool,uint256,uint256)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$_t_uint256_$","typeString":"tuple(bool,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"2347:247:77"},{"assignments":[11080],"declarations":[{"constant":false,"id":11080,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":11111,"src":"2605:17:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":11079,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"2605:12:77","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"}],"id":11086,"initialValue":{"arguments":[{"id":11082,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11024,"src":"2633:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11083,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11026,"src":"2642:8:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11084,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11028,"src":"2652:3:77","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":11081,"name":"getPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11002,"src":"2625:7:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint24_$returns$_t_contract$_IAstraCLPool_$110_$","typeString":"function (address,address,uint24) view returns (contract IAstraCLPool)"}},"id":11085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2625:31:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"nodeType":"VariableDeclarationStatement","src":"2605:51:77"},{"assignments":[11088,11090,null,null,null,null,null],"declarations":[{"constant":false,"id":11088,"mutability":"mutable","name":"sqrtPriceX96After","nodeType":"VariableDeclaration","scope":11111,"src":"2667:25:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11087,"name":"uint160","nodeType":"ElementaryTypeName","src":"2667:7:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":11090,"mutability":"mutable","name":"tickAfter","nodeType":"VariableDeclaration","scope":11111,"src":"2694:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":11089,"name":"int24","nodeType":"ElementaryTypeName","src":"2694:5:77","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},null,null,null,null,null],"id":11094,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11091,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11080,"src":"2723:4:77","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":11092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":485,"src":"2723:10:77","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$","typeString":"function () view external returns (uint160,int24,uint16,uint16,uint16,uint8,bool)"}},"id":11093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2723:12:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$","typeString":"tuple(uint160,int24,uint16,uint16,uint16,uint8,bool)"}},"nodeType":"VariableDeclarationStatement","src":"2666:69:77"},{"condition":{"id":11095,"name":"isExactInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11043,"src":"2750:12:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11109,"nodeType":"Block","src":"3041:451:77","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11098,"name":"amountOutCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10965,"src":"3160:15:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":11099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3179:1:77","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3160:20:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11107,"nodeType":"IfStatement","src":"3156:68:77","trueBody":{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11102,"name":"amountReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11047,"src":"3190:14:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":11103,"name":"amountOutCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10965,"src":"3208:15:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3190:33:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11101,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3182:7:77","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":11105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3182:42:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11106,"nodeType":"ExpressionStatement","src":"3182:42:77"}},{"AST":{"nodeType":"YulBlock","src":"3247:235:77","statements":[{"nodeType":"YulVariableDeclaration","src":"3265:22:77","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3282:4:77","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3276:5:77"},"nodeType":"YulFunctionCall","src":"3276:11:77"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"3269:3:77","type":""}]},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3311:3:77"},{"name":"amountToPay","nodeType":"YulIdentifier","src":"3316:11:77"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3304:6:77"},"nodeType":"YulFunctionCall","src":"3304:24:77"},"nodeType":"YulExpressionStatement","src":"3304:24:77"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3356:3:77"},{"kind":"number","nodeType":"YulLiteral","src":"3361:4:77","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3352:3:77"},"nodeType":"YulFunctionCall","src":"3352:14:77"},{"name":"sqrtPriceX96After","nodeType":"YulIdentifier","src":"3368:17:77"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3345:6:77"},"nodeType":"YulFunctionCall","src":"3345:41:77"},"nodeType":"YulExpressionStatement","src":"3345:41:77"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3414:3:77"},{"kind":"number","nodeType":"YulLiteral","src":"3419:4:77","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3410:3:77"},"nodeType":"YulFunctionCall","src":"3410:14:77"},{"name":"tickAfter","nodeType":"YulIdentifier","src":"3426:9:77"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3403:6:77"},"nodeType":"YulFunctionCall","src":"3403:33:77"},"nodeType":"YulExpressionStatement","src":"3403:33:77"},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3460:3:77"},{"kind":"number","nodeType":"YulLiteral","src":"3465:2:77","type":"","value":"96"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3453:6:77"},"nodeType":"YulFunctionCall","src":"3453:15:77"},"nodeType":"YulExpressionStatement","src":"3453:15:77"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":11045,"isOffset":false,"isSlot":false,"src":"3316:11:77","valueSize":1},{"declaration":11088,"isOffset":false,"isSlot":false,"src":"3368:17:77","valueSize":1},{"declaration":11090,"isOffset":false,"isSlot":false,"src":"3426:9:77","valueSize":1}],"id":11108,"nodeType":"InlineAssembly","src":"3238:244:77"}]},"id":11110,"nodeType":"IfStatement","src":"2746:746:77","trueBody":{"id":11097,"nodeType":"Block","src":"2764:271:77","statements":[{"AST":{"nodeType":"YulBlock","src":"2787:238:77","statements":[{"nodeType":"YulVariableDeclaration","src":"2805:22:77","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2822:4:77","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2816:5:77"},"nodeType":"YulFunctionCall","src":"2816:11:77"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"2809:3:77","type":""}]},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2851:3:77"},{"name":"amountReceived","nodeType":"YulIdentifier","src":"2856:14:77"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2844:6:77"},"nodeType":"YulFunctionCall","src":"2844:27:77"},"nodeType":"YulExpressionStatement","src":"2844:27:77"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2899:3:77"},{"kind":"number","nodeType":"YulLiteral","src":"2904:4:77","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2895:3:77"},"nodeType":"YulFunctionCall","src":"2895:14:77"},{"name":"sqrtPriceX96After","nodeType":"YulIdentifier","src":"2911:17:77"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2888:6:77"},"nodeType":"YulFunctionCall","src":"2888:41:77"},"nodeType":"YulExpressionStatement","src":"2888:41:77"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2957:3:77"},{"kind":"number","nodeType":"YulLiteral","src":"2962:4:77","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2953:3:77"},"nodeType":"YulFunctionCall","src":"2953:14:77"},{"name":"tickAfter","nodeType":"YulIdentifier","src":"2969:9:77"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2946:6:77"},"nodeType":"YulFunctionCall","src":"2946:33:77"},"nodeType":"YulExpressionStatement","src":"2946:33:77"},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3003:3:77"},{"kind":"number","nodeType":"YulLiteral","src":"3008:2:77","type":"","value":"96"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2996:6:77"},"nodeType":"YulFunctionCall","src":"2996:15:77"},"nodeType":"YulExpressionStatement","src":"2996:15:77"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":11047,"isOffset":false,"isSlot":false,"src":"2856:14:77","valueSize":1},{"declaration":11088,"isOffset":false,"isSlot":false,"src":"2911:17:77","valueSize":1},{"declaration":11090,"isOffset":false,"isSlot":false,"src":"2969:9:77","valueSize":1}],"id":11096,"nodeType":"InlineAssembly","src":"2778:247:77"}]}}]},"documentation":{"id":11003,"nodeType":"StructuredDocumentation","src":"1906:36:77","text":"@inheritdoc IAstraCLSwapCallback"},"functionSelector":"11c17848","id":11112,"implemented":true,"kind":"function","modifiers":[],"name":"astraCLSwapCallback","nodeType":"FunctionDefinition","overrides":{"id":11011,"nodeType":"OverrideSpecifier","overrides":[],"src":"2051:8:77"},"parameters":{"id":11010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11005,"mutability":"mutable","name":"amount0Delta","nodeType":"VariableDeclaration","scope":11112,"src":"1976:19:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11004,"name":"int256","nodeType":"ElementaryTypeName","src":"1976:6:77","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":11007,"mutability":"mutable","name":"amount1Delta","nodeType":"VariableDeclaration","scope":11112,"src":"1997:19:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11006,"name":"int256","nodeType":"ElementaryTypeName","src":"1997:6:77","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":11009,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":11112,"src":"2018:17:77","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11008,"name":"bytes","nodeType":"ElementaryTypeName","src":"2018:5:77","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1975:61:77"},"returnParameters":{"id":11012,"nodeType":"ParameterList","parameters":[],"src":"2060:0:77"},"scope":11665,"src":"1947:1551:77","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":11162,"nodeType":"Block","src":"3722:309:77","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11124,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11115,"src":"3736:6:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3736:13:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"3936","id":11126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3753:2:77","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"3736:19:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11149,"nodeType":"IfStatement","src":"3732:231:77","trueBody":{"id":11148,"nodeType":"Block","src":"3757:206:77","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11128,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11115,"src":"3775:6:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3775:13:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3638","id":11130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3791:2:77","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"68"},"src":"3775:18:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11136,"nodeType":"IfStatement","src":"3771:50:77","trueBody":{"expression":{"arguments":[{"hexValue":"556e6578706563746564206572726f72","id":11133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3802:18:77","typeDescriptions":{"typeIdentifier":"t_stringliteral_9b951eb3fb3742579e39d15610bb1800acf108358e69a1cabf56fc48cbe86cff","typeString":"literal_string \"Unexpected error\""},"value":"Unexpected error"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9b951eb3fb3742579e39d15610bb1800acf108358e69a1cabf56fc48cbe86cff","typeString":"literal_string \"Unexpected error\""}],"id":11132,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3795:6:77","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":11134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3795:26:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11135,"nodeType":"ExpressionStatement","src":"3795:26:77"}},{"AST":{"nodeType":"YulBlock","src":"3844:59:77","statements":[{"nodeType":"YulAssignment","src":"3862:27:77","value":{"arguments":[{"name":"reason","nodeType":"YulIdentifier","src":"3876:6:77"},{"kind":"number","nodeType":"YulLiteral","src":"3884:4:77","type":"","value":"0x04"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3872:3:77"},"nodeType":"YulFunctionCall","src":"3872:17:77"},"variableNames":[{"name":"reason","nodeType":"YulIdentifier","src":"3862:6:77"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":11115,"isOffset":false,"isSlot":false,"src":"3862:6:77","valueSize":1},{"declaration":11115,"isOffset":false,"isSlot":false,"src":"3876:6:77","valueSize":1}],"id":11137,"nodeType":"InlineAssembly","src":"3835:68:77"},{"expression":{"arguments":[{"arguments":[{"id":11141,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11115,"src":"3934:6:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":11143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3943:6:77","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":11142,"name":"string","nodeType":"ElementaryTypeName","src":"3943:6:77","typeDescriptions":{}}}],"id":11144,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3942:8:77","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":11139,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3923:3:77","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"3923:10:77","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":11145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3923:28:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":11138,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3916:6:77","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":11146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3916:36:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11147,"nodeType":"ExpressionStatement","src":"3916:36:77"}]}},{"expression":{"arguments":[{"id":11152,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11115,"src":"3990:6:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":11154,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3999:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11153,"name":"uint256","nodeType":"ElementaryTypeName","src":"3999:7:77","typeDescriptions":{}}},{"id":11156,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4008:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":11155,"name":"uint160","nodeType":"ElementaryTypeName","src":"4008:7:77","typeDescriptions":{}}},{"id":11158,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4017:5:77","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":11157,"name":"int24","nodeType":"ElementaryTypeName","src":"4017:5:77","typeDescriptions":{}}}],"id":11159,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3998:25:77","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint160_$_$_t_type$_t_int24_$_$","typeString":"tuple(type(uint256),type(uint160),type(int24))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint160_$_$_t_type$_t_int24_$_$","typeString":"tuple(type(uint256),type(uint160),type(int24))"}],"expression":{"id":11150,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3979:3:77","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11151,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"3979:10:77","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":11160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3979:45:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint160_$_t_int24_$","typeString":"tuple(uint256,uint160,int24)"}},"functionReturnParameters":11123,"id":11161,"nodeType":"Return","src":"3972:52:77"}]},"documentation":{"id":11113,"nodeType":"StructuredDocumentation","src":"3504:69:77","text":"@dev Parses a revert reason that should contain the numeric quote"},"id":11163,"implemented":true,"kind":"function","modifiers":[],"name":"parseRevertReason","nodeType":"FunctionDefinition","parameters":{"id":11116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11115,"mutability":"mutable","name":"reason","nodeType":"VariableDeclaration","scope":11163,"src":"3614:19:77","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11114,"name":"bytes","nodeType":"ElementaryTypeName","src":"3614:5:77","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3604:35:77"},"returnParameters":{"id":11123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11118,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11163,"src":"3662:14:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11117,"name":"uint256","nodeType":"ElementaryTypeName","src":"3662:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11120,"mutability":"mutable","name":"sqrtPriceX96After","nodeType":"VariableDeclaration","scope":11163,"src":"3678:25:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11119,"name":"uint160","nodeType":"ElementaryTypeName","src":"3678:7:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":11122,"mutability":"mutable","name":"tickAfter","nodeType":"VariableDeclaration","scope":11163,"src":"3705:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":11121,"name":"int24","nodeType":"ElementaryTypeName","src":"3705:5:77","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"3661:60:77"},"scope":11665,"src":"3578:453:77","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":11216,"nodeType":"Block","src":"4256:359:77","statements":[{"assignments":[11181],"declarations":[{"constant":false,"id":11181,"mutability":"mutable","name":"tickBefore","nodeType":"VariableDeclaration","scope":11216,"src":"4266:16:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":11180,"name":"int24","nodeType":"ElementaryTypeName","src":"4266:5:77","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":11182,"nodeType":"VariableDeclarationStatement","src":"4266:16:77"},{"assignments":[11184],"declarations":[{"constant":false,"id":11184,"mutability":"mutable","name":"tickAfter","nodeType":"VariableDeclaration","scope":11216,"src":"4292:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":11183,"name":"int24","nodeType":"ElementaryTypeName","src":"4292:5:77","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":11185,"nodeType":"VariableDeclarationStatement","src":"4292:15:77"},{"expression":{"id":11191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":11186,"name":"tickBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11181,"src":"4320:10:77","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},null,null,null,null,null],"id":11187,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4317:24:77","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_int24_$__$__$__$__$__$","typeString":"tuple(,int24,,,,,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11188,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11167,"src":"4344:4:77","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":11189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":485,"src":"4344:10:77","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$","typeString":"function () view external returns (uint160,int24,uint16,uint16,uint16,uint8,bool)"}},"id":11190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4344:12:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$","typeString":"tuple(uint160,int24,uint16,uint16,uint16,uint8,bool)"}},"src":"4317:39:77","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11192,"nodeType":"ExpressionStatement","src":"4317:39:77"},{"expression":{"id":11200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":11193,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11172,"src":"4367:6:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11194,"name":"sqrtPriceX96After","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11174,"src":"4375:17:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":11195,"name":"tickAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11184,"src":"4394:9:77","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":11196,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4366:38:77","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint160_$_t_int24_$","typeString":"tuple(uint256,uint160,int24)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11198,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11165,"src":"4425:6:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11197,"name":"parseRevertReason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11163,"src":"4407:17:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint160_$_t_int24_$","typeString":"function (bytes memory) pure returns (uint256,uint160,int24)"}},"id":11199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4407:25:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint160_$_t_int24_$","typeString":"tuple(uint256,uint160,int24)"}},"src":"4366:66:77","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11201,"nodeType":"ExpressionStatement","src":"4366:66:77"},{"expression":{"id":11208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11202,"name":"initializedTicksCrossed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11176,"src":"4443:23:77","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11205,"name":"tickBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11181,"src":"4503:10:77","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":11206,"name":"tickAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11184,"src":"4515:9:77","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":11203,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11167,"src":"4469:4:77","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":11204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"countInitializedTicksCrossed","nodeType":"MemberAccess","referencedDeclaration":14642,"src":"4469:33:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IAstraCLPool_$110_$_t_int24_$_t_int24_$returns$_t_uint32_$bound_to$_t_contract$_IAstraCLPool_$110_$","typeString":"function (contract IAstraCLPool,int24,int24) view returns (uint32)"}},"id":11207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4469:56:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4443:82:77","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":11209,"nodeType":"ExpressionStatement","src":"4443:82:77"},{"expression":{"components":[{"id":11210,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11172,"src":"4544:6:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11211,"name":"sqrtPriceX96After","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11174,"src":"4552:17:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":11212,"name":"initializedTicksCrossed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11176,"src":"4571:23:77","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":11213,"name":"gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11169,"src":"4596:11:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4543:65:77","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint160_$_t_uint32_$_t_uint256_$","typeString":"tuple(uint256,uint160,uint32,uint256)"}},"functionReturnParameters":11179,"id":11215,"nodeType":"Return","src":"4536:72:77"}]},"id":11217,"implemented":true,"kind":"function","modifiers":[],"name":"handleRevert","nodeType":"FunctionDefinition","parameters":{"id":11170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11165,"mutability":"mutable","name":"reason","nodeType":"VariableDeclaration","scope":11217,"src":"4068:19:77","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11164,"name":"bytes","nodeType":"ElementaryTypeName","src":"4068:5:77","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11167,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":11217,"src":"4097:17:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":11166,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"4097:12:77","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"},{"constant":false,"id":11169,"mutability":"mutable","name":"gasEstimate","nodeType":"VariableDeclaration","scope":11217,"src":"4124:19:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11168,"name":"uint256","nodeType":"ElementaryTypeName","src":"4124:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4058:91:77"},"returnParameters":{"id":11179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11172,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11217,"src":"4172:14:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11171,"name":"uint256","nodeType":"ElementaryTypeName","src":"4172:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11174,"mutability":"mutable","name":"sqrtPriceX96After","nodeType":"VariableDeclaration","scope":11217,"src":"4188:25:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11173,"name":"uint160","nodeType":"ElementaryTypeName","src":"4188:7:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":11176,"mutability":"mutable","name":"initializedTicksCrossed","nodeType":"VariableDeclaration","scope":11217,"src":"4215:30:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11175,"name":"uint32","nodeType":"ElementaryTypeName","src":"4215:6:77","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":11178,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11217,"src":"4247:7:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11177,"name":"uint256","nodeType":"ElementaryTypeName","src":"4247:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4171:84:77"},"scope":11665,"src":"4037:578:77","stateMutability":"view","virtual":false,"visibility":"private"},{"baseFunctions":[9933],"body":{"id":11315,"nodeType":"Block","src":"4861:818:77","statements":[{"assignments":[11232],"declarations":[{"constant":false,"id":11232,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":11315,"src":"4871:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11231,"name":"bool","nodeType":"ElementaryTypeName","src":"4871:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":11238,"initialValue":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11233,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11219,"src":"4889:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$9919_memory_ptr","typeString":"struct IQuoterV2.QuoteExactInputSingleParams memory"}},"id":11234,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":9910,"src":"4889:14:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11235,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11219,"src":"4906:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$9919_memory_ptr","typeString":"struct IQuoterV2.QuoteExactInputSingleParams memory"}},"id":11236,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":9912,"src":"4906:15:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4889:32:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4871:50:77"},{"assignments":[11240],"declarations":[{"constant":false,"id":11240,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":11315,"src":"4931:17:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":11239,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"4931:12:77","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"}],"id":11249,"initialValue":{"arguments":[{"expression":{"id":11242,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11219,"src":"4959:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$9919_memory_ptr","typeString":"struct IQuoterV2.QuoteExactInputSingleParams memory"}},"id":11243,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":9910,"src":"4959:14:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":11244,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11219,"src":"4975:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$9919_memory_ptr","typeString":"struct IQuoterV2.QuoteExactInputSingleParams memory"}},"id":11245,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":9912,"src":"4975:15:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":11246,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11219,"src":"4992:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$9919_memory_ptr","typeString":"struct IQuoterV2.QuoteExactInputSingleParams memory"}},"id":11247,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":9916,"src":"4992:10:77","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":11241,"name":"getPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11002,"src":"4951:7:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint24_$returns$_t_contract$_IAstraCLPool_$110_$","typeString":"function (address,address,uint24) view returns (contract IAstraCLPool)"}},"id":11248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4951:52:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"nodeType":"VariableDeclarationStatement","src":"4931:72:77"},{"assignments":[11251],"declarations":[{"constant":false,"id":11251,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":11315,"src":"5014:17:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11250,"name":"uint256","nodeType":"ElementaryTypeName","src":"5014:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11254,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11252,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"5034:7:77","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":11253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5034:9:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5014:29:77"},{"clauses":[{"block":{"id":11294,"nodeType":"Block","src":"5522:2:77","statements":[]},"errorName":"","id":11295,"nodeType":"TryCatchClause","src":"5522:2:77"},{"block":{"id":11312,"nodeType":"Block","src":"5553:120:77","statements":[{"expression":{"id":11304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11299,"name":"gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11229,"src":"5567:11:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11300,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11251,"src":"5581:9:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":11301,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"5593:7:77","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":11302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5593:9:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5581:21:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5567:35:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11305,"nodeType":"ExpressionStatement","src":"5567:35:77"},{"expression":{"arguments":[{"id":11307,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11297,"src":"5636:6:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":11308,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11240,"src":"5644:4:77","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},{"id":11309,"name":"gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11229,"src":"5650:11:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11306,"name":"handleRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11217,"src":"5623:12:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$_t_contract$_IAstraCLPool_$110_$_t_uint256_$returns$_t_uint256_$_t_uint160_$_t_uint32_$_t_uint256_$","typeString":"function (bytes memory,contract IAstraCLPool,uint256) view returns (uint256,uint160,uint32,uint256)"}},"id":11310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5623:39:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint160_$_t_uint32_$_t_uint256_$","typeString":"tuple(uint256,uint160,uint32,uint256)"}},"functionReturnParameters":11230,"id":11311,"nodeType":"Return","src":"5616:46:77"}]},"errorName":"","id":11313,"nodeType":"TryCatchClause","parameters":{"id":11298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11297,"mutability":"mutable","name":"reason","nodeType":"VariableDeclaration","scope":11313,"src":"5532:19:77","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11296,"name":"bytes","nodeType":"ElementaryTypeName","src":"5532:5:77","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5531:21:77"},"src":"5525:148:77"}],"externalCall":{"arguments":[{"arguments":[{"id":11259,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5104:4:77","typeDescriptions":{"typeIdentifier":"t_contract$_QuoterV2_$11665","typeString":"contract QuoterV2"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_QuoterV2_$11665","typeString":"contract QuoterV2"}],"id":11258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5096:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11257,"name":"address","nodeType":"ElementaryTypeName","src":"5096:7:77","typeDescriptions":{}}},"id":11260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5096:13:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11261,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11232,"src":"5177:10:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":11262,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11219,"src":"5205:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$9919_memory_ptr","typeString":"struct IQuoterV2.QuoteExactInputSingleParams memory"}},"id":11263,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":9914,"src":"5205:15:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":1292,"src":"5205:24:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":11265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5205:26:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":11269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11266,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11219,"src":"5249:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$9919_memory_ptr","typeString":"struct IQuoterV2.QuoteExactInputSingleParams memory"}},"id":11267,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":9918,"src":"5249:24:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5277:1:77","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5249:29:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":11281,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11219,"src":"5396:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$9919_memory_ptr","typeString":"struct IQuoterV2.QuoteExactInputSingleParams memory"}},"id":11282,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":9918,"src":"5396:24:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":11283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5249:171:77","trueExpression":{"components":[{"condition":{"id":11270,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11232,"src":"5302:10:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":11278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11275,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"5345:8:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$2536_$","typeString":"type(library TickMath)"}},"id":11276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":2022,"src":"5345:23:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":11277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5371:1:77","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5345:27:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":11279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5302:70:77","trueExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":11274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11271,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"5315:8:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$2536_$","typeString":"type(library TickMath)"}},"id":11272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":2018,"src":"5315:23:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":11273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5341:1:77","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5315:27:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":11280,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5301:72:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"expression":{"id":11286,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11219,"src":"5455:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$9919_memory_ptr","typeString":"struct IQuoterV2.QuoteExactInputSingleParams memory"}},"id":11287,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":9910,"src":"5455:14:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":11288,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11219,"src":"5471:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$9919_memory_ptr","typeString":"struct IQuoterV2.QuoteExactInputSingleParams memory"}},"id":11289,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":9916,"src":"5471:10:77","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"expression":{"id":11290,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11219,"src":"5483:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$9919_memory_ptr","typeString":"struct IQuoterV2.QuoteExactInputSingleParams memory"}},"id":11291,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":9912,"src":"5483:15:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11284,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5438:3:77","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11285,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"5438:16:77","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5438:61:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":11255,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11240,"src":"5069:4:77","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":11256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":229,"src":"5069:9:77","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bool_$_t_int256_$_t_uint160_$_t_bytes_memory_ptr_$returns$_t_int256_$_t_int256_$","typeString":"function (address,bool,int256,uint160,bytes memory) external returns (int256,int256)"}},"id":11293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5069:444:77","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":11314,"nodeType":"TryStatement","src":"5053:620:77"}]},"functionSelector":"c6a5026a","id":11316,"implemented":true,"kind":"function","modifiers":[],"name":"quoteExactInputSingle","nodeType":"FunctionDefinition","overrides":{"id":11221,"nodeType":"OverrideSpecifier","overrides":[],"src":"4732:8:77"},"parameters":{"id":11220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11219,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":11316,"src":"4661:41:77","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$9919_memory_ptr","typeString":"struct IQuoterV2.QuoteExactInputSingleParams"},"typeName":{"id":11218,"name":"QuoteExactInputSingleParams","nodeType":"UserDefinedTypeName","referencedDeclaration":9919,"src":"4661:27:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$9919_storage_ptr","typeString":"struct IQuoterV2.QuoteExactInputSingleParams"}},"visibility":"internal"}],"src":"4651:57:77"},"returnParameters":{"id":11230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11223,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":11316,"src":"4758:17:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11222,"name":"uint256","nodeType":"ElementaryTypeName","src":"4758:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11225,"mutability":"mutable","name":"sqrtPriceX96After","nodeType":"VariableDeclaration","scope":11316,"src":"4777:25:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11224,"name":"uint160","nodeType":"ElementaryTypeName","src":"4777:7:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":11227,"mutability":"mutable","name":"initializedTicksCrossed","nodeType":"VariableDeclaration","scope":11316,"src":"4804:30:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11226,"name":"uint32","nodeType":"ElementaryTypeName","src":"4804:6:77","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":11229,"mutability":"mutable","name":"gasEstimate","nodeType":"VariableDeclaration","scope":11316,"src":"4836:19:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11228,"name":"uint256","nodeType":"ElementaryTypeName","src":"4836:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4757:99:77"},"scope":11665,"src":"4621:1058:77","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[9908],"body":{"id":11430,"nodeType":"Block","src":"6005:1382:77","statements":[{"expression":{"id":11342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11334,"name":"sqrtPriceX96AfterList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11327,"src":"6015:21:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11338,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11318,"src":"6053:4:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"numPools","nodeType":"MemberAccess","referencedDeclaration":14204,"src":"6053:13:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (uint256)"}},"id":11340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6053:15:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11337,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6039:13:77","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint160_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint160[] memory)"},"typeName":{"baseType":{"id":11335,"name":"uint160","nodeType":"ElementaryTypeName","src":"6043:7:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":11336,"nodeType":"ArrayTypeName","src":"6043:9:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}}},"id":11341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6039:30:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"src":"6015:54:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"id":11343,"nodeType":"ExpressionStatement","src":"6015:54:77"},{"expression":{"id":11352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11344,"name":"initializedTicksCrossedList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11330,"src":"6079:27:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11348,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11318,"src":"6122:4:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"numPools","nodeType":"MemberAccess","referencedDeclaration":14204,"src":"6122:13:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (uint256)"}},"id":11350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6122:15:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11347,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6109:12:77","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint32[] memory)"},"typeName":{"baseType":{"id":11345,"name":"uint32","nodeType":"ElementaryTypeName","src":"6113:6:77","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":11346,"nodeType":"ArrayTypeName","src":"6113:8:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}}},"id":11351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6109:29:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"src":"6079:59:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":11353,"nodeType":"ExpressionStatement","src":"6079:59:77"},{"assignments":[11355],"declarations":[{"constant":false,"id":11355,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":11430,"src":"6149:9:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11354,"name":"uint256","nodeType":"ElementaryTypeName","src":"6149:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11357,"initialValue":{"hexValue":"30","id":11356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6161:1:77","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6149:13:77"},{"body":{"id":11428,"nodeType":"Block","src":"6185:1196:77","statements":[{"assignments":[11360,11362,11364],"declarations":[{"constant":false,"id":11360,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":11428,"src":"6200:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11359,"name":"address","nodeType":"ElementaryTypeName","src":"6200:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11362,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":11428,"src":"6217:16:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11361,"name":"address","nodeType":"ElementaryTypeName","src":"6217:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11364,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":11428,"src":"6235:10:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":11363,"name":"uint24","nodeType":"ElementaryTypeName","src":"6235:6:77","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":11368,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11365,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11318,"src":"6249:4:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decodeFirstPool","nodeType":"MemberAccess","referencedDeclaration":14238,"src":"6249:20:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$_t_address_$_t_uint24_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (address,address,uint24)"}},"id":11367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6249:22:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint24_$","typeString":"tuple(address,address,uint24)"}},"nodeType":"VariableDeclarationStatement","src":"6199:72:77"},{"assignments":[11370,11372,11374,11376],"declarations":[{"constant":false,"id":11370,"mutability":"mutable","name":"_amountOut","nodeType":"VariableDeclaration","scope":11428,"src":"6383:18:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11369,"name":"uint256","nodeType":"ElementaryTypeName","src":"6383:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11372,"mutability":"mutable","name":"_sqrtPriceX96After","nodeType":"VariableDeclaration","scope":11428,"src":"6419:26:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11371,"name":"uint160","nodeType":"ElementaryTypeName","src":"6419:7:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":11374,"mutability":"mutable","name":"_initializedTicksCrossed","nodeType":"VariableDeclaration","scope":11428,"src":"6463:31:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11373,"name":"uint32","nodeType":"ElementaryTypeName","src":"6463:6:77","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":11376,"mutability":"mutable","name":"_gasEstimate","nodeType":"VariableDeclaration","scope":11428,"src":"6512:20:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11375,"name":"uint256","nodeType":"ElementaryTypeName","src":"6512:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11386,"initialValue":{"arguments":[{"arguments":[{"id":11379,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11360,"src":"6655:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11380,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11362,"src":"6698:8:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11381,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11364,"src":"6737:3:77","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"id":11382,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11320,"src":"6776:8:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":11383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6829:1:77","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11378,"name":"QuoteExactInputSingleParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9919,"src":"6592:27:77","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_QuoteExactInputSingleParams_$9919_storage_ptr_$","typeString":"type(struct IQuoterV2.QuoteExactInputSingleParams storage pointer)"}},"id":11384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["tokenIn","tokenOut","fee","amountIn","sqrtPriceLimitX96"],"nodeType":"FunctionCall","src":"6592:261:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$9919_memory_ptr","typeString":"struct IQuoterV2.QuoteExactInputSingleParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_QuoteExactInputSingleParams_$9919_memory_ptr","typeString":"struct IQuoterV2.QuoteExactInputSingleParams memory"}],"id":11377,"name":"quoteExactInputSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11316,"src":"6549:21:77","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_QuoteExactInputSingleParams_$9919_memory_ptr_$returns$_t_uint256_$_t_uint160_$_t_uint32_$_t_uint256_$","typeString":"function (struct IQuoterV2.QuoteExactInputSingleParams memory) returns (uint256,uint160,uint32,uint256)"}},"id":11385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6549:322:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint160_$_t_uint32_$_t_uint256_$","typeString":"tuple(uint256,uint160,uint32,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"6365:506:77"},{"expression":{"id":11391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11387,"name":"sqrtPriceX96AfterList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11327,"src":"6886:21:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"id":11389,"indexExpression":{"id":11388,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11355,"src":"6908:1:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6886:24:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11390,"name":"_sqrtPriceX96After","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11372,"src":"6913:18:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6886:45:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":11392,"nodeType":"ExpressionStatement","src":"6886:45:77"},{"expression":{"id":11397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11393,"name":"initializedTicksCrossedList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11330,"src":"6945:27:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":11395,"indexExpression":{"id":11394,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11355,"src":"6973:1:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6945:30:77","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11396,"name":"_initializedTicksCrossed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11374,"src":"6978:24:77","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"6945:57:77","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":11398,"nodeType":"ExpressionStatement","src":"6945:57:77"},{"expression":{"id":11401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11399,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11320,"src":"7016:8:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11400,"name":"_amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11370,"src":"7027:10:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7016:21:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11402,"nodeType":"ExpressionStatement","src":"7016:21:77"},{"expression":{"id":11405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11403,"name":"gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11332,"src":"7051:11:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":11404,"name":"_gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11376,"src":"7066:12:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7051:27:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11406,"nodeType":"ExpressionStatement","src":"7051:27:77"},{"expression":{"id":11408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7092:3:77","subExpression":{"id":11407,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11355,"src":"7092:1:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11409,"nodeType":"ExpressionStatement","src":"7092:3:77"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11410,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11318,"src":"7169:4:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hasMultiplePools","nodeType":"MemberAccess","referencedDeclaration":14186,"src":"7169:21:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bool)"}},"id":11412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7169:23:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11426,"nodeType":"Block","src":"7256:115:77","statements":[{"expression":{"components":[{"id":11420,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11320,"src":"7282:8:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11421,"name":"sqrtPriceX96AfterList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11327,"src":"7292:21:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},{"id":11422,"name":"initializedTicksCrossedList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11330,"src":"7315:27:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},{"id":11423,"name":"gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11332,"src":"7344:11:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11424,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7281:75:77","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint160_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256,uint160[] memory,uint32[] memory,uint256)"}},"functionReturnParameters":11333,"id":11425,"nodeType":"Return","src":"7274:82:77"}]},"id":11427,"nodeType":"IfStatement","src":"7165:206:77","trueBody":{"id":11419,"nodeType":"Block","src":"7194:56:77","statements":[{"expression":{"id":11417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11413,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11318,"src":"7212:4:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11414,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11318,"src":"7219:4:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"skipToken","nodeType":"MemberAccess","referencedDeclaration":14271,"src":"7219:14:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":11416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7219:16:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"7212:23:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11418,"nodeType":"ExpressionStatement","src":"7212:23:77"}]}}]},"condition":{"hexValue":"74727565","id":11358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6179:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":11429,"nodeType":"WhileStatement","src":"6172:1209:77"}]},"functionSelector":"cdca1753","id":11431,"implemented":true,"kind":"function","modifiers":[],"name":"quoteExactInput","nodeType":"FunctionDefinition","overrides":{"id":11322,"nodeType":"OverrideSpecifier","overrides":[],"src":"5792:8:77"},"parameters":{"id":11321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11318,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":11431,"src":"5719:17:77","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11317,"name":"bytes","nodeType":"ElementaryTypeName","src":"5719:5:77","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11320,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":11431,"src":"5746:16:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11319,"name":"uint256","nodeType":"ElementaryTypeName","src":"5746:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5709:59:77"},"returnParameters":{"id":11333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11324,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":11431,"src":"5831:17:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11323,"name":"uint256","nodeType":"ElementaryTypeName","src":"5831:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11327,"mutability":"mutable","name":"sqrtPriceX96AfterList","nodeType":"VariableDeclaration","scope":11431,"src":"5862:38:77","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[]"},"typeName":{"baseType":{"id":11325,"name":"uint160","nodeType":"ElementaryTypeName","src":"5862:7:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":11326,"nodeType":"ArrayTypeName","src":"5862:9:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}},"visibility":"internal"},{"constant":false,"id":11330,"mutability":"mutable","name":"initializedTicksCrossedList","nodeType":"VariableDeclaration","scope":11431,"src":"5914:43:77","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":11328,"name":"uint32","nodeType":"ElementaryTypeName","src":"5914:6:77","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":11329,"nodeType":"ArrayTypeName","src":"5914:8:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"},{"constant":false,"id":11332,"mutability":"mutable","name":"gasEstimate","nodeType":"VariableDeclaration","scope":11431,"src":"5971:19:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11331,"name":"uint256","nodeType":"ElementaryTypeName","src":"5971:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5817:183:77"},"scope":11665,"src":"5685:1702:77","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[9976],"body":{"id":11548,"nodeType":"Block","src":"7634:1088:77","statements":[{"assignments":[11446],"declarations":[{"constant":false,"id":11446,"mutability":"mutable","name":"zeroForOne","nodeType":"VariableDeclaration","scope":11548,"src":"7644:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11445,"name":"bool","nodeType":"ElementaryTypeName","src":"7644:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":11452,"initialValue":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11447,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11433,"src":"7662:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$9962_memory_ptr","typeString":"struct IQuoterV2.QuoteExactOutputSingleParams memory"}},"id":11448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":9953,"src":"7662:14:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11449,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11433,"src":"7679:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$9962_memory_ptr","typeString":"struct IQuoterV2.QuoteExactOutputSingleParams memory"}},"id":11450,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":9955,"src":"7679:15:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7662:32:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"7644:50:77"},{"assignments":[11454],"declarations":[{"constant":false,"id":11454,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":11548,"src":"7704:17:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":11453,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"7704:12:77","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"}],"id":11463,"initialValue":{"arguments":[{"expression":{"id":11456,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11433,"src":"7732:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$9962_memory_ptr","typeString":"struct IQuoterV2.QuoteExactOutputSingleParams memory"}},"id":11457,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":9953,"src":"7732:14:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":11458,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11433,"src":"7748:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$9962_memory_ptr","typeString":"struct IQuoterV2.QuoteExactOutputSingleParams memory"}},"id":11459,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":9955,"src":"7748:15:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":11460,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11433,"src":"7765:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$9962_memory_ptr","typeString":"struct IQuoterV2.QuoteExactOutputSingleParams memory"}},"id":11461,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":9959,"src":"7765:10:77","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":11455,"name":"getPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11002,"src":"7724:7:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint24_$returns$_t_contract$_IAstraCLPool_$110_$","typeString":"function (address,address,uint24) view returns (contract IAstraCLPool)"}},"id":11462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7724:52:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"nodeType":"VariableDeclarationStatement","src":"7704:72:77"},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":11467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11464,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11433,"src":"7900:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$9962_memory_ptr","typeString":"struct IQuoterV2.QuoteExactOutputSingleParams memory"}},"id":11465,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":9961,"src":"7900:24:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7928:1:77","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7900:29:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11473,"nodeType":"IfStatement","src":"7896:66:77","trueBody":{"expression":{"id":11471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11468,"name":"amountOutCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10965,"src":"7931:15:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":11469,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11433,"src":"7949:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$9962_memory_ptr","typeString":"struct IQuoterV2.QuoteExactOutputSingleParams memory"}},"id":11470,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":9957,"src":"7949:13:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7931:31:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11472,"nodeType":"ExpressionStatement","src":"7931:31:77"}},{"assignments":[11475],"declarations":[{"constant":false,"id":11475,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":11548,"src":"7972:17:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11474,"name":"uint256","nodeType":"ElementaryTypeName","src":"7972:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11478,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11476,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"7992:7:77","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":11477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7992:9:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7972:29:77"},{"clauses":[{"block":{"id":11519,"nodeType":"Block","src":"8479:2:77","statements":[]},"errorName":"","id":11520,"nodeType":"TryCatchClause","src":"8479:2:77"},{"block":{"id":11545,"nodeType":"Block","src":"8510:206:77","statements":[{"expression":{"id":11529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11524,"name":"gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11443,"src":"8524:11:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11525,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11475,"src":"8538:9:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":11526,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"8550:7:77","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":11527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8550:9:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8538:21:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8524:35:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11530,"nodeType":"ExpressionStatement","src":"8524:35:77"},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":11534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11531,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11433,"src":"8577:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$9962_memory_ptr","typeString":"struct IQuoterV2.QuoteExactOutputSingleParams memory"}},"id":11532,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":9961,"src":"8577:24:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8605:1:77","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8577:29:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11538,"nodeType":"IfStatement","src":"8573:57:77","trueBody":{"expression":{"id":11536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"8608:22:77","subExpression":{"id":11535,"name":"amountOutCached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10965,"src":"8615:15:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11537,"nodeType":"ExpressionStatement","src":"8608:22:77"}},{"expression":{"arguments":[{"id":11540,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11522,"src":"8679:6:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":11541,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11454,"src":"8687:4:77","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},{"id":11542,"name":"gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11443,"src":"8693:11:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11539,"name":"handleRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11217,"src":"8666:12:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$_t_contract$_IAstraCLPool_$110_$_t_uint256_$returns$_t_uint256_$_t_uint160_$_t_uint32_$_t_uint256_$","typeString":"function (bytes memory,contract IAstraCLPool,uint256) view returns (uint256,uint160,uint32,uint256)"}},"id":11543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8666:39:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint160_$_t_uint32_$_t_uint256_$","typeString":"tuple(uint256,uint160,uint32,uint256)"}},"functionReturnParameters":11444,"id":11544,"nodeType":"Return","src":"8659:46:77"}]},"errorName":"","id":11546,"nodeType":"TryCatchClause","parameters":{"id":11523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11522,"mutability":"mutable","name":"reason","nodeType":"VariableDeclaration","scope":11546,"src":"8489:19:77","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11521,"name":"bytes","nodeType":"ElementaryTypeName","src":"8489:5:77","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8488:21:77"},"src":"8482:234:77"}],"externalCall":{"arguments":[{"arguments":[{"id":11483,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8062:4:77","typeDescriptions":{"typeIdentifier":"t_contract$_QuoterV2_$11665","typeString":"contract QuoterV2"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_QuoterV2_$11665","typeString":"contract QuoterV2"}],"id":11482,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8054:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11481,"name":"address","nodeType":"ElementaryTypeName","src":"8054:7:77","typeDescriptions":{}}},"id":11484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8054:13:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11485,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11446,"src":"8135:10:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":11490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"8163:25:77","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":11486,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11433,"src":"8164:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$9962_memory_ptr","typeString":"struct IQuoterV2.QuoteExactOutputSingleParams memory"}},"id":11487,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":9957,"src":"8164:13:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":1292,"src":"8164:22:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":11489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8164:24:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":11494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11491,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11433,"src":"8206:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$9962_memory_ptr","typeString":"struct IQuoterV2.QuoteExactOutputSingleParams memory"}},"id":11492,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":9961,"src":"8206:24:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8234:1:77","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8206:29:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":11506,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11433,"src":"8353:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$9962_memory_ptr","typeString":"struct IQuoterV2.QuoteExactOutputSingleParams memory"}},"id":11507,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sqrtPriceLimitX96","nodeType":"MemberAccess","referencedDeclaration":9961,"src":"8353:24:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":11508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8206:171:77","trueExpression":{"components":[{"condition":{"id":11495,"name":"zeroForOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11446,"src":"8259:10:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":11503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11500,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"8302:8:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$2536_$","typeString":"type(library TickMath)"}},"id":11501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":2022,"src":"8302:23:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":11502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8328:1:77","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8302:27:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":11504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8259:70:77","trueExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":11499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11496,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"8272:8:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$2536_$","typeString":"type(library TickMath)"}},"id":11497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIN_SQRT_RATIO","nodeType":"MemberAccess","referencedDeclaration":2018,"src":"8272:23:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":11498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8298:1:77","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8272:27:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":11505,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8258:72:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"expression":{"id":11511,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11433,"src":"8412:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$9962_memory_ptr","typeString":"struct IQuoterV2.QuoteExactOutputSingleParams memory"}},"id":11512,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":9955,"src":"8412:15:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":11513,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11433,"src":"8429:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$9962_memory_ptr","typeString":"struct IQuoterV2.QuoteExactOutputSingleParams memory"}},"id":11514,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":9959,"src":"8429:10:77","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"expression":{"id":11515,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11433,"src":"8441:6:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$9962_memory_ptr","typeString":"struct IQuoterV2.QuoteExactOutputSingleParams memory"}},"id":11516,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":9953,"src":"8441:14:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11509,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8395:3:77","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11510,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"8395:16:77","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8395:61:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":11479,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11454,"src":"8027:4:77","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":11480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":229,"src":"8027:9:77","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bool_$_t_int256_$_t_uint160_$_t_bytes_memory_ptr_$returns$_t_int256_$_t_int256_$","typeString":"function (address,bool,int256,uint160,bytes memory) external returns (int256,int256)"}},"id":11518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8027:443:77","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":11547,"nodeType":"TryStatement","src":"8011:705:77"}]},"functionSelector":"bd21704a","id":11549,"implemented":true,"kind":"function","modifiers":[],"name":"quoteExactOutputSingle","nodeType":"FunctionDefinition","overrides":{"id":11435,"nodeType":"OverrideSpecifier","overrides":[],"src":"7506:8:77"},"parameters":{"id":11434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11433,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":11549,"src":"7434:42:77","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$9962_memory_ptr","typeString":"struct IQuoterV2.QuoteExactOutputSingleParams"},"typeName":{"id":11432,"name":"QuoteExactOutputSingleParams","nodeType":"UserDefinedTypeName","referencedDeclaration":9962,"src":"7434:28:77","typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$9962_storage_ptr","typeString":"struct IQuoterV2.QuoteExactOutputSingleParams"}},"visibility":"internal"}],"src":"7424:58:77"},"returnParameters":{"id":11444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11437,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":11549,"src":"7532:16:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11436,"name":"uint256","nodeType":"ElementaryTypeName","src":"7532:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11439,"mutability":"mutable","name":"sqrtPriceX96After","nodeType":"VariableDeclaration","scope":11549,"src":"7550:25:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11438,"name":"uint160","nodeType":"ElementaryTypeName","src":"7550:7:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":11441,"mutability":"mutable","name":"initializedTicksCrossed","nodeType":"VariableDeclaration","scope":11549,"src":"7577:30:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11440,"name":"uint32","nodeType":"ElementaryTypeName","src":"7577:6:77","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":11443,"mutability":"mutable","name":"gasEstimate","nodeType":"VariableDeclaration","scope":11549,"src":"7609:19:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11442,"name":"uint256","nodeType":"ElementaryTypeName","src":"7609:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7531:98:77"},"scope":11665,"src":"7393:1329:77","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[9951],"body":{"id":11663,"nodeType":"Block","src":"9049:1383:77","statements":[{"expression":{"id":11575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11567,"name":"sqrtPriceX96AfterList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11560,"src":"9059:21:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11571,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11551,"src":"9097:4:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"numPools","nodeType":"MemberAccess","referencedDeclaration":14204,"src":"9097:13:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (uint256)"}},"id":11573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9097:15:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9083:13:77","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint160_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint160[] memory)"},"typeName":{"baseType":{"id":11568,"name":"uint160","nodeType":"ElementaryTypeName","src":"9087:7:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":11569,"nodeType":"ArrayTypeName","src":"9087:9:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}}},"id":11574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9083:30:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"src":"9059:54:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"id":11576,"nodeType":"ExpressionStatement","src":"9059:54:77"},{"expression":{"id":11585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11577,"name":"initializedTicksCrossedList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11563,"src":"9123:27:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11581,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11551,"src":"9166:4:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"numPools","nodeType":"MemberAccess","referencedDeclaration":14204,"src":"9166:13:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (uint256)"}},"id":11583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9166:15:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11580,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9153:12:77","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint32[] memory)"},"typeName":{"baseType":{"id":11578,"name":"uint32","nodeType":"ElementaryTypeName","src":"9157:6:77","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":11579,"nodeType":"ArrayTypeName","src":"9157:8:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}}},"id":11584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9153:29:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"src":"9123:59:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":11586,"nodeType":"ExpressionStatement","src":"9123:59:77"},{"assignments":[11588],"declarations":[{"constant":false,"id":11588,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":11663,"src":"9193:9:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11587,"name":"uint256","nodeType":"ElementaryTypeName","src":"9193:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11590,"initialValue":{"hexValue":"30","id":11589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9205:1:77","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9193:13:77"},{"body":{"id":11661,"nodeType":"Block","src":"9229:1197:77","statements":[{"assignments":[11593,11595,11597],"declarations":[{"constant":false,"id":11593,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":11661,"src":"9244:16:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11592,"name":"address","nodeType":"ElementaryTypeName","src":"9244:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11595,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":11661,"src":"9262:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11594,"name":"address","nodeType":"ElementaryTypeName","src":"9262:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11597,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":11661,"src":"9279:10:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":11596,"name":"uint24","nodeType":"ElementaryTypeName","src":"9279:6:77","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":11601,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11598,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11551,"src":"9293:4:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decodeFirstPool","nodeType":"MemberAccess","referencedDeclaration":14238,"src":"9293:20:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$_t_address_$_t_uint24_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (address,address,uint24)"}},"id":11600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9293:22:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint24_$","typeString":"tuple(address,address,uint24)"}},"nodeType":"VariableDeclarationStatement","src":"9243:72:77"},{"assignments":[11603,11605,11607,11609],"declarations":[{"constant":false,"id":11603,"mutability":"mutable","name":"_amountIn","nodeType":"VariableDeclaration","scope":11661,"src":"9427:17:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11602,"name":"uint256","nodeType":"ElementaryTypeName","src":"9427:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11605,"mutability":"mutable","name":"_sqrtPriceX96After","nodeType":"VariableDeclaration","scope":11661,"src":"9462:26:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11604,"name":"uint160","nodeType":"ElementaryTypeName","src":"9462:7:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":11607,"mutability":"mutable","name":"_initializedTicksCrossed","nodeType":"VariableDeclaration","scope":11661,"src":"9506:31:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11606,"name":"uint32","nodeType":"ElementaryTypeName","src":"9506:6:77","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":11609,"mutability":"mutable","name":"_gasEstimate","nodeType":"VariableDeclaration","scope":11661,"src":"9555:20:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11608,"name":"uint256","nodeType":"ElementaryTypeName","src":"9555:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11619,"initialValue":{"arguments":[{"arguments":[{"id":11612,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11595,"src":"9700:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11613,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11593,"src":"9743:8:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11614,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11553,"src":"9785:9:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11615,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11597,"src":"9825:3:77","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"hexValue":"30","id":11616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9873:1:77","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11611,"name":"QuoteExactOutputSingleParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9962,"src":"9636:28:77","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_QuoteExactOutputSingleParams_$9962_storage_ptr_$","typeString":"type(struct IQuoterV2.QuoteExactOutputSingleParams storage pointer)"}},"id":11617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["tokenIn","tokenOut","amount","fee","sqrtPriceLimitX96"],"nodeType":"FunctionCall","src":"9636:261:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$9962_memory_ptr","typeString":"struct IQuoterV2.QuoteExactOutputSingleParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_QuoteExactOutputSingleParams_$9962_memory_ptr","typeString":"struct IQuoterV2.QuoteExactOutputSingleParams memory"}],"id":11610,"name":"quoteExactOutputSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11549,"src":"9592:22:77","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_QuoteExactOutputSingleParams_$9962_memory_ptr_$returns$_t_uint256_$_t_uint160_$_t_uint32_$_t_uint256_$","typeString":"function (struct IQuoterV2.QuoteExactOutputSingleParams memory) returns (uint256,uint160,uint32,uint256)"}},"id":11618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9592:323:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint160_$_t_uint32_$_t_uint256_$","typeString":"tuple(uint256,uint160,uint32,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"9409:506:77"},{"expression":{"id":11624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11620,"name":"sqrtPriceX96AfterList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11560,"src":"9930:21:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"id":11622,"indexExpression":{"id":11621,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11588,"src":"9952:1:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9930:24:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11623,"name":"_sqrtPriceX96After","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11605,"src":"9957:18:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"9930:45:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":11625,"nodeType":"ExpressionStatement","src":"9930:45:77"},{"expression":{"id":11630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11626,"name":"initializedTicksCrossedList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11563,"src":"9989:27:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":11628,"indexExpression":{"id":11627,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11588,"src":"10017:1:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9989:30:77","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11629,"name":"_initializedTicksCrossed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11607,"src":"10022:24:77","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9989:57:77","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":11631,"nodeType":"ExpressionStatement","src":"9989:57:77"},{"expression":{"id":11634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11632,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11553,"src":"10060:9:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11633,"name":"_amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11603,"src":"10072:9:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10060:21:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11635,"nodeType":"ExpressionStatement","src":"10060:21:77"},{"expression":{"id":11638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11636,"name":"gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11565,"src":"10095:11:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":11637,"name":"_gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11609,"src":"10110:12:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10095:27:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11639,"nodeType":"ExpressionStatement","src":"10095:27:77"},{"expression":{"id":11641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10136:3:77","subExpression":{"id":11640,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11588,"src":"10136:1:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11642,"nodeType":"ExpressionStatement","src":"10136:3:77"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11643,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11551,"src":"10213:4:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hasMultiplePools","nodeType":"MemberAccess","referencedDeclaration":14186,"src":"10213:21:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bool)"}},"id":11645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10213:23:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11659,"nodeType":"Block","src":"10300:116:77","statements":[{"expression":{"components":[{"id":11653,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11553,"src":"10326:9:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11654,"name":"sqrtPriceX96AfterList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11560,"src":"10337:21:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},{"id":11655,"name":"initializedTicksCrossedList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11563,"src":"10360:27:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},{"id":11656,"name":"gasEstimate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11565,"src":"10389:11:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11657,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10325:76:77","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint160_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256,uint160[] memory,uint32[] memory,uint256)"}},"functionReturnParameters":11566,"id":11658,"nodeType":"Return","src":"10318:83:77"}]},"id":11660,"nodeType":"IfStatement","src":"10209:207:77","trueBody":{"id":11652,"nodeType":"Block","src":"10238:56:77","statements":[{"expression":{"id":11650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11646,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11551,"src":"10256:4:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11647,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11551,"src":"10263:4:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"skipToken","nodeType":"MemberAccess","referencedDeclaration":14271,"src":"10263:14:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":11649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10263:16:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"10256:23:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11651,"nodeType":"ExpressionStatement","src":"10256:23:77"}]}}]},"condition":{"hexValue":"74727565","id":11591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9223:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":11662,"nodeType":"WhileStatement","src":"9216:1210:77"}]},"functionSelector":"2f80bb1d","id":11664,"implemented":true,"kind":"function","modifiers":[],"name":"quoteExactOutput","nodeType":"FunctionDefinition","overrides":{"id":11555,"nodeType":"OverrideSpecifier","overrides":[],"src":"8837:8:77"},"parameters":{"id":11554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11551,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":11664,"src":"8763:17:77","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11550,"name":"bytes","nodeType":"ElementaryTypeName","src":"8763:5:77","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11553,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":11664,"src":"8790:17:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11552,"name":"uint256","nodeType":"ElementaryTypeName","src":"8790:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8753:60:77"},"returnParameters":{"id":11566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11557,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":11664,"src":"8876:16:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11556,"name":"uint256","nodeType":"ElementaryTypeName","src":"8876:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11560,"mutability":"mutable","name":"sqrtPriceX96AfterList","nodeType":"VariableDeclaration","scope":11664,"src":"8906:38:77","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[]"},"typeName":{"baseType":{"id":11558,"name":"uint160","nodeType":"ElementaryTypeName","src":"8906:7:77","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":11559,"nodeType":"ArrayTypeName","src":"8906:9:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}},"visibility":"internal"},{"constant":false,"id":11563,"mutability":"mutable","name":"initializedTicksCrossedList","nodeType":"VariableDeclaration","scope":11664,"src":"8958:43:77","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":11561,"name":"uint32","nodeType":"ElementaryTypeName","src":"8958:6:77","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":11562,"nodeType":"ArrayTypeName","src":"8958:8:77","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"},{"constant":false,"id":11565,"mutability":"mutable","name":"gasEstimate","nodeType":"VariableDeclaration","scope":11664,"src":"9015:19:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11564,"name":"uint256","nodeType":"ElementaryTypeName","src":"9015:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8862:182:77"},"scope":11665,"src":"8728:1704:77","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":11666,"src":"1269:9165:77"}],"src":"45:10390:77"},"id":77},"contracts/lens/TickLens.sol":{"ast":{"absolutePath":"contracts/lens/TickLens.sol","exportedSymbols":{"IAstraCLPool":[110],"IAstraCLPoolActions":[248],"IAstraCLPoolDerivedState":[279],"IAstraCLPoolEvents":[398],"IAstraCLPoolImmutables":[438],"IAstraCLPoolOwnerActions":[464],"IAstraCLPoolState":[572],"ITickLens":[10164],"TickLens":[11801]},"id":11802,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11667,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:78"},{"id":11668,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"70:19:78"},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","file":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","id":11669,"nodeType":"ImportDirective","scope":11802,"sourceUnit":111,"src":"144:69:78","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/ITickLens.sol","file":"../interfaces/ITickLens.sol","id":11670,"nodeType":"ImportDirective","scope":11802,"sourceUnit":10165,"src":"215:37:78","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11672,"name":"ITickLens","nodeType":"UserDefinedTypeName","referencedDeclaration":10164,"src":"305:9:78","typeDescriptions":{"typeIdentifier":"t_contract$_ITickLens_$10164","typeString":"contract ITickLens"}},"id":11673,"nodeType":"InheritanceSpecifier","src":"305:9:78"}],"contractDependencies":[10164],"contractKind":"contract","documentation":{"id":11671,"nodeType":"StructuredDocumentation","src":"254:30:78","text":"@title Tick Lens contract"},"fullyImplemented":true,"id":11801,"linearizedBaseContracts":[11801,10164],"name":"TickLens","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[10163],"body":{"id":11799,"nodeType":"Block","src":"512:1042:78","statements":[{"assignments":[11686],"declarations":[{"constant":false,"id":11686,"mutability":"mutable","name":"bitmap","nodeType":"VariableDeclaration","scope":11799,"src":"546:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11685,"name":"uint256","nodeType":"ElementaryTypeName","src":"546:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11693,"initialValue":{"arguments":[{"id":11691,"name":"tickBitmapIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11678,"src":"593:15:78","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int16","typeString":"int16"}],"expression":{"arguments":[{"id":11688,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11676,"src":"576:4:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11687,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"563:12:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":11689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"563:18:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":11690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickBitmap","nodeType":"MemberAccess","referencedDeclaration":541,"src":"563:29:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_int16_$returns$_t_uint256_$","typeString":"function (int16) view external returns (uint256)"}},"id":11692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"563:46:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"546:63:78"},{"assignments":[11695],"declarations":[{"constant":false,"id":11695,"mutability":"mutable","name":"numberOfPopulatedTicks","nodeType":"VariableDeclaration","scope":11799,"src":"671:30:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11694,"name":"uint256","nodeType":"ElementaryTypeName","src":"671:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11696,"nodeType":"VariableDeclarationStatement","src":"671:30:78"},{"body":{"id":11719,"nodeType":"Block","src":"745:76:78","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11707,"name":"bitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11686,"src":"763:6:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":11708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"773:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":11709,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11698,"src":"778:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"773:6:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11711,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"772:8:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"763:17:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"783:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"763:21:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11718,"nodeType":"IfStatement","src":"759:51:78","trueBody":{"expression":{"id":11716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"786:24:78","subExpression":{"id":11715,"name":"numberOfPopulatedTicks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11695,"src":"786:22:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11717,"nodeType":"ExpressionStatement","src":"786:24:78"}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11701,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11698,"src":"731:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"323536","id":11702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"735:3:78","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"src":"731:7:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11720,"initializationExpression":{"assignments":[11698],"declarations":[{"constant":false,"id":11698,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":11720,"src":"716:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11697,"name":"uint256","nodeType":"ElementaryTypeName","src":"716:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11700,"initialValue":{"hexValue":"30","id":11699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"728:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"716:13:78"},"loopExpression":{"expression":{"id":11705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"740:3:78","subExpression":{"id":11704,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11698,"src":"740:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11706,"nodeType":"ExpressionStatement","src":"740:3:78"},"nodeType":"ForStatement","src":"711:110:78"},{"assignments":[11722],"declarations":[{"constant":false,"id":11722,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":11799,"src":"868:17:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":11721,"name":"int24","nodeType":"ElementaryTypeName","src":"868:5:78","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":11728,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":11724,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11676,"src":"901:4:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11723,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"888:12:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":11725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"888:18:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":11726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":431,"src":"888:30:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_int24_$","typeString":"function () view external returns (int24)"}},"id":11727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"888:32:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"868:52:78"},{"expression":{"id":11735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11729,"name":"populatedTicks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11683,"src":"930:14:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PopulatedTick_$10152_memory_ptr_$dyn_memory_ptr","typeString":"struct ITickLens.PopulatedTick memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11733,"name":"numberOfPopulatedTicks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11695,"src":"967:22:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11732,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"947:19:78","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_PopulatedTick_$10152_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct ITickLens.PopulatedTick memory[] memory)"},"typeName":{"baseType":{"id":11730,"name":"PopulatedTick","nodeType":"UserDefinedTypeName","referencedDeclaration":10152,"src":"951:13:78","typeDescriptions":{"typeIdentifier":"t_struct$_PopulatedTick_$10152_storage_ptr","typeString":"struct ITickLens.PopulatedTick"}},"id":11731,"nodeType":"ArrayTypeName","src":"951:15:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PopulatedTick_$10152_storage_$dyn_storage_ptr","typeString":"struct ITickLens.PopulatedTick[]"}}},"id":11734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"947:43:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PopulatedTick_$10152_memory_ptr_$dyn_memory_ptr","typeString":"struct ITickLens.PopulatedTick memory[] memory"}},"src":"930:60:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PopulatedTick_$10152_memory_ptr_$dyn_memory_ptr","typeString":"struct ITickLens.PopulatedTick memory[] memory"}},"id":11736,"nodeType":"ExpressionStatement","src":"930:60:78"},{"body":{"id":11797,"nodeType":"Block","src":"1034:514:78","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11747,"name":"bitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11686,"src":"1052:6:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":11748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1062:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":11749,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11738,"src":"1067:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1062:6:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11751,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1061:8:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1052:17:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1072:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1052:21:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11796,"nodeType":"IfStatement","src":"1048:490:78","trueBody":{"id":11795,"nodeType":"Block","src":"1075:463:78","statements":[{"assignments":[11756],"declarations":[{"constant":false,"id":11756,"mutability":"mutable","name":"populatedTick","nodeType":"VariableDeclaration","scope":11795,"src":"1093:19:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":11755,"name":"int24","nodeType":"ElementaryTypeName","src":"1093:5:78","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":11772,"initialValue":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":11771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":11768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":11762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":11759,"name":"tickBitmapIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11678,"src":"1123:15:78","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int16","typeString":"int16"}],"id":11758,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1117:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":11757,"name":"int24","nodeType":"ElementaryTypeName","src":"1117:5:78","typeDescriptions":{}}},"id":11760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1117:22:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":11761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1143:1:78","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1117:27:78","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":11763,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1116:29:78","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"id":11766,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11738,"src":"1154:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1148:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":11764,"name":"int24","nodeType":"ElementaryTypeName","src":"1148:5:78","typeDescriptions":{}}},"id":11767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1148:8:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1116:40:78","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":11769,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1115:42:78","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11770,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11722,"src":"1160:11:78","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1115:56:78","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"1093:78:78"},{"assignments":[11774,11776,null,null,null,null,null,null],"declarations":[{"constant":false,"id":11774,"mutability":"mutable","name":"liquidityGross","nodeType":"VariableDeclaration","scope":11795,"src":"1190:22:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":11773,"name":"uint128","nodeType":"ElementaryTypeName","src":"1190:7:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":11776,"mutability":"mutable","name":"liquidityNet","nodeType":"VariableDeclaration","scope":11795,"src":"1214:19:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":11775,"name":"int128","nodeType":"ElementaryTypeName","src":"1214:6:78","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},null,null,null,null,null,null],"id":11783,"initialValue":{"arguments":[{"id":11781,"name":"populatedTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11756,"src":"1274:13:78","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"arguments":[{"id":11778,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11676,"src":"1262:4:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11777,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"1249:12:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":11779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1249:18:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":11780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ticks","nodeType":"MemberAccess","referencedDeclaration":533,"src":"1249:24:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_int24_$returns$_t_uint128_$_t_int128_$_t_uint256_$_t_uint256_$_t_int56_$_t_uint160_$_t_uint32_$_t_bool_$","typeString":"function (int24) view external returns (uint128,int128,uint256,uint256,int56,uint160,uint32,bool)"}},"id":11782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1249:39:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_int128_$_t_uint256_$_t_uint256_$_t_int56_$_t_uint160_$_t_uint32_$_t_bool_$","typeString":"tuple(uint128,int128,uint256,uint256,int56,uint160,uint32,bool)"}},"nodeType":"VariableDeclarationStatement","src":"1189:99:78"},{"expression":{"id":11793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11784,"name":"populatedTicks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11683,"src":"1306:14:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PopulatedTick_$10152_memory_ptr_$dyn_memory_ptr","typeString":"struct ITickLens.PopulatedTick memory[] memory"}},"id":11787,"indexExpression":{"id":11786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"1321:24:78","subExpression":{"id":11785,"name":"numberOfPopulatedTicks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11695,"src":"1323:22:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1306:40:78","typeDescriptions":{"typeIdentifier":"t_struct$_PopulatedTick_$10152_memory_ptr","typeString":"struct ITickLens.PopulatedTick memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11789,"name":"populatedTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11756,"src":"1391:13:78","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":11790,"name":"liquidityNet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11776,"src":"1440:12:78","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},{"id":11791,"name":"liquidityGross","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11774,"src":"1490:14:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int128","typeString":"int128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":11788,"name":"PopulatedTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"1349:13:78","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PopulatedTick_$10152_storage_ptr_$","typeString":"type(struct ITickLens.PopulatedTick storage pointer)"}},"id":11792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["tick","liquidityNet","liquidityGross"],"nodeType":"FunctionCall","src":"1349:174:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PopulatedTick_$10152_memory_ptr","typeString":"struct ITickLens.PopulatedTick memory"}},"src":"1306:217:78","typeDescriptions":{"typeIdentifier":"t_struct$_PopulatedTick_$10152_memory_ptr","typeString":"struct ITickLens.PopulatedTick memory"}},"id":11794,"nodeType":"ExpressionStatement","src":"1306:217:78"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11741,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11738,"src":"1020:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"323536","id":11742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1024:3:78","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"src":"1020:7:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11798,"initializationExpression":{"assignments":[11738],"declarations":[{"constant":false,"id":11738,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":11798,"src":"1005:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11737,"name":"uint256","nodeType":"ElementaryTypeName","src":"1005:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11740,"initialValue":{"hexValue":"30","id":11739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1017:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1005:13:78"},"loopExpression":{"expression":{"id":11745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1029:3:78","subExpression":{"id":11744,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11738,"src":"1029:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11746,"nodeType":"ExpressionStatement","src":"1029:3:78"},"nodeType":"ForStatement","src":"1000:548:78"}]},"documentation":{"id":11674,"nodeType":"StructuredDocumentation","src":"321:25:78","text":"@inheritdoc ITickLens"},"functionSelector":"351fb478","id":11800,"implemented":true,"kind":"function","modifiers":[],"name":"getPopulatedTicksInWord","nodeType":"FunctionDefinition","overrides":{"id":11680,"nodeType":"OverrideSpecifier","overrides":[],"src":"455:8:78"},"parameters":{"id":11679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11676,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":11800,"src":"393:12:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11675,"name":"address","nodeType":"ElementaryTypeName","src":"393:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11678,"mutability":"mutable","name":"tickBitmapIndex","nodeType":"VariableDeclaration","scope":11800,"src":"415:21:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":11677,"name":"int16","nodeType":"ElementaryTypeName","src":"415:5:78","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"383:59:78"},"returnParameters":{"id":11684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11683,"mutability":"mutable","name":"populatedTicks","nodeType":"VariableDeclaration","scope":11800,"src":"473:37:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PopulatedTick_$10152_memory_ptr_$dyn_memory_ptr","typeString":"struct ITickLens.PopulatedTick[]"},"typeName":{"baseType":{"id":11681,"name":"PopulatedTick","nodeType":"UserDefinedTypeName","referencedDeclaration":10152,"src":"473:13:78","typeDescriptions":{"typeIdentifier":"t_struct$_PopulatedTick_$10152_storage_ptr","typeString":"struct ITickLens.PopulatedTick"}},"id":11682,"nodeType":"ArrayTypeName","src":"473:15:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PopulatedTick_$10152_storage_$dyn_storage_ptr","typeString":"struct ITickLens.PopulatedTick[]"}},"visibility":"internal"}],"src":"472:39:78"},"scope":11801,"src":"351:1203:78","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":11802,"src":"284:1272:78"}],"src":"45:1512:78"},"id":78},"contracts/libraries/AddressStringUtil.sol":{"ast":{"absolutePath":"contracts/libraries/AddressStringUtil.sol","exportedSymbols":{"AddressStringUtil":[11944]},"id":11945,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11803,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:79"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":11944,"linearizedBaseContracts":[11944],"name":"AddressStringUtil","nodeType":"ContractDefinition","nodes":[{"body":{"id":11914,"nodeType":"Block","src":"300:704:79","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11813,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11807,"src":"318:3:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":11814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"324:1:79","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"318:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"329:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"318:12:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11818,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11807,"src":"334:3:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"340:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"334:7:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"318:23:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11822,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11807,"src":"345:3:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"3430","id":11823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"352:2:79","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},"src":"345:9:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"318:36:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"41646472657373537472696e675574696c3a20494e56414c49445f4c454e","id":11826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"356:32:79","typeDescriptions":{"typeIdentifier":"t_stringliteral_eab9febfbdce9e67c4279e4c2a77a43766d401ab3f3bd92cdff53b9ffd3f8f3f","typeString":"literal_string \"AddressStringUtil: INVALID_LEN\""},"value":"AddressStringUtil: INVALID_LEN"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_eab9febfbdce9e67c4279e4c2a77a43766d401ab3f3bd92cdff53b9ffd3f8f3f","typeString":"literal_string \"AddressStringUtil: INVALID_LEN\""}],"id":11812,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"310:7:79","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"310:79:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11828,"nodeType":"ExpressionStatement","src":"310:79:79"},{"assignments":[11830],"declarations":[{"constant":false,"id":11830,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":11914,"src":"400:14:79","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11829,"name":"bytes","nodeType":"ElementaryTypeName","src":"400:5:79","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":11835,"initialValue":{"arguments":[{"id":11833,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11807,"src":"427:3:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11832,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"417:9:79","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":11831,"name":"bytes","nodeType":"ElementaryTypeName","src":"421:5:79","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":11834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"417:14:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"400:31:79"},{"assignments":[11837],"declarations":[{"constant":false,"id":11837,"mutability":"mutable","name":"addrNum","nodeType":"VariableDeclaration","scope":11914,"src":"441:15:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11836,"name":"uint256","nodeType":"ElementaryTypeName","src":"441:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11842,"initialValue":{"arguments":[{"id":11840,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11805,"src":"467:4:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11839,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"459:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11838,"name":"uint256","nodeType":"ElementaryTypeName","src":"459:7:79","typeDescriptions":{}}},"id":11841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"459:13:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"441:31:79"},{"body":{"id":11907,"nodeType":"Block","src":"520:452:79","statements":[{"assignments":[11856],"declarations":[{"constant":false,"id":11856,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":11907,"src":"646:7:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":11855,"name":"uint8","nodeType":"ElementaryTypeName","src":"646:5:79","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":11869,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11859,"name":"addrNum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11837,"src":"662:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"38","id":11860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"674:1:79","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3139","id":11861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"679:2:79","typeDescriptions":{"typeIdentifier":"t_rational_19_by_1","typeString":"int_const 19"},"value":"19"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11862,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11844,"src":"684:1:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"679:6:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11864,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"678:8:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"674:12:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11866,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"673:14:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"662:25:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11858,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"656:5:79","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":11857,"name":"uint8","nodeType":"ElementaryTypeName","src":"656:5:79","typeDescriptions":{}}},"id":11868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"656:32:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"646:42:79"},{"assignments":[11871],"declarations":[{"constant":false,"id":11871,"mutability":"mutable","name":"hi","nodeType":"VariableDeclaration","scope":11907,"src":"768:8:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":11870,"name":"uint8","nodeType":"ElementaryTypeName","src":"768:5:79","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":11875,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":11874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11872,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11856,"src":"779:1:79","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":11873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"784:1:79","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"779:6:79","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"768:17:79"},{"assignments":[11877],"declarations":[{"constant":false,"id":11877,"mutability":"mutable","name":"lo","nodeType":"VariableDeclaration","scope":11907,"src":"867:8:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":11876,"name":"uint8","nodeType":"ElementaryTypeName","src":"867:5:79","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":11884,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":11883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11878,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11856,"src":"878:1:79","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":11881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11879,"name":"hi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11871,"src":"883:2:79","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":11880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"889:1:79","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"883:7:79","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":11882,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"882:9:79","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"878:13:79","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"867:24:79"},{"expression":{"id":11893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11885,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11830,"src":"905:1:79","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11889,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":11886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"907:1:79","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11887,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11844,"src":"911:1:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"907:5:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"905:8:79","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11891,"name":"hi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11871,"src":"921:2:79","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":11890,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11943,"src":"916:4:79","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_bytes1_$","typeString":"function (uint8) pure returns (bytes1)"}},"id":11892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"916:8:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"905:19:79","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":11894,"nodeType":"ExpressionStatement","src":"905:19:79"},{"expression":{"id":11905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11895,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11830,"src":"938:1:79","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11901,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":11896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"940:1:79","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11897,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11844,"src":"944:1:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"940:5:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":11899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"948:1:79","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"940:9:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"938:12:79","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11903,"name":"lo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11877,"src":"958:2:79","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":11902,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11943,"src":"953:4:79","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_bytes1_$","typeString":"function (uint8) pure returns (bytes1)"}},"id":11904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"953:8:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"938:23:79","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":11906,"nodeType":"ExpressionStatement","src":"938:23:79"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11847,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11844,"src":"502:1:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11848,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11807,"src":"506:3:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":11849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"512:1:79","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"506:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"502:11:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11908,"initializationExpression":{"assignments":[11844],"declarations":[{"constant":false,"id":11844,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":11908,"src":"487:9:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11843,"name":"uint256","nodeType":"ElementaryTypeName","src":"487:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11846,"initialValue":{"hexValue":"30","id":11845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"499:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"487:13:79"},"loopExpression":{"expression":{"id":11853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"515:3:79","subExpression":{"id":11852,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11844,"src":"515:1:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11854,"nodeType":"ExpressionStatement","src":"515:3:79"},"nodeType":"ForStatement","src":"482:490:79"},{"expression":{"arguments":[{"id":11911,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11830,"src":"995:1:79","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11910,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"988:6:79","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":11909,"name":"string","nodeType":"ElementaryTypeName","src":"988:6:79","typeDescriptions":{}}},"id":11912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"988:9:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":11811,"id":11913,"nodeType":"Return","src":"981:16:79"}]},"id":11915,"implemented":true,"kind":"function","modifiers":[],"name":"toAsciiString","nodeType":"FunctionDefinition","parameters":{"id":11808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11805,"mutability":"mutable","name":"addr","nodeType":"VariableDeclaration","scope":11915,"src":"235:12:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11804,"name":"address","nodeType":"ElementaryTypeName","src":"235:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11807,"mutability":"mutable","name":"len","nodeType":"VariableDeclaration","scope":11915,"src":"249:11:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11806,"name":"uint256","nodeType":"ElementaryTypeName","src":"249:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"234:27:79"},"returnParameters":{"id":11811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11810,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11915,"src":"285:13:79","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11809,"name":"string","nodeType":"ElementaryTypeName","src":"285:6:79","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"284:15:79"},"scope":11944,"src":"212:792:79","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11942,"nodeType":"Block","src":"1261:130:79","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":11924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11922,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11917,"src":"1275:1:79","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3130","id":11923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1279:2:79","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1275:6:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11940,"nodeType":"Block","src":"1337:48:79","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":11937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11935,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11917,"src":"1365:1:79","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"30783337","id":11936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1369:4:79","typeDescriptions":{"typeIdentifier":"t_rational_55_by_1","typeString":"int_const 55"},"value":"0x37"},"src":"1365:8:79","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":11934,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1358:6:79","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":11933,"name":"bytes1","nodeType":"ElementaryTypeName","src":"1358:6:79","typeDescriptions":{}}},"id":11938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1358:16:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"functionReturnParameters":11921,"id":11939,"nodeType":"Return","src":"1351:23:79"}]},"id":11941,"nodeType":"IfStatement","src":"1271:114:79","trueBody":{"id":11932,"nodeType":"Block","src":"1283:48:79","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":11929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11927,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11917,"src":"1311:1:79","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"30783330","id":11928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1315:4:79","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"0x30"},"src":"1311:8:79","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":11926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1304:6:79","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":11925,"name":"bytes1","nodeType":"ElementaryTypeName","src":"1304:6:79","typeDescriptions":{}}},"id":11930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1304:16:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"functionReturnParameters":11921,"id":11931,"nodeType":"Return","src":"1297:23:79"}]}}]},"id":11943,"implemented":true,"kind":"function","modifiers":[],"name":"char","nodeType":"FunctionDefinition","parameters":{"id":11918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11917,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":11943,"src":"1220:7:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":11916,"name":"uint8","nodeType":"ElementaryTypeName","src":"1220:5:79","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1219:9:79"},"returnParameters":{"id":11921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11920,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":11943,"src":"1251:8:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":11919,"name":"bytes1","nodeType":"ElementaryTypeName","src":"1251:6:79","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"src":"1250:10:79"},"scope":11944,"src":"1206:185:79","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":11945,"src":"72:1321:79"}],"src":"46:1348:79"},"id":79},"contracts/libraries/BytesLib.sol":{"ast":{"absolutePath":"contracts/libraries/BytesLib.sol","exportedSymbols":{"BytesLib":[12063]},"id":12064,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11946,"literals":["solidity",">=","0.5",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"343:31:80"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":12063,"linearizedBaseContracts":[12063],"name":"BytesLib","nodeType":"ContractDefinition","nodes":[{"body":{"id":11991,"nodeType":"Block","src":"505:2703:80","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11958,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11952,"src":"523:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3331","id":11959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"533:2:80","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"31"},"src":"523:12:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":11961,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11952,"src":"539:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"523:23:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"736c6963655f6f766572666c6f77","id":11963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"548:16:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_5d3d629f76473d94377d221b1f1c8f2161f7b65cab69e095662ec5d0e026c17e","typeString":"literal_string \"slice_overflow\""},"value":"slice_overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5d3d629f76473d94377d221b1f1c8f2161f7b65cab69e095662ec5d0e026c17e","typeString":"literal_string \"slice_overflow\""}],"id":11957,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"515:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"515:50:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11965,"nodeType":"ExpressionStatement","src":"515:50:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11967,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11950,"src":"583:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":11968,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11952,"src":"592:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"583:16:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":11970,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11950,"src":"603:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"583:26:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"736c6963655f6f766572666c6f77","id":11972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"611:16:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_5d3d629f76473d94377d221b1f1c8f2161f7b65cab69e095662ec5d0e026c17e","typeString":"literal_string \"slice_overflow\""},"value":"slice_overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5d3d629f76473d94377d221b1f1c8f2161f7b65cab69e095662ec5d0e026c17e","typeString":"literal_string \"slice_overflow\""}],"id":11966,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"575:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"575:53:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11974,"nodeType":"ExpressionStatement","src":"575:53:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11976,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11948,"src":"646:6:80","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"646:13:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11978,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11950,"src":"663:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":11979,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11952,"src":"672:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"663:16:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"646:33:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"736c6963655f6f75744f66426f756e6473","id":11982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"681:19:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_cca2258dcc0d08c244435525255fbef9116c9a31b4c29471218f002bbbceb7a0","typeString":"literal_string \"slice_outOfBounds\""},"value":"slice_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cca2258dcc0d08c244435525255fbef9116c9a31b4c29471218f002bbbceb7a0","typeString":"literal_string \"slice_outOfBounds\""}],"id":11975,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"638:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"638:63:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11984,"nodeType":"ExpressionStatement","src":"638:63:80"},{"assignments":[11986],"declarations":[{"constant":false,"id":11986,"mutability":"mutable","name":"tempBytes","nodeType":"VariableDeclaration","scope":11991,"src":"712:22:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11985,"name":"bytes","nodeType":"ElementaryTypeName","src":"712:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":11987,"nodeType":"VariableDeclarationStatement","src":"712:22:80"},{"AST":{"nodeType":"YulBlock","src":"754:2421:80","statements":[{"cases":[{"body":{"nodeType":"YulBlock","src":"810:1960:80","statements":[{"nodeType":"YulAssignment","src":"966:24:80","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"985:4:80","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"979:5:80"},"nodeType":"YulFunctionCall","src":"979:11:80"},"variableNames":[{"name":"tempBytes","nodeType":"YulIdentifier","src":"966:9:80"}]},{"nodeType":"YulVariableDeclaration","src":"1614:33:80","value":{"arguments":[{"name":"_length","nodeType":"YulIdentifier","src":"1635:7:80"},{"kind":"number","nodeType":"YulLiteral","src":"1644:2:80","type":"","value":"31"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1631:3:80"},"nodeType":"YulFunctionCall","src":"1631:16:80"},"variables":[{"name":"lengthmod","nodeType":"YulTypedName","src":"1618:9:80","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1968:70:80","value":{"arguments":[{"arguments":[{"name":"tempBytes","nodeType":"YulIdentifier","src":"1986:9:80"},{"name":"lengthmod","nodeType":"YulIdentifier","src":"1997:9:80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1982:3:80"},"nodeType":"YulFunctionCall","src":"1982:25:80"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2013:4:80","type":"","value":"0x20"},{"arguments":[{"name":"lengthmod","nodeType":"YulIdentifier","src":"2026:9:80"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2019:6:80"},"nodeType":"YulFunctionCall","src":"2019:17:80"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2009:3:80"},"nodeType":"YulFunctionCall","src":"2009:28:80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1978:3:80"},"nodeType":"YulFunctionCall","src":"1978:60:80"},"variables":[{"name":"mc","nodeType":"YulTypedName","src":"1972:2:80","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2055:27:80","value":{"arguments":[{"name":"mc","nodeType":"YulIdentifier","src":"2070:2:80"},{"name":"_length","nodeType":"YulIdentifier","src":"2074:7:80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2066:3:80"},"nodeType":"YulFunctionCall","src":"2066:16:80"},"variables":[{"name":"end","nodeType":"YulTypedName","src":"2059:3:80","type":""}]},{"body":{"nodeType":"YulBlock","src":"2464:61:80","statements":[{"expression":{"arguments":[{"name":"mc","nodeType":"YulIdentifier","src":"2493:2:80"},{"arguments":[{"name":"cc","nodeType":"YulIdentifier","src":"2503:2:80"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2497:5:80"},"nodeType":"YulFunctionCall","src":"2497:9:80"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2486:6:80"},"nodeType":"YulFunctionCall","src":"2486:21:80"},"nodeType":"YulExpressionStatement","src":"2486:21:80"}]},"condition":{"arguments":[{"name":"mc","nodeType":"YulIdentifier","src":"2355:2:80"},{"name":"end","nodeType":"YulIdentifier","src":"2359:3:80"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2352:2:80"},"nodeType":"YulFunctionCall","src":"2352:11:80"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2364:99:80","statements":[{"nodeType":"YulAssignment","src":"2386:19:80","value":{"arguments":[{"name":"mc","nodeType":"YulIdentifier","src":"2396:2:80"},{"kind":"number","nodeType":"YulLiteral","src":"2400:4:80","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2392:3:80"},"nodeType":"YulFunctionCall","src":"2392:13:80"},"variableNames":[{"name":"mc","nodeType":"YulIdentifier","src":"2386:2:80"}]},{"nodeType":"YulAssignment","src":"2426:19:80","value":{"arguments":[{"name":"cc","nodeType":"YulIdentifier","src":"2436:2:80"},{"kind":"number","nodeType":"YulLiteral","src":"2440:4:80","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2432:3:80"},"nodeType":"YulFunctionCall","src":"2432:13:80"},"variableNames":[{"name":"cc","nodeType":"YulIdentifier","src":"2426:2:80"}]}]},"pre":{"nodeType":"YulBlock","src":"2104:247:80","statements":[{"nodeType":"YulVariableDeclaration","src":"2253:80:80","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nodeType":"YulIdentifier","src":"2275:6:80"},{"name":"lengthmod","nodeType":"YulIdentifier","src":"2283:9:80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2271:3:80"},"nodeType":"YulFunctionCall","src":"2271:22:80"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2299:4:80","type":"","value":"0x20"},{"arguments":[{"name":"lengthmod","nodeType":"YulIdentifier","src":"2312:9:80"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2305:6:80"},"nodeType":"YulFunctionCall","src":"2305:17:80"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2295:3:80"},"nodeType":"YulFunctionCall","src":"2295:28:80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2267:3:80"},"nodeType":"YulFunctionCall","src":"2267:57:80"},{"name":"_start","nodeType":"YulIdentifier","src":"2326:6:80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2263:3:80"},"nodeType":"YulFunctionCall","src":"2263:70:80"},"variables":[{"name":"cc","nodeType":"YulTypedName","src":"2257:2:80","type":""}]}]},"src":"2100:425:80"},{"expression":{"arguments":[{"name":"tempBytes","nodeType":"YulIdentifier","src":"2550:9:80"},{"name":"_length","nodeType":"YulIdentifier","src":"2561:7:80"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2543:6:80"},"nodeType":"YulFunctionCall","src":"2543:26:80"},"nodeType":"YulExpressionStatement","src":"2543:26:80"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2724:4:80","type":"","value":"0x40"},{"arguments":[{"arguments":[{"name":"mc","nodeType":"YulIdentifier","src":"2738:2:80"},{"kind":"number","nodeType":"YulLiteral","src":"2742:2:80","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2734:3:80"},"nodeType":"YulFunctionCall","src":"2734:11:80"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2751:2:80","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2747:3:80"},"nodeType":"YulFunctionCall","src":"2747:7:80"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2730:3:80"},"nodeType":"YulFunctionCall","src":"2730:25:80"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2717:6:80"},"nodeType":"YulFunctionCall","src":"2717:39:80"},"nodeType":"YulExpressionStatement","src":"2717:39:80"}]},"nodeType":"YulCase","src":"803:1967:80","value":{"kind":"number","nodeType":"YulLiteral","src":"808:1:80","type":"","value":"0"}},{"body":{"nodeType":"YulBlock","src":"2874:291:80","statements":[{"nodeType":"YulAssignment","src":"2892:24:80","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2911:4:80","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2905:5:80"},"nodeType":"YulFunctionCall","src":"2905:11:80"},"variableNames":[{"name":"tempBytes","nodeType":"YulIdentifier","src":"2892:9:80"}]},{"expression":{"arguments":[{"name":"tempBytes","nodeType":"YulIdentifier","src":"3086:9:80"},{"kind":"number","nodeType":"YulLiteral","src":"3097:1:80","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3079:6:80"},"nodeType":"YulFunctionCall","src":"3079:20:80"},"nodeType":"YulExpressionStatement","src":"3079:20:80"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3124:4:80","type":"","value":"0x40"},{"arguments":[{"name":"tempBytes","nodeType":"YulIdentifier","src":"3134:9:80"},{"kind":"number","nodeType":"YulLiteral","src":"3145:4:80","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3130:3:80"},"nodeType":"YulFunctionCall","src":"3130:20:80"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3117:6:80"},"nodeType":"YulFunctionCall","src":"3117:34:80"},"nodeType":"YulExpressionStatement","src":"3117:34:80"}]},"nodeType":"YulCase","src":"2866:299:80","value":"default"}],"expression":{"arguments":[{"name":"_length","nodeType":"YulIdentifier","src":"782:7:80"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"775:6:80"},"nodeType":"YulFunctionCall","src":"775:15:80"},"nodeType":"YulSwitch","src":"768:2397:80"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":11948,"isOffset":false,"isSlot":false,"src":"2275:6:80","valueSize":1},{"declaration":11952,"isOffset":false,"isSlot":false,"src":"1635:7:80","valueSize":1},{"declaration":11952,"isOffset":false,"isSlot":false,"src":"2074:7:80","valueSize":1},{"declaration":11952,"isOffset":false,"isSlot":false,"src":"2561:7:80","valueSize":1},{"declaration":11952,"isOffset":false,"isSlot":false,"src":"782:7:80","valueSize":1},{"declaration":11950,"isOffset":false,"isSlot":false,"src":"2326:6:80","valueSize":1},{"declaration":11986,"isOffset":false,"isSlot":false,"src":"1986:9:80","valueSize":1},{"declaration":11986,"isOffset":false,"isSlot":false,"src":"2550:9:80","valueSize":1},{"declaration":11986,"isOffset":false,"isSlot":false,"src":"2892:9:80","valueSize":1},{"declaration":11986,"isOffset":false,"isSlot":false,"src":"3086:9:80","valueSize":1},{"declaration":11986,"isOffset":false,"isSlot":false,"src":"3134:9:80","valueSize":1},{"declaration":11986,"isOffset":false,"isSlot":false,"src":"966:9:80","valueSize":1}],"id":11988,"nodeType":"InlineAssembly","src":"745:2430:80"},{"expression":{"id":11989,"name":"tempBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11986,"src":"3192:9:80","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11956,"id":11990,"nodeType":"Return","src":"3185:16:80"}]},"id":11992,"implemented":true,"kind":"function","modifiers":[],"name":"slice","nodeType":"FunctionDefinition","parameters":{"id":11953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11948,"mutability":"mutable","name":"_bytes","nodeType":"VariableDeclaration","scope":11992,"src":"414:19:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11947,"name":"bytes","nodeType":"ElementaryTypeName","src":"414:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11950,"mutability":"mutable","name":"_start","nodeType":"VariableDeclaration","scope":11992,"src":"435:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11949,"name":"uint256","nodeType":"ElementaryTypeName","src":"435:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11952,"mutability":"mutable","name":"_length","nodeType":"VariableDeclaration","scope":11992,"src":"451:15:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11951,"name":"uint256","nodeType":"ElementaryTypeName","src":"451:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"413:54:80"},"returnParameters":{"id":11956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11955,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11992,"src":"491:12:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11954,"name":"bytes","nodeType":"ElementaryTypeName","src":"491:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"490:14:80"},"scope":12063,"src":"399:2809:80","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12026,"nodeType":"Block","src":"3302:328:80","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12002,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11996,"src":"3320:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3230","id":12003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3329:2:80","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"3320:11:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":12005,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11996,"src":"3335:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3320:21:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f416464726573735f6f766572666c6f77","id":12007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3343:20:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_f71efb0937d5d9d75bbebe9d7207dad811fd47ced903ea9404d5e8d77eb17a95","typeString":"literal_string \"toAddress_overflow\""},"value":"toAddress_overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f71efb0937d5d9d75bbebe9d7207dad811fd47ced903ea9404d5e8d77eb17a95","typeString":"literal_string \"toAddress_overflow\""}],"id":12001,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3312:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3312:52:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12009,"nodeType":"ExpressionStatement","src":"3312:52:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12011,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11994,"src":"3382:6:80","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3382:13:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12013,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11996,"src":"3399:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3230","id":12014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3408:2:80","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"3399:11:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3382:28:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f416464726573735f6f75744f66426f756e6473","id":12017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3412:23:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f688071e1df0f70b63e3651005878331be1fe9591d6cfb3187cb52a13439e5d","typeString":"literal_string \"toAddress_outOfBounds\""},"value":"toAddress_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f688071e1df0f70b63e3651005878331be1fe9591d6cfb3187cb52a13439e5d","typeString":"literal_string \"toAddress_outOfBounds\""}],"id":12010,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3374:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3374:62:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12019,"nodeType":"ExpressionStatement","src":"3374:62:80"},{"assignments":[12021],"declarations":[{"constant":false,"id":12021,"mutability":"mutable","name":"tempAddress","nodeType":"VariableDeclaration","scope":12026,"src":"3446:19:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12020,"name":"address","nodeType":"ElementaryTypeName","src":"3446:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12022,"nodeType":"VariableDeclarationStatement","src":"3446:19:80"},{"AST":{"nodeType":"YulBlock","src":"3485:110:80","statements":[{"nodeType":"YulAssignment","src":"3499:86:80","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nodeType":"YulIdentifier","src":"3532:6:80"},{"kind":"number","nodeType":"YulLiteral","src":"3540:4:80","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3528:3:80"},"nodeType":"YulFunctionCall","src":"3528:17:80"},{"name":"_start","nodeType":"YulIdentifier","src":"3547:6:80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3524:3:80"},"nodeType":"YulFunctionCall","src":"3524:30:80"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3518:5:80"},"nodeType":"YulFunctionCall","src":"3518:37:80"},{"kind":"number","nodeType":"YulLiteral","src":"3557:27:80","type":"","value":"0x1000000000000000000000000"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3514:3:80"},"nodeType":"YulFunctionCall","src":"3514:71:80"},"variableNames":[{"name":"tempAddress","nodeType":"YulIdentifier","src":"3499:11:80"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":11994,"isOffset":false,"isSlot":false,"src":"3532:6:80","valueSize":1},{"declaration":11996,"isOffset":false,"isSlot":false,"src":"3547:6:80","valueSize":1},{"declaration":12021,"isOffset":false,"isSlot":false,"src":"3499:11:80","valueSize":1}],"id":12023,"nodeType":"InlineAssembly","src":"3476:119:80"},{"expression":{"id":12024,"name":"tempAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12021,"src":"3612:11:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":12000,"id":12025,"nodeType":"Return","src":"3605:18:80"}]},"id":12027,"implemented":true,"kind":"function","modifiers":[],"name":"toAddress","nodeType":"FunctionDefinition","parameters":{"id":11997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11994,"mutability":"mutable","name":"_bytes","nodeType":"VariableDeclaration","scope":12027,"src":"3233:19:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11993,"name":"bytes","nodeType":"ElementaryTypeName","src":"3233:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11996,"mutability":"mutable","name":"_start","nodeType":"VariableDeclaration","scope":12027,"src":"3254:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11995,"name":"uint256","nodeType":"ElementaryTypeName","src":"3254:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3232:37:80"},"returnParameters":{"id":12000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11999,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12027,"src":"3293:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11998,"name":"address","nodeType":"ElementaryTypeName","src":"3293:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3292:9:80"},"scope":12063,"src":"3214:416:80","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12061,"nodeType":"Block","src":"3722:279:80","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12037,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12031,"src":"3740:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"33","id":12038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3749:1:80","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"3740:10:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":12040,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12031,"src":"3754:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3740:20:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e7432345f6f766572666c6f77","id":12042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3762:19:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_428a8ba368fc474210479d5009a3c2ddaf9d762393b1b3cd3cf1b440d48791c5","typeString":"literal_string \"toUint24_overflow\""},"value":"toUint24_overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_428a8ba368fc474210479d5009a3c2ddaf9d762393b1b3cd3cf1b440d48791c5","typeString":"literal_string \"toUint24_overflow\""}],"id":12036,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3732:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3732:50:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12044,"nodeType":"ExpressionStatement","src":"3732:50:80"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12046,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12029,"src":"3800:6:80","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3800:13:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12048,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12031,"src":"3817:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"33","id":12049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3826:1:80","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"3817:10:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3800:27:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e7432345f6f75744f66426f756e6473","id":12052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3829:22:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_92c5fac6e5cb4f75ffccd9c8f373ae2e2c333a8b9c2fdc616c52c36fa31575dc","typeString":"literal_string \"toUint24_outOfBounds\""},"value":"toUint24_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_92c5fac6e5cb4f75ffccd9c8f373ae2e2c333a8b9c2fdc616c52c36fa31575dc","typeString":"literal_string \"toUint24_outOfBounds\""}],"id":12045,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3792:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3792:60:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12054,"nodeType":"ExpressionStatement","src":"3792:60:80"},{"assignments":[12056],"declarations":[{"constant":false,"id":12056,"mutability":"mutable","name":"tempUint","nodeType":"VariableDeclaration","scope":12061,"src":"3862:15:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":12055,"name":"uint24","nodeType":"ElementaryTypeName","src":"3862:6:80","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"id":12057,"nodeType":"VariableDeclarationStatement","src":"3862:15:80"},{"AST":{"nodeType":"YulBlock","src":"3897:72:80","statements":[{"nodeType":"YulAssignment","src":"3911:48:80","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nodeType":"YulIdentifier","src":"3937:6:80"},{"kind":"number","nodeType":"YulLiteral","src":"3945:3:80","type":"","value":"0x3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3933:3:80"},"nodeType":"YulFunctionCall","src":"3933:16:80"},{"name":"_start","nodeType":"YulIdentifier","src":"3951:6:80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3929:3:80"},"nodeType":"YulFunctionCall","src":"3929:29:80"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3923:5:80"},"nodeType":"YulFunctionCall","src":"3923:36:80"},"variableNames":[{"name":"tempUint","nodeType":"YulIdentifier","src":"3911:8:80"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":12029,"isOffset":false,"isSlot":false,"src":"3937:6:80","valueSize":1},{"declaration":12031,"isOffset":false,"isSlot":false,"src":"3951:6:80","valueSize":1},{"declaration":12056,"isOffset":false,"isSlot":false,"src":"3911:8:80","valueSize":1}],"id":12058,"nodeType":"InlineAssembly","src":"3888:81:80"},{"expression":{"id":12059,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12056,"src":"3986:8:80","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"functionReturnParameters":12035,"id":12060,"nodeType":"Return","src":"3979:15:80"}]},"id":12062,"implemented":true,"kind":"function","modifiers":[],"name":"toUint24","nodeType":"FunctionDefinition","parameters":{"id":12032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12029,"mutability":"mutable","name":"_bytes","nodeType":"VariableDeclaration","scope":12062,"src":"3654:19:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12028,"name":"bytes","nodeType":"ElementaryTypeName","src":"3654:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":12031,"mutability":"mutable","name":"_start","nodeType":"VariableDeclaration","scope":12062,"src":"3675:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12030,"name":"uint256","nodeType":"ElementaryTypeName","src":"3675:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3653:37:80"},"returnParameters":{"id":12035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12034,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12062,"src":"3714:6:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":12033,"name":"uint24","nodeType":"ElementaryTypeName","src":"3714:6:80","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"3713:8:80"},"scope":12063,"src":"3636:365:80","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":12064,"src":"376:3627:80"}],"src":"343:3661:80"},"id":80},"contracts/libraries/CallbackValidation.sol":{"ast":{"absolutePath":"contracts/libraries/CallbackValidation.sol","exportedSymbols":{"CallbackValidation":[12125],"IAstraCLPool":[110],"IAstraCLPoolActions":[248],"IAstraCLPoolDerivedState":[279],"IAstraCLPoolEvents":[398],"IAstraCLPoolImmutables":[438],"IAstraCLPoolOwnerActions":[464],"IAstraCLPoolState":[572],"PoolAddress":[14364]},"id":12126,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12065,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:81"},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","file":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","id":12066,"nodeType":"ImportDirective","scope":12126,"sourceUnit":111,"src":"123:69:81","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/PoolAddress.sol","file":"./PoolAddress.sol","id":12067,"nodeType":"ImportDirective","scope":12126,"sourceUnit":14365,"src":"193:27:81","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":12068,"nodeType":"StructuredDocumentation","src":"222:69:81","text":"@notice Provides validation for callbacks from AstraDEX CL Pools"},"fullyImplemented":true,"id":12125,"linearizedBaseContracts":[12125],"name":"CallbackValidation","nodeType":"ContractDefinition","nodes":[{"body":{"id":12092,"nodeType":"Block","src":"907:92:81","statements":[{"expression":{"arguments":[{"id":12083,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12071,"src":"939:7:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":12086,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12073,"src":"971:6:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12087,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12075,"src":"979:6:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12088,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12077,"src":"987:3:81","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":12084,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14364,"src":"948:11:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$14364_$","typeString":"type(library PoolAddress)"}},"id":12085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPoolKey","nodeType":"MemberAccess","referencedDeclaration":14316,"src":"948:22:81","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_uint24_$returns$_t_struct$_PoolKey_$14285_memory_ptr_$","typeString":"function (address,address,uint24) pure returns (struct PoolAddress.PoolKey memory)"}},"id":12089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"948:43:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"id":12082,"name":"verifyCallback","nodeType":"Identifier","overloadedDeclarations":[12093,12124],"referencedDeclaration":12124,"src":"924:14:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_struct$_PoolKey_$14285_memory_ptr_$returns$_t_contract$_IAstraCLPool_$110_$","typeString":"function (address,struct PoolAddress.PoolKey memory) view returns (contract IAstraCLPool)"}},"id":12090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"924:68:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"functionReturnParameters":12081,"id":12091,"nodeType":"Return","src":"917:75:81"}]},"documentation":{"id":12069,"nodeType":"StructuredDocumentation","src":"324:413:81","text":"@notice Returns the address of a valid AstraDEX CL Pool\n @param factory The contract address of the AstraDEX CL factory\n @param tokenA The contract address of either token0 or token1\n @param tokenB The contract address of the other token\n @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n @return pool The CL pool contract address"},"id":12093,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallback","nodeType":"FunctionDefinition","parameters":{"id":12078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12071,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":12093,"src":"775:15:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12070,"name":"address","nodeType":"ElementaryTypeName","src":"775:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12073,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":12093,"src":"800:14:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12072,"name":"address","nodeType":"ElementaryTypeName","src":"800:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12075,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":12093,"src":"824:14:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12074,"name":"address","nodeType":"ElementaryTypeName","src":"824:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12077,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":12093,"src":"848:10:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":12076,"name":"uint24","nodeType":"ElementaryTypeName","src":"848:6:81","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"765:99:81"},"returnParameters":{"id":12081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12080,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":12093,"src":"888:17:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":12079,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"888:12:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"}],"src":"887:19:81"},"scope":12125,"src":"742:257:81","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12123,"nodeType":"Block","src":"1389:128:81","statements":[{"expression":{"id":12111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12103,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12101,"src":"1399:4:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":12107,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12096,"src":"1446:7:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12108,"name":"poolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12098,"src":"1455:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":12105,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14364,"src":"1419:11:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$14364_$","typeString":"type(library PoolAddress)"}},"id":12106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":14363,"src":"1419:26:81","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$14285_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":12109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1419:44:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12104,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"1406:12:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":12110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1406:58:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"src":"1399:65:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":12112,"nodeType":"ExpressionStatement","src":"1399:65:81"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12114,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1482:3:81","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1482:10:81","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":12118,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12101,"src":"1504:4:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}],"id":12117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1496:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12116,"name":"address","nodeType":"ElementaryTypeName","src":"1496:7:81","typeDescriptions":{}}},"id":12119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1496:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1482:27:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12113,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1474:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1474:36:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12122,"nodeType":"ExpressionStatement","src":"1474:36:81"}]},"documentation":{"id":12094,"nodeType":"StructuredDocumentation","src":"1005:238:81","text":"@notice Returns the address of a valid AstraDEX CL Pool\n @param factory The contract address of the AstraDEX CL factory\n @param poolKey The identifying key of the CL pool\n @return pool The CL pool contract address"},"id":12124,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallback","nodeType":"FunctionDefinition","parameters":{"id":12099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12096,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":12124,"src":"1281:15:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12095,"name":"address","nodeType":"ElementaryTypeName","src":"1281:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12098,"mutability":"mutable","name":"poolKey","nodeType":"VariableDeclaration","scope":12124,"src":"1306:34:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":12097,"name":"PoolAddress.PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":14285,"src":"1306:19:81","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"src":"1271:75:81"},"returnParameters":{"id":12102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12101,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":12124,"src":"1370:17:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":12100,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"1370:12:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"}],"src":"1369:19:81"},"scope":12125,"src":"1248:269:81","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":12126,"src":"291:1228:81"}],"src":"45:1475:81"},"id":81},"contracts/libraries/ChainId.sol":{"ast":{"absolutePath":"contracts/libraries/ChainId.sol","exportedSymbols":{"ChainId":[12137]},"id":12138,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12127,"literals":["solidity",">=","0.7",".0"],"nodeType":"PragmaDirective","src":"45:24:82"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":12128,"nodeType":"StructuredDocumentation","src":"71:53:82","text":"@title Function for getting the current chain ID"},"fullyImplemented":true,"id":12137,"linearizedBaseContracts":[12137],"name":"ChainId","nodeType":"ContractDefinition","nodes":[{"body":{"id":12135,"nodeType":"Block","src":"285:69:82","statements":[{"AST":{"nodeType":"YulBlock","src":"304:44:82","statements":[{"nodeType":"YulAssignment","src":"318:20:82","value":{"arguments":[],"functionName":{"name":"chainid","nodeType":"YulIdentifier","src":"329:7:82"},"nodeType":"YulFunctionCall","src":"329:9:82"},"variableNames":[{"name":"chainId","nodeType":"YulIdentifier","src":"318:7:82"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":12132,"isOffset":false,"isSlot":false,"src":"318:7:82","valueSize":1}],"id":12134,"nodeType":"InlineAssembly","src":"295:53:82"}]},"documentation":{"id":12129,"nodeType":"StructuredDocumentation","src":"146:79:82","text":"@dev Gets the current chain ID\n @return chainId The current chain ID"},"id":12136,"implemented":true,"kind":"function","modifiers":[],"name":"get","nodeType":"FunctionDefinition","parameters":{"id":12130,"nodeType":"ParameterList","parameters":[],"src":"242:2:82"},"returnParameters":{"id":12133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12132,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":12136,"src":"268:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12131,"name":"uint256","nodeType":"ElementaryTypeName","src":"268:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"267:17:82"},"scope":12137,"src":"230:124:82","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":12138,"src":"124:232:82"}],"src":"45:312:82"},"id":82},"contracts/libraries/HexStrings.sol":{"ast":{"absolutePath":"contracts/libraries/HexStrings.sol","exportedSymbols":{"HexStrings":[12272]},"id":12273,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":12139,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"32:23:83"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":12272,"linearizedBaseContracts":[12272],"name":"HexStrings","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":12142,"mutability":"constant","name":"ALPHABET","nodeType":"VariableDeclaration","scope":12272,"src":"82:55:83","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":12140,"name":"bytes16","nodeType":"ElementaryTypeName","src":"82:7:83","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":12141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"119:18:83","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"internal"},{"body":{"id":12217,"nodeType":"Block","src":"527:347:83","statements":[{"assignments":[12153],"declarations":[{"constant":false,"id":12153,"mutability":"mutable","name":"buffer","nodeType":"VariableDeclaration","scope":12217,"src":"537:19:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12152,"name":"bytes","nodeType":"ElementaryTypeName","src":"537:5:83","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":12162,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":12156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"569:1:83","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":12157,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12147,"src":"573:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"569:10:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":12159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"582:1:83","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"569:14:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12155,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"559:9:83","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":12154,"name":"bytes","nodeType":"ElementaryTypeName","src":"563:5:83","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":12161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"559:25:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"537:47:83"},{"expression":{"id":12167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12163,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12153,"src":"594:6:83","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12165,"indexExpression":{"hexValue":"30","id":12164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"601:1:83","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"594:9:83","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":12166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"606:3:83","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"594:15:83","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":12168,"nodeType":"ExpressionStatement","src":"594:15:83"},{"expression":{"id":12173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12169,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12153,"src":"619:6:83","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12171,"indexExpression":{"hexValue":"31","id":12170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"626:1:83","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"619:9:83","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":12172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"631:3:83","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"619:15:83","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":12174,"nodeType":"ExpressionStatement","src":"619:15:83"},{"body":{"id":12203,"nodeType":"Block","src":"689:83:83","statements":[{"expression":{"id":12197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12189,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12153,"src":"703:6:83","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12191,"indexExpression":{"id":12190,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12176,"src":"710:1:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"703:9:83","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":12192,"name":"ALPHABET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12142,"src":"715:8:83","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":12196,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12193,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12145,"src":"724:5:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":12194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"732:3:83","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"724:11:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"715:21:83","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"703:33:83","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":12198,"nodeType":"ExpressionStatement","src":"703:33:83"},{"expression":{"id":12201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12199,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12145,"src":"750:5:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":12200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"760:1:83","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"750:11:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12202,"nodeType":"ExpressionStatement","src":"750:11:83"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12183,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12176,"src":"677:1:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":12184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"681:1:83","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"677:5:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12204,"initializationExpression":{"assignments":[12176],"declarations":[{"constant":false,"id":12176,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":12204,"src":"649:9:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12175,"name":"uint256","nodeType":"ElementaryTypeName","src":"649:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12182,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":12177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"661:1:83","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":12178,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12147,"src":"665:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"661:10:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":12180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"674:1:83","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"661:14:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"649:26:83"},"loopExpression":{"expression":{"id":12187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"684:3:83","subExpression":{"id":12186,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12176,"src":"686:1:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12188,"nodeType":"ExpressionStatement","src":"684:3:83"},"nodeType":"ForStatement","src":"644:128:83"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12206,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12145,"src":"789:5:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":12207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"798:1:83","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"789:10:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","id":12209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"801:34:83","typeDescriptions":{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""},"value":"Strings: hex length insufficient"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""}],"id":12205,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"781:7:83","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"781:55:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12211,"nodeType":"ExpressionStatement","src":"781:55:83"},{"expression":{"arguments":[{"id":12214,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12153,"src":"860:6:83","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12213,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"853:6:83","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":12212,"name":"string","nodeType":"ElementaryTypeName","src":"853:6:83","typeDescriptions":{}}},"id":12215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"853:14:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":12151,"id":12216,"nodeType":"Return","src":"846:21:83"}]},"documentation":{"id":12143,"nodeType":"StructuredDocumentation","src":"144:288:83","text":"@notice Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n @dev Credit to Open Zeppelin under MIT license https://github.com/OpenZeppelin/openzeppelin-contracts/blob/243adff49ce1700e0ecb99fe522fb16cff1d1ddc/contracts/utils/Strings.sol#L55"},"id":12218,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nodeType":"FunctionDefinition","parameters":{"id":12148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12145,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":12218,"src":"458:13:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12144,"name":"uint256","nodeType":"ElementaryTypeName","src":"458:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12147,"mutability":"mutable","name":"length","nodeType":"VariableDeclaration","scope":12218,"src":"473:14:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12146,"name":"uint256","nodeType":"ElementaryTypeName","src":"473:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"457:31:83"},"returnParameters":{"id":12151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12150,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12218,"src":"512:13:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12149,"name":"string","nodeType":"ElementaryTypeName","src":"512:6:83","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"511:15:83"},"scope":12272,"src":"437:437:83","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12270,"nodeType":"Block","src":"978:231:83","statements":[{"assignments":[12228],"declarations":[{"constant":false,"id":12228,"mutability":"mutable","name":"buffer","nodeType":"VariableDeclaration","scope":12270,"src":"988:19:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12227,"name":"bytes","nodeType":"ElementaryTypeName","src":"988:5:83","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":12235,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":12231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1020:1:83","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":12232,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12222,"src":"1024:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1020:10:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1010:9:83","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":12229,"name":"bytes","nodeType":"ElementaryTypeName","src":"1014:5:83","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":12234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1010:21:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"988:43:83"},{"body":{"id":12263,"nodeType":"Block","src":"1085:87:83","statements":[{"expression":{"id":12257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12247,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12228,"src":"1099:6:83","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12251,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12248,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12237,"src":"1106:1:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":12249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1110:1:83","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1106:5:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1099:13:83","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":12252,"name":"ALPHABET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12142,"src":"1115:8:83","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":12256,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12253,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12220,"src":"1124:5:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":12254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1132:3:83","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"1124:11:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1115:21:83","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"1099:37:83","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":12258,"nodeType":"ExpressionStatement","src":"1099:37:83"},{"expression":{"id":12261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12259,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12220,"src":"1150:5:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":12260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1160:1:83","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1150:11:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12262,"nodeType":"ExpressionStatement","src":"1150:11:83"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12241,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12237,"src":"1073:1:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1077:1:83","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1073:5:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12264,"initializationExpression":{"assignments":[12237],"declarations":[{"constant":false,"id":12237,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":12264,"src":"1046:9:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12236,"name":"uint256","nodeType":"ElementaryTypeName","src":"1046:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12240,"initialValue":{"expression":{"id":12238,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12228,"src":"1058:6:83","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1058:13:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1046:25:83"},"loopExpression":{"expression":{"id":12245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"1080:3:83","subExpression":{"id":12244,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12237,"src":"1080:1:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12246,"nodeType":"ExpressionStatement","src":"1080:3:83"},"nodeType":"ForStatement","src":"1041:131:83"},{"expression":{"arguments":[{"id":12267,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12228,"src":"1195:6:83","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12266,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1188:6:83","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":12265,"name":"string","nodeType":"ElementaryTypeName","src":"1188:6:83","typeDescriptions":{}}},"id":12268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1188:14:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":12226,"id":12269,"nodeType":"Return","src":"1181:21:83"}]},"id":12271,"implemented":true,"kind":"function","modifiers":[],"name":"toHexStringNoPrefix","nodeType":"FunctionDefinition","parameters":{"id":12223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12220,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":12271,"src":"909:13:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12219,"name":"uint256","nodeType":"ElementaryTypeName","src":"909:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12222,"mutability":"mutable","name":"length","nodeType":"VariableDeclaration","scope":12271,"src":"924:14:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12221,"name":"uint256","nodeType":"ElementaryTypeName","src":"924:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"908:31:83"},"returnParameters":{"id":12226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12225,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12271,"src":"963:13:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12224,"name":"string","nodeType":"ElementaryTypeName","src":"963:6:83","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"962:15:83"},"scope":12272,"src":"880:329:83","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":12273,"src":"57:1154:83"}],"src":"32:1180:83"},"id":83},"contracts/libraries/LiquidityAmounts.sol":{"ast":{"absolutePath":"contracts/libraries/LiquidityAmounts.sol","exportedSymbols":{"FixedPoint96":[868],"FullMath":[1041],"LiquidityAmounts":[12612]},"id":12613,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12274,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:84"},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/FullMath.sol","file":"@airdao/astra-cl-core/contracts/libraries/FullMath.sol","id":12275,"nodeType":"ImportDirective","scope":12613,"sourceUnit":1042,"src":"124:64:84","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol","file":"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol","id":12276,"nodeType":"ImportDirective","scope":12613,"sourceUnit":869,"src":"242:68:84","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":12277,"nodeType":"StructuredDocumentation","src":"312:131:84","text":"@title Liquidity amount functions\n @notice Provides functions for computing liquidity amounts from token amounts and prices"},"fullyImplemented":true,"id":12612,"linearizedBaseContracts":[12612],"name":"LiquidityAmounts","nodeType":"ContractDefinition","nodes":[{"body":{"id":12297,"nodeType":"Block","src":"686:47:84","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":12291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12286,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12283,"src":"705:1:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12289,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12280,"src":"717:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"709:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":12287,"name":"uint128","nodeType":"ElementaryTypeName","src":"709:7:84","typeDescriptions":{}}},"id":12290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"709:10:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"705:14:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":12292,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"704:16:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":12293,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12280,"src":"724:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"704:21:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12285,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"696:7:84","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":12295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"696:30:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12296,"nodeType":"ExpressionStatement","src":"696:30:84"}]},"documentation":{"id":12278,"nodeType":"StructuredDocumentation","src":"474:144:84","text":"@notice Downcasts uint256 to uint128\n @param x The uint258 to be downcasted\n @return y The passed value, downcasted to uint128"},"id":12298,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nodeType":"FunctionDefinition","parameters":{"id":12281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12280,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":12298,"src":"642:9:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12279,"name":"uint256","nodeType":"ElementaryTypeName","src":"642:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"641:11:84"},"returnParameters":{"id":12284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12283,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":12298,"src":"675:9:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":12282,"name":"uint128","nodeType":"ElementaryTypeName","src":"675:7:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"674:11:84"},"scope":12612,"src":"623:110:84","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":12343,"nodeType":"Block","src":"1368:308:84","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12310,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12301,"src":"1382:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12311,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12303,"src":"1398:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1382:29:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12321,"nodeType":"IfStatement","src":"1378:98:84","trueBody":{"expression":{"id":12319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":12313,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12301,"src":"1414:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12314,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12303,"src":"1429:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":12315,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1413:30:84","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":12316,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12303,"src":"1447:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12317,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12301,"src":"1462:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":12318,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1446:30:84","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"1413:63:84","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12320,"nodeType":"ExpressionStatement","src":"1413:63:84"}},{"assignments":[12323],"declarations":[{"constant":false,"id":12323,"mutability":"mutable","name":"intermediate","nodeType":"VariableDeclaration","scope":12343,"src":"1486:20:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12322,"name":"uint256","nodeType":"ElementaryTypeName","src":"1486:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12331,"initialValue":{"arguments":[{"id":12326,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12301,"src":"1525:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12327,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12303,"src":"1540:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":12328,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"1555:12:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$868_$","typeString":"type(library FixedPoint96)"}},"id":12329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":867,"src":"1555:16:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12324,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"1509:8:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$1041_$","typeString":"type(library FullMath)"}},"id":12325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":997,"src":"1509:15:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":12330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1509:63:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1486:86:84"},{"expression":{"arguments":[{"arguments":[{"id":12335,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12305,"src":"1615:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12336,"name":"intermediate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12323,"src":"1624:12:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12337,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12303,"src":"1638:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":12338,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12301,"src":"1654:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1638:29:84","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":12333,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"1599:8:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$1041_$","typeString":"type(library FullMath)"}},"id":12334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":997,"src":"1599:15:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":12340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1599:69:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12332,"name":"toUint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12298,"src":"1589:9:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint256) pure returns (uint128)"}},"id":12341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1589:80:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":12309,"id":12342,"nodeType":"Return","src":"1582:87:84"}]},"documentation":{"id":12299,"nodeType":"StructuredDocumentation","src":"739:457:84","text":"@notice Computes the amount of liquidity received for a given amount of token0 and price range\n @dev Calculates amount0 * (sqrt(upper) * sqrt(lower)) / (sqrt(upper) - sqrt(lower))\n @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n @param amount0 The amount0 being sent in\n @return liquidity The amount of returned liquidity"},"id":12344,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityForAmount0","nodeType":"FunctionDefinition","parameters":{"id":12306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12301,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":12344,"src":"1242:21:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12300,"name":"uint160","nodeType":"ElementaryTypeName","src":"1242:7:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":12303,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":12344,"src":"1273:21:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12302,"name":"uint160","nodeType":"ElementaryTypeName","src":"1273:7:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":12305,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":12344,"src":"1304:15:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12304,"name":"uint256","nodeType":"ElementaryTypeName","src":"1304:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1232:93:84"},"returnParameters":{"id":12309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12308,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":12344,"src":"1349:17:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":12307,"name":"uint128","nodeType":"ElementaryTypeName","src":"1349:7:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1348:19:84"},"scope":12612,"src":"1201:475:84","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12380,"nodeType":"Block","src":"2282:216:84","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12356,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12347,"src":"2296:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12357,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12349,"src":"2312:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2296:29:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12367,"nodeType":"IfStatement","src":"2292:98:84","trueBody":{"expression":{"id":12365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":12359,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12347,"src":"2328:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12360,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12349,"src":"2343:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":12361,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2327:30:84","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":12362,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12349,"src":"2361:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12363,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12347,"src":"2376:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":12364,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2360:30:84","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"2327:63:84","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12366,"nodeType":"ExpressionStatement","src":"2327:63:84"}},{"expression":{"arguments":[{"arguments":[{"id":12371,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12351,"src":"2433:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":12372,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"2442:12:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$868_$","typeString":"type(library FixedPoint96)"}},"id":12373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":867,"src":"2442:16:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12374,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12349,"src":"2460:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":12375,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12347,"src":"2476:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2460:29:84","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":12369,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"2417:8:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$1041_$","typeString":"type(library FullMath)"}},"id":12370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":997,"src":"2417:15:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":12377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2417:73:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12368,"name":"toUint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12298,"src":"2407:9:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint256) pure returns (uint128)"}},"id":12378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2407:84:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":12355,"id":12379,"nodeType":"Return","src":"2400:91:84"}]},"documentation":{"id":12345,"nodeType":"StructuredDocumentation","src":"1682:428:84","text":"@notice Computes the amount of liquidity received for a given amount of token1 and price range\n @dev Calculates amount1 / (sqrt(upper) - sqrt(lower)).\n @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n @param amount1 The amount1 being sent in\n @return liquidity The amount of returned liquidity"},"id":12381,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityForAmount1","nodeType":"FunctionDefinition","parameters":{"id":12352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12347,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":12381,"src":"2156:21:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12346,"name":"uint160","nodeType":"ElementaryTypeName","src":"2156:7:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":12349,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":12381,"src":"2187:21:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12348,"name":"uint160","nodeType":"ElementaryTypeName","src":"2187:7:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":12351,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":12381,"src":"2218:15:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12350,"name":"uint256","nodeType":"ElementaryTypeName","src":"2218:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2146:93:84"},"returnParameters":{"id":12355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12354,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":12381,"src":"2263:17:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":12353,"name":"uint128","nodeType":"ElementaryTypeName","src":"2263:7:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2262:19:84"},"scope":12612,"src":"2115:383:84","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12461,"nodeType":"Block","src":"3320:679:84","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12397,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12386,"src":"3334:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12398,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12388,"src":"3350:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3334:29:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12408,"nodeType":"IfStatement","src":"3330:98:84","trueBody":{"expression":{"id":12406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":12400,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12386,"src":"3366:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12401,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12388,"src":"3381:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":12402,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3365:30:84","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":12403,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12388,"src":"3399:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12404,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12386,"src":"3414:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":12405,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3398:30:84","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"3365:63:84","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12407,"nodeType":"ExpressionStatement","src":"3365:63:84"}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12409,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12384,"src":"3443:12:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":12410,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12386,"src":"3459:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3443:29:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12421,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12384,"src":"3582:12:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12422,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12388,"src":"3597:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3582:28:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12458,"nodeType":"Block","src":"3895:98:84","statements":[{"expression":{"id":12456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12450,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12395,"src":"3909:9:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12452,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12386,"src":"3944:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12453,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12388,"src":"3959:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12454,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12392,"src":"3974:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12451,"name":"getLiquidityForAmount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12381,"src":"3921:22:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":12455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3921:61:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3909:73:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":12457,"nodeType":"ExpressionStatement","src":"3909:73:84"}]},"id":12459,"nodeType":"IfStatement","src":"3578:415:84","trueBody":{"id":12449,"nodeType":"Block","src":"3612:277:84","statements":[{"assignments":[12425],"declarations":[{"constant":false,"id":12425,"mutability":"mutable","name":"liquidity0","nodeType":"VariableDeclaration","scope":12449,"src":"3626:18:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":12424,"name":"uint128","nodeType":"ElementaryTypeName","src":"3626:7:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":12431,"initialValue":{"arguments":[{"id":12427,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12384,"src":"3670:12:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12428,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12388,"src":"3684:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12429,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12390,"src":"3699:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12426,"name":"getLiquidityForAmount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12344,"src":"3647:22:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":12430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3647:60:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"3626:81:84"},{"assignments":[12433],"declarations":[{"constant":false,"id":12433,"mutability":"mutable","name":"liquidity1","nodeType":"VariableDeclaration","scope":12449,"src":"3721:18:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":12432,"name":"uint128","nodeType":"ElementaryTypeName","src":"3721:7:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":12439,"initialValue":{"arguments":[{"id":12435,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12386,"src":"3765:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12436,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12384,"src":"3780:12:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12437,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12392,"src":"3794:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12434,"name":"getLiquidityForAmount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12381,"src":"3742:22:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":12438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3742:60:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"3721:81:84"},{"expression":{"id":12447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12440,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12395,"src":"3817:9:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":12443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12441,"name":"liquidity0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12425,"src":"3829:10:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12442,"name":"liquidity1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12433,"src":"3842:10:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3829:23:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":12445,"name":"liquidity1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12433,"src":"3868:10:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":12446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3829:49:84","trueExpression":{"id":12444,"name":"liquidity0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12425,"src":"3855:10:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3817:61:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":12448,"nodeType":"ExpressionStatement","src":"3817:61:84"}]}},"id":12460,"nodeType":"IfStatement","src":"3439:554:84","trueBody":{"id":12420,"nodeType":"Block","src":"3474:98:84","statements":[{"expression":{"id":12418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12412,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12395,"src":"3488:9:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12414,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12386,"src":"3523:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12415,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12388,"src":"3538:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12416,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12390,"src":"3553:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12413,"name":"getLiquidityForAmount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12344,"src":"3500:22:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":12417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3500:61:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3488:73:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":12419,"nodeType":"ExpressionStatement","src":"3488:73:84"}]}}]},"documentation":{"id":12382,"nodeType":"StructuredDocumentation","src":"2504:589:84","text":"@notice Computes the maximum amount of liquidity received for a given amount of token0, token1, the current\n pool prices and the prices at the tick boundaries\n @param sqrtRatioX96 A sqrt price representing the current pool prices\n @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n @param amount0 The amount of token0 being sent in\n @param amount1 The amount of token1 being sent in\n @return liquidity The maximum amount of liquidity received"},"id":12462,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityForAmounts","nodeType":"FunctionDefinition","parameters":{"id":12393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12384,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":12462,"src":"3139:20:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12383,"name":"uint160","nodeType":"ElementaryTypeName","src":"3139:7:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":12386,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":12462,"src":"3169:21:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12385,"name":"uint160","nodeType":"ElementaryTypeName","src":"3169:7:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":12388,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":12462,"src":"3200:21:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12387,"name":"uint160","nodeType":"ElementaryTypeName","src":"3200:7:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":12390,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":12462,"src":"3231:15:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12389,"name":"uint256","nodeType":"ElementaryTypeName","src":"3231:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12392,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":12462,"src":"3256:15:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12391,"name":"uint256","nodeType":"ElementaryTypeName","src":"3256:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3129:148:84"},"returnParameters":{"id":12396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12395,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":12462,"src":"3301:17:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":12394,"name":"uint128","nodeType":"ElementaryTypeName","src":"3301:7:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3300:19:84"},"scope":12612,"src":"3098:901:84","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12503,"nodeType":"Block","src":"4524:331:84","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12474,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12465,"src":"4538:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12475,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12467,"src":"4554:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4538:29:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12485,"nodeType":"IfStatement","src":"4534:98:84","trueBody":{"expression":{"id":12483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":12477,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12465,"src":"4570:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12478,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12467,"src":"4585:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":12479,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4569:30:84","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":12480,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12467,"src":"4603:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12481,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12465,"src":"4618:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":12482,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4602:30:84","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"4569:63:84","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12484,"nodeType":"ExpressionStatement","src":"4569:63:84"}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12490,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12469,"src":"4703:9:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":12489,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4695:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12488,"name":"uint256","nodeType":"ElementaryTypeName","src":"4695:7:84","typeDescriptions":{}}},"id":12491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4695:18:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"expression":{"id":12492,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"4717:12:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$868_$","typeString":"type(library FixedPoint96)"}},"id":12493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"RESOLUTION","nodeType":"MemberAccess","referencedDeclaration":864,"src":"4717:23:84","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4695:45:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12495,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12467,"src":"4758:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":12496,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12465,"src":"4774:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4758:29:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12498,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12467,"src":"4805:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":12486,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"4662:8:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$1041_$","typeString":"type(library FullMath)"}},"id":12487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":997,"src":"4662:15:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":12499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4662:170:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":12500,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12465,"src":"4835:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"4662:186:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12473,"id":12502,"nodeType":"Return","src":"4643:205:84"}]},"documentation":{"id":12463,"nodeType":"StructuredDocumentation","src":"4005:347:84","text":"@notice Computes the amount of token0 for a given amount of liquidity and a price range\n @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n @param liquidity The liquidity being valued\n @return amount0 The amount of token0"},"id":12504,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount0ForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":12470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12465,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":12504,"src":"4398:21:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12464,"name":"uint160","nodeType":"ElementaryTypeName","src":"4398:7:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":12467,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":12504,"src":"4429:21:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12466,"name":"uint160","nodeType":"ElementaryTypeName","src":"4429:7:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":12469,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":12504,"src":"4460:17:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":12468,"name":"uint128","nodeType":"ElementaryTypeName","src":"4460:7:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"4388:95:84"},"returnParameters":{"id":12473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12472,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":12504,"src":"4507:15:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12471,"name":"uint256","nodeType":"ElementaryTypeName","src":"4507:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4506:17:84"},"scope":12612,"src":"4357:498:84","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12538,"nodeType":"Block","src":"5380:208:84","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12516,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12507,"src":"5394:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12517,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12509,"src":"5410:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"5394:29:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12527,"nodeType":"IfStatement","src":"5390:98:84","trueBody":{"expression":{"id":12525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":12519,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12507,"src":"5426:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12520,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12509,"src":"5441:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":12521,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5425:30:84","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":12522,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12509,"src":"5459:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12523,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12507,"src":"5474:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":12524,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5458:30:84","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"5425:63:84","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12526,"nodeType":"ExpressionStatement","src":"5425:63:84"}},{"expression":{"arguments":[{"id":12530,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12511,"src":"5522:9:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12531,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12509,"src":"5533:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":12532,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12507,"src":"5549:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"5533:29:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":12534,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"5564:12:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$868_$","typeString":"type(library FixedPoint96)"}},"id":12535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":867,"src":"5564:16:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12528,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"5506:8:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$1041_$","typeString":"type(library FullMath)"}},"id":12529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":997,"src":"5506:15:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":12536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5506:75:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12515,"id":12537,"nodeType":"Return","src":"5499:82:84"}]},"documentation":{"id":12505,"nodeType":"StructuredDocumentation","src":"4861:347:84","text":"@notice Computes the amount of token1 for a given amount of liquidity and a price range\n @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n @param liquidity The liquidity being valued\n @return amount1 The amount of token1"},"id":12539,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount1ForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":12512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12507,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":12539,"src":"5254:21:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12506,"name":"uint160","nodeType":"ElementaryTypeName","src":"5254:7:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":12509,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":12539,"src":"5285:21:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12508,"name":"uint160","nodeType":"ElementaryTypeName","src":"5285:7:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":12511,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":12539,"src":"5316:17:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":12510,"name":"uint128","nodeType":"ElementaryTypeName","src":"5316:7:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5244:95:84"},"returnParameters":{"id":12515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12514,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":12539,"src":"5363:15:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12513,"name":"uint256","nodeType":"ElementaryTypeName","src":"5363:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5362:17:84"},"scope":12612,"src":"5213:375:84","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12610,"nodeType":"Block","src":"6343:585:84","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12555,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12544,"src":"6357:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12556,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12546,"src":"6373:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6357:29:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12566,"nodeType":"IfStatement","src":"6353:98:84","trueBody":{"expression":{"id":12564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":12558,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12544,"src":"6389:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12559,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12546,"src":"6404:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":12560,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6388:30:84","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":12561,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12546,"src":"6422:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12562,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12544,"src":"6437:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":12563,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6421:30:84","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"6388:63:84","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12565,"nodeType":"ExpressionStatement","src":"6388:63:84"}},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12567,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12542,"src":"6466:12:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":12568,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12544,"src":"6482:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6466:29:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":12581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12579,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12542,"src":"6605:12:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12580,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12546,"src":"6620:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6605:28:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12607,"nodeType":"Block","src":"6824:98:84","statements":[{"expression":{"id":12605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12599,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12553,"src":"6838:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12601,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12544,"src":"6871:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12602,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12546,"src":"6886:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12603,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12548,"src":"6901:9:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":12600,"name":"getAmount1ForLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12539,"src":"6848:22:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":12604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6848:63:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6838:73:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12606,"nodeType":"ExpressionStatement","src":"6838:73:84"}]},"id":12608,"nodeType":"IfStatement","src":"6601:321:84","trueBody":{"id":12598,"nodeType":"Block","src":"6635:183:84","statements":[{"expression":{"id":12588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12582,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12551,"src":"6649:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12584,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12542,"src":"6682:12:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12585,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12546,"src":"6696:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12586,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12548,"src":"6711:9:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":12583,"name":"getAmount0ForLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12504,"src":"6659:22:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":12587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6659:62:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6649:72:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12589,"nodeType":"ExpressionStatement","src":"6649:72:84"},{"expression":{"id":12596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12590,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12553,"src":"6735:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12592,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12544,"src":"6768:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12593,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12542,"src":"6783:12:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12594,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12548,"src":"6797:9:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":12591,"name":"getAmount1ForLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12539,"src":"6745:22:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":12595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6745:62:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6735:72:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12597,"nodeType":"ExpressionStatement","src":"6735:72:84"}]}},"id":12609,"nodeType":"IfStatement","src":"6462:460:84","trueBody":{"id":12578,"nodeType":"Block","src":"6497:98:84","statements":[{"expression":{"id":12576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12570,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12551,"src":"6511:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12572,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12544,"src":"6544:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12573,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12546,"src":"6559:13:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":12574,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12548,"src":"6574:9:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":12571,"name":"getAmount0ForLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12504,"src":"6521:22:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":12575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6521:63:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6511:73:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12577,"nodeType":"ExpressionStatement","src":"6511:73:84"}]}}]},"documentation":{"id":12540,"nodeType":"StructuredDocumentation","src":"5594:530:84","text":"@notice Computes the token0 and token1 value for a given amount of liquidity, the current\n pool prices and the prices at the tick boundaries\n @param sqrtRatioX96 A sqrt price representing the current pool prices\n @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n @param liquidity The liquidity being valued\n @return amount0 The amount of token0\n @return amount1 The amount of token1"},"id":12611,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountsForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":12549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12542,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":12611,"src":"6170:20:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12541,"name":"uint160","nodeType":"ElementaryTypeName","src":"6170:7:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":12544,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":12611,"src":"6200:21:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12543,"name":"uint160","nodeType":"ElementaryTypeName","src":"6200:7:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":12546,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":12611,"src":"6231:21:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":12545,"name":"uint160","nodeType":"ElementaryTypeName","src":"6231:7:84","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":12548,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":12611,"src":"6262:17:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":12547,"name":"uint128","nodeType":"ElementaryTypeName","src":"6262:7:84","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6160:125:84"},"returnParameters":{"id":12554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12551,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":12611,"src":"6309:15:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12550,"name":"uint256","nodeType":"ElementaryTypeName","src":"6309:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12553,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":12611,"src":"6326:15:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12552,"name":"uint256","nodeType":"ElementaryTypeName","src":"6326:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6308:34:84"},"scope":12612,"src":"6129:799:84","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":12613,"src":"443:6487:84"}],"src":"45:6886:84"},"id":84},"contracts/libraries/NFTSVG.sol":{"ast":{"absolutePath":"contracts/libraries/NFTSVG.sol","exportedSymbols":{"Base64":[6877],"BitMath":[851],"NFTSVG":[13550],"Strings":[6827]},"id":13551,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12614,"literals":["solidity",">=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:24:85"},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"@openzeppelin/contracts/utils/Strings.sol","id":12615,"nodeType":"ImportDirective","scope":13551,"sourceUnit":6828,"src":"71:51:85","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/BitMath.sol","file":"@airdao/astra-cl-core/contracts/libraries/BitMath.sol","id":12616,"nodeType":"ImportDirective","scope":13551,"sourceUnit":852,"src":"176:63:85","symbolAliases":[],"unitAlias":""},{"absolutePath":"base64-sol/base64.sol","file":"base64-sol/base64.sol","id":12617,"nodeType":"ImportDirective","scope":13551,"sourceUnit":6878,"src":"240:31:85","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":12618,"nodeType":"StructuredDocumentation","src":"273:103:85","text":"@title NFTSVG\n @notice Provides a function for generating an SVG associated with a AstraDEX NFT"},"fullyImplemented":true,"id":13550,"linearizedBaseContracts":[13550],"name":"NFTSVG","nodeType":"ContractDefinition","nodes":[{"id":12621,"libraryName":{"id":12619,"name":"Strings","nodeType":"UserDefinedTypeName","referencedDeclaration":6827,"src":"403:7:85","typeDescriptions":{"typeIdentifier":"t_contract$_Strings_$6827","typeString":"library Strings"}},"nodeType":"UsingForDirective","src":"397:26:85","typeName":{"id":12620,"name":"uint256","nodeType":"ElementaryTypeName","src":"415:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":12624,"mutability":"constant","name":"curve1","nodeType":"VariableDeclaration","scope":13550,"src":"429:53:85","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12622,"name":"string","nodeType":"ElementaryTypeName","src":"429:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d31203143343120343120313035203130352031343520313435","id":12623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"454:28:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_66d27e6fba11b882c8a0a5dee852b079822cbe90182b76c6fa8851fffde22b4c","typeString":"literal_string \"M1 1C41 41 105 105 145 145\""},"value":"M1 1C41 41 105 105 145 145"},"visibility":"internal"},{"constant":true,"id":12627,"mutability":"constant","name":"curve2","nodeType":"VariableDeclaration","scope":13550,"src":"488:52:85","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12625,"name":"string","nodeType":"ElementaryTypeName","src":"488:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d312031433333203439203937203131332031343520313435","id":12626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"513:27:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_00db9d9afe99bb6dcfba7c65bef94d4ed27e35a8501f24018ed2633644b9d668","typeString":"literal_string \"M1 1C33 49 97 113 145 145\""},"value":"M1 1C33 49 97 113 145 145"},"visibility":"internal"},{"constant":true,"id":12630,"mutability":"constant","name":"curve3","nodeType":"VariableDeclaration","scope":13550,"src":"546:52:85","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12628,"name":"string","nodeType":"ElementaryTypeName","src":"546:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d312031433333203537203839203131332031343520313435","id":12629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"571:27:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_df31787d08efb6acaccc83f64f6323b4714f6733838404303a9a0981b3fb6ff9","typeString":"literal_string \"M1 1C33 57 89 113 145 145\""},"value":"M1 1C33 57 89 113 145 145"},"visibility":"internal"},{"constant":true,"id":12633,"mutability":"constant","name":"curve4","nodeType":"VariableDeclaration","scope":13550,"src":"604:52:85","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12631,"name":"string","nodeType":"ElementaryTypeName","src":"604:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d312031433235203635203831203132312031343520313435","id":12632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"629:27:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_176a8aa92d47a058781a8c38ccdb1b7b196beb23d2ad8fe5144af0387029d040","typeString":"literal_string \"M1 1C25 65 81 121 145 145\""},"value":"M1 1C25 65 81 121 145 145"},"visibility":"internal"},{"constant":true,"id":12636,"mutability":"constant","name":"curve5","nodeType":"VariableDeclaration","scope":13550,"src":"662:52:85","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12634,"name":"string","nodeType":"ElementaryTypeName","src":"662:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d312031433137203733203733203132392031343520313435","id":12635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"687:27:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_9b14335fc8297fb7eb065580ff702df1c930607443996beb2a1041afecea2de5","typeString":"literal_string \"M1 1C17 73 73 129 145 145\""},"value":"M1 1C17 73 73 129 145 145"},"visibility":"internal"},{"constant":true,"id":12639,"mutability":"constant","name":"curve6","nodeType":"VariableDeclaration","scope":13550,"src":"720:51:85","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12637,"name":"string","nodeType":"ElementaryTypeName","src":"720:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d3120314339203831203635203133372031343520313435","id":12638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"745:26:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_3f7e53cb3d26a3b491cbe62836312e9b657aaf452ae18b92a58db671182a062e","typeString":"literal_string \"M1 1C9 81 65 137 145 145\""},"value":"M1 1C9 81 65 137 145 145"},"visibility":"internal"},{"constant":true,"id":12642,"mutability":"constant","name":"curve7","nodeType":"VariableDeclaration","scope":13550,"src":"777:53:85","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12640,"name":"string","nodeType":"ElementaryTypeName","src":"777:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d31203143312038392035372e35203134352031343520313435","id":12641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"802:28:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_1db24bbb939047c658a72481b4226e8a8e415c26fa4e6ddd83d47b63a606cb86","typeString":"literal_string \"M1 1C1 89 57.5 145 145 145\""},"value":"M1 1C1 89 57.5 145 145 145"},"visibility":"internal"},{"constant":true,"id":12645,"mutability":"constant","name":"curve8","nodeType":"VariableDeclaration","scope":13550,"src":"836:51:85","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12643,"name":"string","nodeType":"ElementaryTypeName","src":"836:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d3120314331203937203439203134352031343520313435","id":12644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"861:26:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_f1e029a7f41ea102af4e57ea0d785f94c25b7ac793220e0d87921d75f54f4efb","typeString":"literal_string \"M1 1C1 97 49 145 145 145\""},"value":"M1 1C1 97 49 145 145 145"},"visibility":"internal"},{"canonicalName":"NFTSVG.SVGParams","id":12688,"members":[{"constant":false,"id":12647,"mutability":"mutable","name":"quoteToken","nodeType":"VariableDeclaration","scope":12688,"src":"921:17:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12646,"name":"string","nodeType":"ElementaryTypeName","src":"921:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12649,"mutability":"mutable","name":"baseToken","nodeType":"VariableDeclaration","scope":12688,"src":"948:16:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12648,"name":"string","nodeType":"ElementaryTypeName","src":"948:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12651,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":12688,"src":"974:19:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12650,"name":"address","nodeType":"ElementaryTypeName","src":"974:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12653,"mutability":"mutable","name":"quoteTokenSymbol","nodeType":"VariableDeclaration","scope":12688,"src":"1003:23:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12652,"name":"string","nodeType":"ElementaryTypeName","src":"1003:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12655,"mutability":"mutable","name":"baseTokenSymbol","nodeType":"VariableDeclaration","scope":12688,"src":"1036:22:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12654,"name":"string","nodeType":"ElementaryTypeName","src":"1036:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12657,"mutability":"mutable","name":"feeTier","nodeType":"VariableDeclaration","scope":12688,"src":"1068:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12656,"name":"string","nodeType":"ElementaryTypeName","src":"1068:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12659,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":12688,"src":"1092:15:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12658,"name":"int24","nodeType":"ElementaryTypeName","src":"1092:5:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":12661,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":12688,"src":"1117:15:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12660,"name":"int24","nodeType":"ElementaryTypeName","src":"1117:5:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":12663,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":12688,"src":"1142:17:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12662,"name":"int24","nodeType":"ElementaryTypeName","src":"1142:5:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":12665,"mutability":"mutable","name":"overRange","nodeType":"VariableDeclaration","scope":12688,"src":"1169:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":12664,"name":"int8","nodeType":"ElementaryTypeName","src":"1169:4:85","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"},{"constant":false,"id":12667,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":12688,"src":"1193:15:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12666,"name":"uint256","nodeType":"ElementaryTypeName","src":"1193:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12669,"mutability":"mutable","name":"color0","nodeType":"VariableDeclaration","scope":12688,"src":"1218:13:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12668,"name":"string","nodeType":"ElementaryTypeName","src":"1218:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12671,"mutability":"mutable","name":"color1","nodeType":"VariableDeclaration","scope":12688,"src":"1241:13:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12670,"name":"string","nodeType":"ElementaryTypeName","src":"1241:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12673,"mutability":"mutable","name":"color2","nodeType":"VariableDeclaration","scope":12688,"src":"1264:13:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12672,"name":"string","nodeType":"ElementaryTypeName","src":"1264:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12675,"mutability":"mutable","name":"color3","nodeType":"VariableDeclaration","scope":12688,"src":"1287:13:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12674,"name":"string","nodeType":"ElementaryTypeName","src":"1287:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12677,"mutability":"mutable","name":"x1","nodeType":"VariableDeclaration","scope":12688,"src":"1310:9:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12676,"name":"string","nodeType":"ElementaryTypeName","src":"1310:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12679,"mutability":"mutable","name":"y1","nodeType":"VariableDeclaration","scope":12688,"src":"1329:9:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12678,"name":"string","nodeType":"ElementaryTypeName","src":"1329:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12681,"mutability":"mutable","name":"x2","nodeType":"VariableDeclaration","scope":12688,"src":"1348:9:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12680,"name":"string","nodeType":"ElementaryTypeName","src":"1348:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12683,"mutability":"mutable","name":"y2","nodeType":"VariableDeclaration","scope":12688,"src":"1367:9:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12682,"name":"string","nodeType":"ElementaryTypeName","src":"1367:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12685,"mutability":"mutable","name":"x3","nodeType":"VariableDeclaration","scope":12688,"src":"1386:9:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12684,"name":"string","nodeType":"ElementaryTypeName","src":"1386:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12687,"mutability":"mutable","name":"y3","nodeType":"VariableDeclaration","scope":12688,"src":"1405:9:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12686,"name":"string","nodeType":"ElementaryTypeName","src":"1405:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"SVGParams","nodeType":"StructDefinition","scope":13550,"src":"894:527:85","visibility":"public"},{"body":{"id":12750,"nodeType":"Block","src":"1515:1297:85","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":12700,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"1971:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}],"id":12699,"name":"generateSVGDefs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12869,"src":"1955:15:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_SVGParams_$12688_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function (struct NFTSVG.SVGParams memory) pure returns (string memory)"}},"id":12701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1955:23:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"expression":{"id":12703,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"2047:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12704,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"quoteToken","nodeType":"MemberAccess","referencedDeclaration":12647,"src":"2047:17:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":12705,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"2090:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12706,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"baseToken","nodeType":"MemberAccess","referencedDeclaration":12649,"src":"2090:16:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":12707,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"2132:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12708,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"quoteTokenSymbol","nodeType":"MemberAccess","referencedDeclaration":12653,"src":"2132:23:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":12709,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"2181:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12710,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"baseTokenSymbol","nodeType":"MemberAccess","referencedDeclaration":12655,"src":"2181:22:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":12702,"name":"generateSVGBorderText","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12913,"src":"2000:21:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function (string memory,string memory,string memory,string memory) pure returns (string memory)"}},"id":12711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2000:225:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"expression":{"id":12713,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"2269:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12714,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"quoteTokenSymbol","nodeType":"MemberAccess","referencedDeclaration":12653,"src":"2269:23:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":12715,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"2294:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12716,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"baseTokenSymbol","nodeType":"MemberAccess","referencedDeclaration":12655,"src":"2294:22:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":12717,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"2318:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12718,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeTier","nodeType":"MemberAccess","referencedDeclaration":12657,"src":"2318:14:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":12712,"name":"generateSVGCardMantle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12942,"src":"2247:21:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function (string memory,string memory,string memory) pure returns (string memory)"}},"id":12719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2247:86:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"expression":{"id":12721,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"2372:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12722,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":12659,"src":"2372:16:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":12723,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"2390:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12724,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":12661,"src":"2390:16:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":12725,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"2408:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12726,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":12663,"src":"2408:18:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":12727,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"2428:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12728,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"overRange","nodeType":"MemberAccess","referencedDeclaration":12665,"src":"2428:16:85","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int8","typeString":"int8"}],"id":12720,"name":"generageSvgCurve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13005,"src":"2355:16:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$_t_int24_$_t_int24_$_t_int8_$returns$_t_string_memory_ptr_$","typeString":"function (int24,int24,int24,int8) pure returns (string memory)"}},"id":12729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2355:90:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":12731,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"2532:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12732,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenId","nodeType":"MemberAccess","referencedDeclaration":12667,"src":"2532:14:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":6826,"src":"2532:23:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":12734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2532:25:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":12735,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"2583:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12736,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":12659,"src":"2583:16:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":12737,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"2625:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12738,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":12661,"src":"2625:16:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"id":12730,"name":"generateSVGPositionDataAndLocationCurve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13320,"src":"2467:39:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_int24_$_t_int24_$returns$_t_string_memory_ptr_$","typeString":"function (string memory,int24,int24) pure returns (string memory)"}},"id":12739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2467:196:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"expression":{"id":12741,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"2708:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12742,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokenId","nodeType":"MemberAccess","referencedDeclaration":12667,"src":"2708:14:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":12743,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"2724:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12744,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolAddress","nodeType":"MemberAccess","referencedDeclaration":12651,"src":"2724:18:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":12740,"name":"generateSVGRareSparkle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13508,"src":"2685:22:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_address_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,address) pure returns (string memory)"}},"id":12745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2685:58:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"3c2f7376673e","id":12746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2765:8:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_ed942a74eccce931b7661b37252dffca8561e3a8bdec86f6da31d97d858c9292","typeString":"literal_string \"</svg>\""},"value":"</svg>"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_ed942a74eccce931b7661b37252dffca8561e3a8bdec86f6da31d97d858c9292","typeString":"literal_string \"</svg>\""}],"expression":{"id":12697,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1917:3:85","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12698,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1917:16:85","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1917:874:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12696,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1893:6:85","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":12695,"name":"string","nodeType":"ElementaryTypeName","src":"1893:6:85","typeDescriptions":{}}},"id":12748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1893:912:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":12694,"id":12749,"nodeType":"Return","src":"1874:931:85"}]},"id":12751,"implemented":true,"kind":"function","modifiers":[],"name":"generateSVG","nodeType":"FunctionDefinition","parameters":{"id":12691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12690,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":12751,"src":"1448:23:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams"},"typeName":{"id":12689,"name":"SVGParams","nodeType":"UserDefinedTypeName","referencedDeclaration":12688,"src":"1448:9:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_storage_ptr","typeString":"struct NFTSVG.SVGParams"}},"visibility":"internal"}],"src":"1447:25:85"},"returnParameters":{"id":12694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12693,"mutability":"mutable","name":"svg","nodeType":"VariableDeclaration","scope":12751,"src":"1496:17:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12692,"name":"string","nodeType":"ElementaryTypeName","src":"1496:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1495:19:85"},"scope":13550,"src":"1427:1385:85","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12868,"nodeType":"Block","src":"2909:5252:85","statements":[{"expression":{"id":12866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12758,"name":"svg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12756,"src":"2919:3:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"3c7376672077696474683d2232393022206865696768743d22353030222076696577426f783d2230203020323930203530302220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722","id":12763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2979:88:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_12907fa788c43c090d50faf378fd6f9ac466c604e59cc51ff30ae1bbbc38c8bd","typeString":"literal_string \"<svg width=\"290\" height=\"500\" viewBox=\"0 0 290 500\" xmlns=\"http://www.w3.org/2000/svg\"\""},"value":"<svg width=\"290\" height=\"500\" viewBox=\"0 0 290 500\" xmlns=\"http://www.w3.org/2000/svg\""},{"hexValue":"20786d6c6e733a786c696e6b3d27687474703a2f2f7777772e77332e6f72672f313939392f786c696e6b273e","id":12764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3085:46:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_84f36e7e631ec50512631a7d2b642e3c86e37c99d02e185264181ea0fe53feba","typeString":"literal_string \" xmlns:xlink='http://www.w3.org/1999/xlink'>\""},"value":" xmlns:xlink='http://www.w3.org/1999/xlink'>"},{"hexValue":"3c646566733e","id":12765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3149:8:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_c9d6f35adafbd6db05cf66701a579ef4e1499ac0364b80726ad93d0f9855ba3a","typeString":"literal_string \"<defs>\""},"value":"<defs>"},{"hexValue":"3c66696c7465722069643d226631223e3c6665496d61676520726573756c743d2270302220786c696e6b3a687265663d22646174613a696d6167652f7376672b786d6c3b6261736536342c","id":12766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3175:77:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_5f5eeeecaa6e9906b36c9738130fb3306daeecaf7d327c054480dbfce019ef56","typeString":"literal_string \"<filter id=\"f1\"><feImage result=\"p0\" xlink:href=\"data:image/svg+xml;base64,\""},"value":"<filter id=\"f1\"><feImage result=\"p0\" xlink:href=\"data:image/svg+xml;base64,"},{"arguments":[{"arguments":[{"arguments":[{"hexValue":"3c7376672077696474683d2732393027206865696768743d27353030272076696577426f783d2730203020323930203530302720786d6c6e733d27687474703a2f2f7777772e77332e6f72672f323030302f737667273e3c726563742077696474683d27323930707827206865696768743d273530307078272066696c6c3d2723","id":12773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3382:131:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d360492c387efc9efda370d7689d5bdc8d71342f56e5194b111ebf036750734","typeString":"literal_string \"<svg width='290' height='500' viewBox='0 0 290 500' xmlns='http://www.w3.org/2000/svg'><rect width='290px' height='500px' fill='#\""},"value":"<svg width='290' height='500' viewBox='0 0 290 500' xmlns='http://www.w3.org/2000/svg'><rect width='290px' height='500px' fill='#"},{"expression":{"id":12774,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"3543:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12775,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"color0","nodeType":"MemberAccess","referencedDeclaration":12669,"src":"3543:13:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"272f3e3c2f7376673e","id":12776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3586:11:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_6257da6d84399769a55eb558312555cad32511f19c4548b9e85f811c5fc99e3b","typeString":"literal_string \"'/></svg>\""},"value":"'/></svg>"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6d360492c387efc9efda370d7689d5bdc8d71342f56e5194b111ebf036750734","typeString":"literal_string \"<svg width='290' height='500' viewBox='0 0 290 500' xmlns='http://www.w3.org/2000/svg'><rect width='290px' height='500px' fill='#\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_6257da6d84399769a55eb558312555cad32511f19c4548b9e85f811c5fc99e3b","typeString":"literal_string \"'/></svg>\""}],"expression":{"id":12771,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3336:3:85","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12772,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3336:16:85","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3336:287:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12770,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3305:5:85","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":12769,"name":"bytes","nodeType":"ElementaryTypeName","src":"3305:5:85","typeDescriptions":{}}},"id":12778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3305:340:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":12767,"name":"Base64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6877,"src":"3270:6:85","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Base64_$6877_$","typeString":"type(library Base64)"}},"id":12768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":6876,"src":"3270:13:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function (bytes memory) pure returns (string memory)"}},"id":12779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3270:393:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"222f3e3c6665496d61676520726573756c743d2270312220786c696e6b3a687265663d22646174613a696d6167652f7376672b786d6c3b6261736536342c","id":12780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3681:64:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_c8625c4ff6c954b2db14bd1706ddcdc7c7bbd2e8489b900eeea309e5e9154d1f","typeString":"literal_string \"\"/><feImage result=\"p1\" xlink:href=\"data:image/svg+xml;base64,\""},"value":"\"/><feImage result=\"p1\" xlink:href=\"data:image/svg+xml;base64,"},{"arguments":[{"arguments":[{"arguments":[{"hexValue":"3c7376672077696474683d2732393027206865696768743d27353030272076696577426f783d2730203020323930203530302720786d6c6e733d27687474703a2f2f7777772e77332e6f72672f323030302f737667273e3c636972636c652063783d27","id":12787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3875:101:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_3c48d7b755ef30478f9fcb7df9667e587d5469eaab81f8e56e6c358f2f43959f","typeString":"literal_string \"<svg width='290' height='500' viewBox='0 0 290 500' xmlns='http://www.w3.org/2000/svg'><circle cx='\""},"value":"<svg width='290' height='500' viewBox='0 0 290 500' xmlns='http://www.w3.org/2000/svg'><circle cx='"},{"expression":{"id":12788,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"4006:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12789,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"x1","nodeType":"MemberAccess","referencedDeclaration":12677,"src":"4006:9:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"272063793d27","id":12790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4045:8:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_c122f56fb29fd1b2692bf38cf7def21d4f86567365fb92790a69e1dc6942704f","typeString":"literal_string \"' cy='\""},"value":"' cy='"},{"expression":{"id":12791,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"4083:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12792,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"y1","nodeType":"MemberAccess","referencedDeclaration":12679,"src":"4083:9:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"2720723d273132307078272066696c6c3d2723","id":12793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4122:21:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_ee35ad264095963cb3d9258d9ab9354d54cabfc55aaceacbd7ebd9fec3d8f96a","typeString":"literal_string \"' r='120px' fill='#\""},"value":"' r='120px' fill='#"},{"expression":{"id":12794,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"4173:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12795,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"color1","nodeType":"MemberAccess","referencedDeclaration":12671,"src":"4173:13:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"272f3e3c2f7376673e","id":12796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4216:11:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_6257da6d84399769a55eb558312555cad32511f19c4548b9e85f811c5fc99e3b","typeString":"literal_string \"'/></svg>\""},"value":"'/></svg>"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3c48d7b755ef30478f9fcb7df9667e587d5469eaab81f8e56e6c358f2f43959f","typeString":"literal_string \"<svg width='290' height='500' viewBox='0 0 290 500' xmlns='http://www.w3.org/2000/svg'><circle cx='\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_c122f56fb29fd1b2692bf38cf7def21d4f86567365fb92790a69e1dc6942704f","typeString":"literal_string \"' cy='\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_ee35ad264095963cb3d9258d9ab9354d54cabfc55aaceacbd7ebd9fec3d8f96a","typeString":"literal_string \"' r='120px' fill='#\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_6257da6d84399769a55eb558312555cad32511f19c4548b9e85f811c5fc99e3b","typeString":"literal_string \"'/></svg>\""}],"expression":{"id":12785,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3829:3:85","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12786,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3829:16:85","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3829:424:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3798:5:85","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":12783,"name":"bytes","nodeType":"ElementaryTypeName","src":"3798:5:85","typeDescriptions":{}}},"id":12798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3798:477:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":12781,"name":"Base64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6877,"src":"3763:6:85","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Base64_$6877_$","typeString":"type(library Base64)"}},"id":12782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":6876,"src":"3763:13:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function (bytes memory) pure returns (string memory)"}},"id":12799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3763:530:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"222f3e3c6665496d61676520726573756c743d2270322220786c696e6b3a687265663d22646174613a696d6167652f7376672b786d6c3b6261736536342c","id":12800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4311:64:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_735ef1ca53a2b4f5317a913b38868565c310f491134932b2790ac296eda48267","typeString":"literal_string \"\"/><feImage result=\"p2\" xlink:href=\"data:image/svg+xml;base64,\""},"value":"\"/><feImage result=\"p2\" xlink:href=\"data:image/svg+xml;base64,"},{"arguments":[{"arguments":[{"arguments":[{"hexValue":"3c7376672077696474683d2732393027206865696768743d27353030272076696577426f783d2730203020323930203530302720786d6c6e733d27687474703a2f2f7777772e77332e6f72672f323030302f737667273e3c636972636c652063783d27","id":12807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4505:101:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_3c48d7b755ef30478f9fcb7df9667e587d5469eaab81f8e56e6c358f2f43959f","typeString":"literal_string \"<svg width='290' height='500' viewBox='0 0 290 500' xmlns='http://www.w3.org/2000/svg'><circle cx='\""},"value":"<svg width='290' height='500' viewBox='0 0 290 500' xmlns='http://www.w3.org/2000/svg'><circle cx='"},{"expression":{"id":12808,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"4636:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12809,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"x2","nodeType":"MemberAccess","referencedDeclaration":12681,"src":"4636:9:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"272063793d27","id":12810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4675:8:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_c122f56fb29fd1b2692bf38cf7def21d4f86567365fb92790a69e1dc6942704f","typeString":"literal_string \"' cy='\""},"value":"' cy='"},{"expression":{"id":12811,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"4713:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12812,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"y2","nodeType":"MemberAccess","referencedDeclaration":12683,"src":"4713:9:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"2720723d273132307078272066696c6c3d2723","id":12813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4752:21:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_ee35ad264095963cb3d9258d9ab9354d54cabfc55aaceacbd7ebd9fec3d8f96a","typeString":"literal_string \"' r='120px' fill='#\""},"value":"' r='120px' fill='#"},{"expression":{"id":12814,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"4803:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12815,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"color2","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"4803:13:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"272f3e3c2f7376673e","id":12816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4846:11:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_6257da6d84399769a55eb558312555cad32511f19c4548b9e85f811c5fc99e3b","typeString":"literal_string \"'/></svg>\""},"value":"'/></svg>"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3c48d7b755ef30478f9fcb7df9667e587d5469eaab81f8e56e6c358f2f43959f","typeString":"literal_string \"<svg width='290' height='500' viewBox='0 0 290 500' xmlns='http://www.w3.org/2000/svg'><circle cx='\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_c122f56fb29fd1b2692bf38cf7def21d4f86567365fb92790a69e1dc6942704f","typeString":"literal_string \"' cy='\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_ee35ad264095963cb3d9258d9ab9354d54cabfc55aaceacbd7ebd9fec3d8f96a","typeString":"literal_string \"' r='120px' fill='#\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_6257da6d84399769a55eb558312555cad32511f19c4548b9e85f811c5fc99e3b","typeString":"literal_string \"'/></svg>\""}],"expression":{"id":12805,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4459:3:85","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12806,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"4459:16:85","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4459:424:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4428:5:85","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":12803,"name":"bytes","nodeType":"ElementaryTypeName","src":"4428:5:85","typeDescriptions":{}}},"id":12818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4428:477:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":12801,"name":"Base64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6877,"src":"4393:6:85","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Base64_$6877_$","typeString":"type(library Base64)"}},"id":12802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":6876,"src":"4393:13:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function (bytes memory) pure returns (string memory)"}},"id":12819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4393:530:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"22202f3e","id":12820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4941:6:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_72725e47f491f4a2a7cef9977dd6b3ea1a81d838d9448981484a063dc011d6ba","typeString":"literal_string \"\" />\""},"value":"\" />"},{"hexValue":"3c6665496d61676520726573756c743d2270332220786c696e6b3a687265663d22646174613a696d6167652f7376672b786d6c3b6261736536342c","id":12821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4965:61:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_0b30bb9ee6214545b9ea9097efb5de130600391f40197f097cab945da2430220","typeString":"literal_string \"<feImage result=\"p3\" xlink:href=\"data:image/svg+xml;base64,\""},"value":"<feImage result=\"p3\" xlink:href=\"data:image/svg+xml;base64,"},{"arguments":[{"arguments":[{"arguments":[{"hexValue":"3c7376672077696474683d2732393027206865696768743d27353030272076696577426f783d2730203020323930203530302720786d6c6e733d27687474703a2f2f7777772e77332e6f72672f323030302f737667273e3c636972636c652063783d27","id":12828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5156:101:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_3c48d7b755ef30478f9fcb7df9667e587d5469eaab81f8e56e6c358f2f43959f","typeString":"literal_string \"<svg width='290' height='500' viewBox='0 0 290 500' xmlns='http://www.w3.org/2000/svg'><circle cx='\""},"value":"<svg width='290' height='500' viewBox='0 0 290 500' xmlns='http://www.w3.org/2000/svg'><circle cx='"},{"expression":{"id":12829,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"5287:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12830,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"x3","nodeType":"MemberAccess","referencedDeclaration":12685,"src":"5287:9:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"272063793d27","id":12831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5326:8:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_c122f56fb29fd1b2692bf38cf7def21d4f86567365fb92790a69e1dc6942704f","typeString":"literal_string \"' cy='\""},"value":"' cy='"},{"expression":{"id":12832,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"5364:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12833,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"y3","nodeType":"MemberAccess","referencedDeclaration":12687,"src":"5364:9:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"2720723d273130307078272066696c6c3d2723","id":12834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5403:21:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_fa7e81ce29c44abe3185d042987960e602335452077f02be3f9233e7ae91d760","typeString":"literal_string \"' r='100px' fill='#\""},"value":"' r='100px' fill='#"},{"expression":{"id":12835,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"5454:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12836,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"color3","nodeType":"MemberAccess","referencedDeclaration":12675,"src":"5454:13:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"272f3e3c2f7376673e","id":12837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5497:11:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_6257da6d84399769a55eb558312555cad32511f19c4548b9e85f811c5fc99e3b","typeString":"literal_string \"'/></svg>\""},"value":"'/></svg>"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3c48d7b755ef30478f9fcb7df9667e587d5469eaab81f8e56e6c358f2f43959f","typeString":"literal_string \"<svg width='290' height='500' viewBox='0 0 290 500' xmlns='http://www.w3.org/2000/svg'><circle cx='\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_c122f56fb29fd1b2692bf38cf7def21d4f86567365fb92790a69e1dc6942704f","typeString":"literal_string \"' cy='\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_fa7e81ce29c44abe3185d042987960e602335452077f02be3f9233e7ae91d760","typeString":"literal_string \"' r='100px' fill='#\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_6257da6d84399769a55eb558312555cad32511f19c4548b9e85f811c5fc99e3b","typeString":"literal_string \"'/></svg>\""}],"expression":{"id":12826,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5110:3:85","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12827,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"5110:16:85","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5110:424:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12825,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5079:5:85","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":12824,"name":"bytes","nodeType":"ElementaryTypeName","src":"5079:5:85","typeDescriptions":{}}},"id":12839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5079:477:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":12822,"name":"Base64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6877,"src":"5044:6:85","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Base64_$6877_$","typeString":"type(library Base64)"}},"id":12823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":6876,"src":"5044:13:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function (bytes memory) pure returns (string memory)"}},"id":12840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5044:530:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"22202f3e3c6665426c656e64206d6f64653d226f7665726c61792220696e3d2270302220696e323d22703122202f3e3c6665426c656e64206d6f64653d226578636c7573696f6e2220696e323d22703222202f3e3c6665426c656e64206d6f64653d226f7665726c61792220696e323d2270332220726573756c743d22626c656e644f757422202f3e3c6665476175737369616e426c757220","id":12841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5592:155:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_483cd74bda08c7fcbdbb6c7b6985427b6812d47c5633f98b9e7615f669d7fafd","typeString":"literal_string \"\" /><feBlend mode=\"overlay\" in=\"p0\" in2=\"p1\" /><feBlend mode=\"exclusion\" in2=\"p2\" /><feBlend mode=\"overlay\" in2=\"p3\" result=\"blendOut\" /><feGaussianBlur \""},"value":"\" /><feBlend mode=\"overlay\" in=\"p0\" in2=\"p1\" /><feBlend mode=\"exclusion\" in2=\"p2\" /><feBlend mode=\"overlay\" in2=\"p3\" result=\"blendOut\" /><feGaussianBlur "},{"hexValue":"696e3d22626c656e644f75742220737464446576696174696f6e3d22343222202f3e3c2f66696c7465723e203c636c6970506174682069643d22636f726e657273223e3c726563742077696474683d2232393022206865696768743d22353030222072783d223432222072793d22343222202f3e3c2f636c6970506174683e","id":12842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5765:129:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f99c7530ff67b359dedbad02f868664b6089e4d686e89626dd44608ff6aab0f","typeString":"literal_string \"in=\"blendOut\" stdDeviation=\"42\" /></filter> <clipPath id=\"corners\"><rect width=\"290\" height=\"500\" rx=\"42\" ry=\"42\" /></clipPath>\""},"value":"in=\"blendOut\" stdDeviation=\"42\" /></filter> <clipPath id=\"corners\"><rect width=\"290\" height=\"500\" rx=\"42\" ry=\"42\" /></clipPath>"},{"hexValue":"3c706174682069643d22746578742d706174682d612220643d224d34302031322048323530204132382032382030203020312032373820343020563436302041323820323820302030203120323530203438382048343020413238203238203020302031203132203436302056343020413238203238203020302031203430203132207a22202f3e","id":12843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5912:138:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5b5eb1e85523a3353e56e3248818f208aaa79b1a09fe2e08149ce0068d90fe9","typeString":"literal_string \"<path id=\"text-path-a\" d=\"M40 12 H250 A28 28 0 0 1 278 40 V460 A28 28 0 0 1 250 488 H40 A28 28 0 0 1 12 460 V40 A28 28 0 0 1 40 12 z\" />\""},"value":"<path id=\"text-path-a\" d=\"M40 12 H250 A28 28 0 0 1 278 40 V460 A28 28 0 0 1 250 488 H40 A28 28 0 0 1 12 460 V40 A28 28 0 0 1 40 12 z\" />"},{"hexValue":"3c706174682069643d226d696e696d61702220643d224d3233342034343443323334203435372e393439203234322e323120343633203235332034363322202f3e","id":12844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6068:67:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_4b758653276e34b83f020b245d8a586eaf9cd26fbd97d7d3714c690e304e5721","typeString":"literal_string \"<path id=\"minimap\" d=\"M234 444C234 457.949 242.21 463 253 463\" />\""},"value":"<path id=\"minimap\" d=\"M234 444C234 457.949 242.21 463 253 463\" />"},{"hexValue":"3c66696c7465722069643d22746f702d726567696f6e2d626c7572223e3c6665476175737369616e426c757220696e3d22536f75726365477261706869632220737464446576696174696f6e3d22323422202f3e3c2f66696c7465723e","id":12845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6153:95:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_cce19a9de29f73714bae13db1d73ac08b59c78313444c83363cfef09d838c0c4","typeString":"literal_string \"<filter id=\"top-region-blur\"><feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"24\" /></filter>\""},"value":"<filter id=\"top-region-blur\"><feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"24\" /></filter>"},{"hexValue":"3c6c696e6561724772616469656e742069643d22677261642d7570222078313d2231222078323d2230222079313d2231222079323d2230223e3c73746f70206f66667365743d22302e30222073746f702d636f6c6f723d227768697465222073746f702d6f7061636974793d223122202f3e","id":12846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6266:116:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_a48f5f7836be870d77eac2feb87ec3732b4080b65a510a3f3cf11dab86d57166","typeString":"literal_string \"<linearGradient id=\"grad-up\" x1=\"1\" x2=\"0\" y1=\"1\" y2=\"0\"><stop offset=\"0.0\" stop-color=\"white\" stop-opacity=\"1\" />\""},"value":"<linearGradient id=\"grad-up\" x1=\"1\" x2=\"0\" y1=\"1\" y2=\"0\"><stop offset=\"0.0\" stop-color=\"white\" stop-opacity=\"1\" />"},{"hexValue":"3c73746f70206f66667365743d222e39222073746f702d636f6c6f723d227768697465222073746f702d6f7061636974793d223022202f3e3c2f6c696e6561724772616469656e743e","id":12847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6400:75:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_07d6b453733dfcd6acccdef8bdba430d27327460b66a4169d73ced361868fbe9","typeString":"literal_string \"<stop offset=\".9\" stop-color=\"white\" stop-opacity=\"0\" /></linearGradient>\""},"value":"<stop offset=\".9\" stop-color=\"white\" stop-opacity=\"0\" /></linearGradient>"},{"hexValue":"3c6c696e6561724772616469656e742069643d22677261642d646f776e222078313d2230222078323d2231222079313d2230222079323d2231223e3c73746f70206f66667365743d22302e30222073746f702d636f6c6f723d227768697465222073746f702d6f7061636974793d223122202f3e3c73746f70206f66667365743d22302e39222073746f702d636f6c6f723d227768697465222073746f702d6f7061636974793d223022202f3e3c2f6c696e6561724772616469656e743e","id":12848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6493:192:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_5d5eff5a3ee8c17e11f3f4661e6d1155f39e626dc52ccd2ee80907a3b00329d4","typeString":"literal_string \"<linearGradient id=\"grad-down\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"1\"><stop offset=\"0.0\" stop-color=\"white\" stop-opacity=\"1\" /><stop offset=\"0.9\" stop-color=\"white\" stop-opacity=\"0\" /></linearGradient>\""},"value":"<linearGradient id=\"grad-down\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"1\"><stop offset=\"0.0\" stop-color=\"white\" stop-opacity=\"1\" /><stop offset=\"0.9\" stop-color=\"white\" stop-opacity=\"0\" /></linearGradient>"},{"hexValue":"3c6d61736b2069643d22666164652d757022206d61736b436f6e74656e74556e6974733d226f626a656374426f756e64696e67426f78223e3c726563742077696474683d223122206865696768743d2231222066696c6c3d2275726c2823677261642d75702922202f3e3c2f6d61736b3e","id":12849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6703:115:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_1bdc0da2fd5d7002fb2e67d70b3a4672d03997001c86f1c58ba784d0bc3656db","typeString":"literal_string \"<mask id=\"fade-up\" maskContentUnits=\"objectBoundingBox\"><rect width=\"1\" height=\"1\" fill=\"url(#grad-up)\" /></mask>\""},"value":"<mask id=\"fade-up\" maskContentUnits=\"objectBoundingBox\"><rect width=\"1\" height=\"1\" fill=\"url(#grad-up)\" /></mask>"},{"hexValue":"3c6d61736b2069643d22666164652d646f776e22206d61736b436f6e74656e74556e6974733d226f626a656374426f756e64696e67426f78223e3c726563742077696474683d223122206865696768743d2231222066696c6c3d2275726c2823677261642d646f776e2922202f3e3c2f6d61736b3e","id":12850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6836:119:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_9981a2a43c36ee7e45e960c26200a8b379d01168693d5029bb6fd776ef3ff2b1","typeString":"literal_string \"<mask id=\"fade-down\" maskContentUnits=\"objectBoundingBox\"><rect width=\"1\" height=\"1\" fill=\"url(#grad-down)\" /></mask>\""},"value":"<mask id=\"fade-down\" maskContentUnits=\"objectBoundingBox\"><rect width=\"1\" height=\"1\" fill=\"url(#grad-down)\" /></mask>"},{"hexValue":"3c6d61736b2069643d226e6f6e6522206d61736b436f6e74656e74556e6974733d226f626a656374426f756e64696e67426f78223e3c726563742077696474683d223122206865696768743d2231222066696c6c3d22776869746522202f3e3c2f6d61736b3e","id":12851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6973:104:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_4e169cb09c58f4c64bb0df0614abdbc124a0076dcd8783c87e43cbd0d73facd1","typeString":"literal_string \"<mask id=\"none\" maskContentUnits=\"objectBoundingBox\"><rect width=\"1\" height=\"1\" fill=\"white\" /></mask>\""},"value":"<mask id=\"none\" maskContentUnits=\"objectBoundingBox\"><rect width=\"1\" height=\"1\" fill=\"white\" /></mask>"},{"hexValue":"3c6c696e6561724772616469656e742069643d22677261642d73796d626f6c223e3c73746f70206f66667365743d22302e37222073746f702d636f6c6f723d227768697465222073746f702d6f7061636974793d223122202f3e3c73746f70206f66667365743d222e3935222073746f702d636f6c6f723d227768697465222073746f702d6f7061636974793d223022202f3e3c2f6c696e6561724772616469656e743e","id":12852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7095:166:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_870e80063d91f6eff2750dd8a16316f934ba72da9e645a88b6f89454be1f4aef","typeString":"literal_string \"<linearGradient id=\"grad-symbol\"><stop offset=\"0.7\" stop-color=\"white\" stop-opacity=\"1\" /><stop offset=\".95\" stop-color=\"white\" stop-opacity=\"0\" /></linearGradient>\""},"value":"<linearGradient id=\"grad-symbol\"><stop offset=\"0.7\" stop-color=\"white\" stop-opacity=\"1\" /><stop offset=\".95\" stop-color=\"white\" stop-opacity=\"0\" /></linearGradient>"},{"hexValue":"3c6d61736b2069643d22666164652d73796d626f6c22206d61736b436f6e74656e74556e6974733d227573657253706163654f6e557365223e3c726563742077696474683d22323930707822206865696768743d223230307078222066696c6c3d2275726c2823677261642d73796d626f6c2922202f3e3c2f6d61736b3e3c2f646566733e","id":12853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7279:135:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_ca0f24c57a59db85f494ba6c0b8c49c5859b9cc88ba864c52bba19e858e653dd","typeString":"literal_string \"<mask id=\"fade-symbol\" maskContentUnits=\"userSpaceOnUse\"><rect width=\"290px\" height=\"200px\" fill=\"url(#grad-symbol)\" /></mask></defs>\""},"value":"<mask id=\"fade-symbol\" maskContentUnits=\"userSpaceOnUse\"><rect width=\"290px\" height=\"200px\" fill=\"url(#grad-symbol)\" /></mask></defs>"},{"hexValue":"3c6720636c69702d706174683d2275726c2823636f726e65727329223e","id":12854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7432:31:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_f091cfa977578cc3d31efb8591842fc4f1d1db02114f63fef964dafa0922c62d","typeString":"literal_string \"<g clip-path=\"url(#corners)\">\""},"value":"<g clip-path=\"url(#corners)\">"},{"hexValue":"3c726563742066696c6c3d22","id":12855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7481:14:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_84a823de185a2fe7015241c324f6c784eee47f2e7607badbd7abefa617433556","typeString":"literal_string \"<rect fill=\"\""},"value":"<rect fill=\""},{"expression":{"id":12856,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"7513:6:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams memory"}},"id":12857,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"color0","nodeType":"MemberAccess","referencedDeclaration":12669,"src":"7513:13:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"2220783d223070782220793d22307078222077696474683d22323930707822206865696768743d22353030707822202f3e","id":12858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7544:51:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_53fd26dadfe66b5102855d57af8e557a2267beae8def1e64f35bbd9a2d281ff9","typeString":"literal_string \"\" x=\"0px\" y=\"0px\" width=\"290px\" height=\"500px\" />\""},"value":"\" x=\"0px\" y=\"0px\" width=\"290px\" height=\"500px\" />"},{"hexValue":"3c72656374207374796c653d2266696c7465723a2075726c28236631292220783d223070782220793d22307078222077696474683d22323930707822206865696768743d22353030707822202f3e","id":12859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7613:80:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_09b07dfc70a17fef45f6fe3d38c10da942afae7501f50d1fe821bf1419a6c973","typeString":"literal_string \"<rect style=\"filter: url(#f1)\" x=\"0px\" y=\"0px\" width=\"290px\" height=\"500px\" />\""},"value":"<rect style=\"filter: url(#f1)\" x=\"0px\" y=\"0px\" width=\"290px\" height=\"500px\" />"},{"hexValue":"203c67207374796c653d2266696c7465723a75726c2823746f702d726567696f6e2d626c7572293b207472616e73666f726d3a7363616c6528312e35293b207472616e73666f726d2d6f726967696e3a63656e74657220746f703b223e","id":12860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7711:95:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_4639f96f89d1ef49f25e5140ee8e04694d126a00020aebcb2df7e75b5d9e8ff8","typeString":"literal_string \" <g style=\"filter:url(#top-region-blur); transform:scale(1.5); transform-origin:center top;\">\""},"value":" <g style=\"filter:url(#top-region-blur); transform:scale(1.5); transform-origin:center top;\">"},{"hexValue":"3c726563742066696c6c3d226e6f6e652220783d223070782220793d22307078222077696474683d22323930707822206865696768743d22353030707822202f3e","id":12861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7824:67:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_8341c95578aab9bb12f989782d4cab355e9933e289241d0b82aafe9fda945df1","typeString":"literal_string \"<rect fill=\"none\" x=\"0px\" y=\"0px\" width=\"290px\" height=\"500px\" />\""},"value":"<rect fill=\"none\" x=\"0px\" y=\"0px\" width=\"290px\" height=\"500px\" />"},{"hexValue":"3c656c6c697073652063783d22353025222063793d22307078222072783d223138307078222072793d223132307078222066696c6c3d222330303022206f7061636974793d22302e383522202f3e3c2f673e","id":12862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7909:84:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_79d1157f01e06698bf30fbcaee454ea514c61e81bedfc1aec9b48b048d03b463","typeString":"literal_string \"<ellipse cx=\"50%\" cy=\"0px\" rx=\"180px\" ry=\"120px\" fill=\"#000\" opacity=\"0.85\" /></g>\""},"value":"<ellipse cx=\"50%\" cy=\"0px\" rx=\"180px\" ry=\"120px\" fill=\"#000\" opacity=\"0.85\" /></g>"},{"hexValue":"3c7265637420783d22302220793d2230222077696474683d2232393022206865696768743d22353030222072783d223432222072793d223432222066696c6c3d227267626128302c302c302c302922207374726f6b653d2272676261283235352c3235352c3235352c302e322922202f3e3c2f673e","id":12863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8011:119:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_ca91dbc17e7b32a20d9c61bf3a31fc39e1843cdda3f9b6d132c3190c832ad888","typeString":"literal_string \"<rect x=\"0\" y=\"0\" width=\"290\" height=\"500\" rx=\"42\" ry=\"42\" fill=\"rgba(0,0,0,0)\" stroke=\"rgba(255,255,255,0.2)\" /></g>\""},"value":"<rect x=\"0\" y=\"0\" width=\"290\" height=\"500\" rx=\"42\" ry=\"42\" fill=\"rgba(0,0,0,0)\" stroke=\"rgba(255,255,255,0.2)\" /></g>"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_12907fa788c43c090d50faf378fd6f9ac466c604e59cc51ff30ae1bbbc38c8bd","typeString":"literal_string \"<svg width=\"290\" height=\"500\" viewBox=\"0 0 290 500\" xmlns=\"http://www.w3.org/2000/svg\"\""},{"typeIdentifier":"t_stringliteral_84f36e7e631ec50512631a7d2b642e3c86e37c99d02e185264181ea0fe53feba","typeString":"literal_string \" xmlns:xlink='http://www.w3.org/1999/xlink'>\""},{"typeIdentifier":"t_stringliteral_c9d6f35adafbd6db05cf66701a579ef4e1499ac0364b80726ad93d0f9855ba3a","typeString":"literal_string \"<defs>\""},{"typeIdentifier":"t_stringliteral_5f5eeeecaa6e9906b36c9738130fb3306daeecaf7d327c054480dbfce019ef56","typeString":"literal_string \"<filter id=\"f1\"><feImage result=\"p0\" xlink:href=\"data:image/svg+xml;base64,\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_c8625c4ff6c954b2db14bd1706ddcdc7c7bbd2e8489b900eeea309e5e9154d1f","typeString":"literal_string \"\"/><feImage result=\"p1\" xlink:href=\"data:image/svg+xml;base64,\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_735ef1ca53a2b4f5317a913b38868565c310f491134932b2790ac296eda48267","typeString":"literal_string \"\"/><feImage result=\"p2\" xlink:href=\"data:image/svg+xml;base64,\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_72725e47f491f4a2a7cef9977dd6b3ea1a81d838d9448981484a063dc011d6ba","typeString":"literal_string \"\" />\""},{"typeIdentifier":"t_stringliteral_0b30bb9ee6214545b9ea9097efb5de130600391f40197f097cab945da2430220","typeString":"literal_string \"<feImage result=\"p3\" xlink:href=\"data:image/svg+xml;base64,\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_483cd74bda08c7fcbdbb6c7b6985427b6812d47c5633f98b9e7615f669d7fafd","typeString":"literal_string \"\" /><feBlend mode=\"overlay\" in=\"p0\" in2=\"p1\" /><feBlend mode=\"exclusion\" in2=\"p2\" /><feBlend mode=\"overlay\" in2=\"p3\" result=\"blendOut\" /><feGaussianBlur \""},{"typeIdentifier":"t_stringliteral_9f99c7530ff67b359dedbad02f868664b6089e4d686e89626dd44608ff6aab0f","typeString":"literal_string \"in=\"blendOut\" stdDeviation=\"42\" /></filter> <clipPath id=\"corners\"><rect width=\"290\" height=\"500\" rx=\"42\" ry=\"42\" /></clipPath>\""},{"typeIdentifier":"t_stringliteral_c5b5eb1e85523a3353e56e3248818f208aaa79b1a09fe2e08149ce0068d90fe9","typeString":"literal_string \"<path id=\"text-path-a\" d=\"M40 12 H250 A28 28 0 0 1 278 40 V460 A28 28 0 0 1 250 488 H40 A28 28 0 0 1 12 460 V40 A28 28 0 0 1 40 12 z\" />\""},{"typeIdentifier":"t_stringliteral_4b758653276e34b83f020b245d8a586eaf9cd26fbd97d7d3714c690e304e5721","typeString":"literal_string \"<path id=\"minimap\" d=\"M234 444C234 457.949 242.21 463 253 463\" />\""},{"typeIdentifier":"t_stringliteral_cce19a9de29f73714bae13db1d73ac08b59c78313444c83363cfef09d838c0c4","typeString":"literal_string \"<filter id=\"top-region-blur\"><feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"24\" /></filter>\""},{"typeIdentifier":"t_stringliteral_a48f5f7836be870d77eac2feb87ec3732b4080b65a510a3f3cf11dab86d57166","typeString":"literal_string \"<linearGradient id=\"grad-up\" x1=\"1\" x2=\"0\" y1=\"1\" y2=\"0\"><stop offset=\"0.0\" stop-color=\"white\" stop-opacity=\"1\" />\""},{"typeIdentifier":"t_stringliteral_07d6b453733dfcd6acccdef8bdba430d27327460b66a4169d73ced361868fbe9","typeString":"literal_string \"<stop offset=\".9\" stop-color=\"white\" stop-opacity=\"0\" /></linearGradient>\""},{"typeIdentifier":"t_stringliteral_5d5eff5a3ee8c17e11f3f4661e6d1155f39e626dc52ccd2ee80907a3b00329d4","typeString":"literal_string \"<linearGradient id=\"grad-down\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"1\"><stop offset=\"0.0\" stop-color=\"white\" stop-opacity=\"1\" /><stop offset=\"0.9\" stop-color=\"white\" stop-opacity=\"0\" /></linearGradient>\""},{"typeIdentifier":"t_stringliteral_1bdc0da2fd5d7002fb2e67d70b3a4672d03997001c86f1c58ba784d0bc3656db","typeString":"literal_string \"<mask id=\"fade-up\" maskContentUnits=\"objectBoundingBox\"><rect width=\"1\" height=\"1\" fill=\"url(#grad-up)\" /></mask>\""},{"typeIdentifier":"t_stringliteral_9981a2a43c36ee7e45e960c26200a8b379d01168693d5029bb6fd776ef3ff2b1","typeString":"literal_string \"<mask id=\"fade-down\" maskContentUnits=\"objectBoundingBox\"><rect width=\"1\" height=\"1\" fill=\"url(#grad-down)\" /></mask>\""},{"typeIdentifier":"t_stringliteral_4e169cb09c58f4c64bb0df0614abdbc124a0076dcd8783c87e43cbd0d73facd1","typeString":"literal_string \"<mask id=\"none\" maskContentUnits=\"objectBoundingBox\"><rect width=\"1\" height=\"1\" fill=\"white\" /></mask>\""},{"typeIdentifier":"t_stringliteral_870e80063d91f6eff2750dd8a16316f934ba72da9e645a88b6f89454be1f4aef","typeString":"literal_string \"<linearGradient id=\"grad-symbol\"><stop offset=\"0.7\" stop-color=\"white\" stop-opacity=\"1\" /><stop offset=\".95\" stop-color=\"white\" stop-opacity=\"0\" /></linearGradient>\""},{"typeIdentifier":"t_stringliteral_ca0f24c57a59db85f494ba6c0b8c49c5859b9cc88ba864c52bba19e858e653dd","typeString":"literal_string \"<mask id=\"fade-symbol\" maskContentUnits=\"userSpaceOnUse\"><rect width=\"290px\" height=\"200px\" fill=\"url(#grad-symbol)\" /></mask></defs>\""},{"typeIdentifier":"t_stringliteral_f091cfa977578cc3d31efb8591842fc4f1d1db02114f63fef964dafa0922c62d","typeString":"literal_string \"<g clip-path=\"url(#corners)\">\""},{"typeIdentifier":"t_stringliteral_84a823de185a2fe7015241c324f6c784eee47f2e7607badbd7abefa617433556","typeString":"literal_string \"<rect fill=\"\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_53fd26dadfe66b5102855d57af8e557a2267beae8def1e64f35bbd9a2d281ff9","typeString":"literal_string \"\" x=\"0px\" y=\"0px\" width=\"290px\" height=\"500px\" />\""},{"typeIdentifier":"t_stringliteral_09b07dfc70a17fef45f6fe3d38c10da942afae7501f50d1fe821bf1419a6c973","typeString":"literal_string \"<rect style=\"filter: url(#f1)\" x=\"0px\" y=\"0px\" width=\"290px\" height=\"500px\" />\""},{"typeIdentifier":"t_stringliteral_4639f96f89d1ef49f25e5140ee8e04694d126a00020aebcb2df7e75b5d9e8ff8","typeString":"literal_string \" <g style=\"filter:url(#top-region-blur); transform:scale(1.5); transform-origin:center top;\">\""},{"typeIdentifier":"t_stringliteral_8341c95578aab9bb12f989782d4cab355e9933e289241d0b82aafe9fda945df1","typeString":"literal_string \"<rect fill=\"none\" x=\"0px\" y=\"0px\" width=\"290px\" height=\"500px\" />\""},{"typeIdentifier":"t_stringliteral_79d1157f01e06698bf30fbcaee454ea514c61e81bedfc1aec9b48b048d03b463","typeString":"literal_string \"<ellipse cx=\"50%\" cy=\"0px\" rx=\"180px\" ry=\"120px\" fill=\"#000\" opacity=\"0.85\" /></g>\""},{"typeIdentifier":"t_stringliteral_ca91dbc17e7b32a20d9c61bf3a31fc39e1843cdda3f9b6d132c3190c832ad888","typeString":"literal_string \"<rect x=\"0\" y=\"0\" width=\"290\" height=\"500\" rx=\"42\" ry=\"42\" fill=\"rgba(0,0,0,0)\" stroke=\"rgba(255,255,255,0.2)\" /></g>\""}],"expression":{"id":12761,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2945:3:85","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12762,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"2945:16:85","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2945:5199:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12760,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2925:6:85","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":12759,"name":"string","nodeType":"ElementaryTypeName","src":"2925:6:85","typeDescriptions":{}}},"id":12865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2925:5229:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2919:5235:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":12867,"nodeType":"ExpressionStatement","src":"2919:5235:85"}]},"id":12869,"implemented":true,"kind":"function","modifiers":[],"name":"generateSVGDefs","nodeType":"FunctionDefinition","parameters":{"id":12754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12753,"mutability":"mutable","name":"params","nodeType":"VariableDeclaration","scope":12869,"src":"2843:23:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_memory_ptr","typeString":"struct NFTSVG.SVGParams"},"typeName":{"id":12752,"name":"SVGParams","nodeType":"UserDefinedTypeName","referencedDeclaration":12688,"src":"2843:9:85","typeDescriptions":{"typeIdentifier":"t_struct$_SVGParams_$12688_storage_ptr","typeString":"struct NFTSVG.SVGParams"}},"visibility":"internal"}],"src":"2842:25:85"},"returnParameters":{"id":12757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12756,"mutability":"mutable","name":"svg","nodeType":"VariableDeclaration","scope":12869,"src":"2890:17:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12755,"name":"string","nodeType":"ElementaryTypeName","src":"2890:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2889:19:85"},"scope":13550,"src":"2818:5343:85","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":12912,"nodeType":"Block","src":"8391:1711:85","statements":[{"expression":{"id":12910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12882,"name":"svg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12880,"src":"8401:3:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"3c7465787420746578742d72656e646572696e673d226f7074696d697a655370656564223e","id":12887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8461:39:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_def1de1dcd58e9459a64156d5380ddffd45a29faa565a4062a201283a4b86c28","typeString":"literal_string \"<text text-rendering=\"optimizeSpeed\">\""},"value":"<text text-rendering=\"optimizeSpeed\">"},{"hexValue":"3c74657874506174682073746172744f66667365743d222d31303025222066696c6c3d2277686974652220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d73697a653d22313070782220786c696e6b3a687265663d2223746578742d706174682d61223e","id":12888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8518:129:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_5c021e382e7c7104a13e2471955db1e88164a0a2701d8def1c530fbda61a37dc","typeString":"literal_string \"<textPath startOffset=\"-100%\" fill=\"white\" font-family=\"'Courier New', monospace\" font-size=\"10px\" xlink:href=\"#text-path-a\">\""},"value":"<textPath startOffset=\"-100%\" fill=\"white\" font-family=\"'Courier New', monospace\" font-size=\"10px\" xlink:href=\"#text-path-a\">"},{"id":12889,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12873,"src":"8665:9:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"20e280a220","id":12890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"unicodeString","lValueRequested":false,"nodeType":"Literal","src":"8692:14:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_e95eeea5856ede1036273fb77d6c19f7ed6ad714c1773e773c8cd40b496df17b","typeString":"literal_string hex\"20e280a220\""},"value":" • "},{"id":12891,"name":"baseTokenSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12877,"src":"8724:15:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"203c616e696d6174652061646469746976653d2273756d22206174747269627574654e616d653d2273746172744f6666736574222066726f6d3d2230252220746f3d22313030252220626567696e3d22307322206475723d223330732220726570656174436f756e743d22696e646566696e69746522202f3e","id":12892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8757:123:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_5ac049306c61d2605d500baef9423dd59101a8acd4643a030e0b4b8780979a7f","typeString":"literal_string \" <animate additive=\"sum\" attributeName=\"startOffset\" from=\"0%\" to=\"100%\" begin=\"0s\" dur=\"30s\" repeatCount=\"indefinite\" />\""},"value":" <animate additive=\"sum\" attributeName=\"startOffset\" from=\"0%\" to=\"100%\" begin=\"0s\" dur=\"30s\" repeatCount=\"indefinite\" />"},{"hexValue":"3c2f74657874506174683e203c74657874506174682073746172744f66667365743d223025222066696c6c3d2277686974652220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d73697a653d22313070782220786c696e6b3a687265663d2223746578742d706174682d61223e","id":12893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8898:138:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_dd2dd1ce2446da3135b69075c1bfb5ae217a66fb97ea23bbfa9101533f005eee","typeString":"literal_string \"</textPath> <textPath startOffset=\"0%\" fill=\"white\" font-family=\"'Courier New', monospace\" font-size=\"10px\" xlink:href=\"#text-path-a\">\""},"value":"</textPath> <textPath startOffset=\"0%\" fill=\"white\" font-family=\"'Courier New', monospace\" font-size=\"10px\" xlink:href=\"#text-path-a\">"},{"id":12894,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12873,"src":"9054:9:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"20e280a220","id":12895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"unicodeString","lValueRequested":false,"nodeType":"Literal","src":"9081:14:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_e95eeea5856ede1036273fb77d6c19f7ed6ad714c1773e773c8cd40b496df17b","typeString":"literal_string hex\"20e280a220\""},"value":" • "},{"id":12896,"name":"baseTokenSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12877,"src":"9113:15:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"203c616e696d6174652061646469746976653d2273756d22206174747269627574654e616d653d2273746172744f6666736574222066726f6d3d2230252220746f3d22313030252220626567696e3d22307322206475723d223330732220726570656174436f756e743d22696e646566696e69746522202f3e203c2f74657874506174683e","id":12897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9146:135:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_12e5d23ac3d5565fca6e18679427bcbe328ab78094fc30d5dc29018e64601f05","typeString":"literal_string \" <animate additive=\"sum\" attributeName=\"startOffset\" from=\"0%\" to=\"100%\" begin=\"0s\" dur=\"30s\" repeatCount=\"indefinite\" /> </textPath>\""},"value":" <animate additive=\"sum\" attributeName=\"startOffset\" from=\"0%\" to=\"100%\" begin=\"0s\" dur=\"30s\" repeatCount=\"indefinite\" /> </textPath>"},{"hexValue":"3c74657874506174682073746172744f66667365743d22353025222066696c6c3d2277686974652220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d73697a653d22313070782220786c696e6b3a687265663d2223746578742d706174682d61223e","id":12898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9299:127:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_bba7d0e9c87f4fc07285d3901f65b11169f0a648c5503e2a93e1438c905d75bd","typeString":"literal_string \"<textPath startOffset=\"50%\" fill=\"white\" font-family=\"'Courier New', monospace\" font-size=\"10px\" xlink:href=\"#text-path-a\">\""},"value":"<textPath startOffset=\"50%\" fill=\"white\" font-family=\"'Courier New', monospace\" font-size=\"10px\" xlink:href=\"#text-path-a\">"},{"id":12899,"name":"quoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"9444:10:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"20e280a220","id":12900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"unicodeString","lValueRequested":false,"nodeType":"Literal","src":"9472:14:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_e95eeea5856ede1036273fb77d6c19f7ed6ad714c1773e773c8cd40b496df17b","typeString":"literal_string hex\"20e280a220\""},"value":" • "},{"id":12901,"name":"quoteTokenSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12875,"src":"9504:16:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"203c616e696d6174652061646469746976653d2273756d22206174747269627574654e616d653d2273746172744f6666736574222066726f6d3d2230252220746f3d22313030252220626567696e3d22307322206475723d2233307322","id":12902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9538:95:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_2150a1c8c321a12bc9aebef62dce6760f1d4a6152ca8e7d1cfc2a91709c86ed3","typeString":"literal_string \" <animate additive=\"sum\" attributeName=\"startOffset\" from=\"0%\" to=\"100%\" begin=\"0s\" dur=\"30s\"\""},"value":" <animate additive=\"sum\" attributeName=\"startOffset\" from=\"0%\" to=\"100%\" begin=\"0s\" dur=\"30s\""},{"hexValue":"20726570656174436f756e743d22696e646566696e69746522202f3e3c2f74657874506174683e3c74657874506174682073746172744f66667365743d222d353025222066696c6c3d2277686974652220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d73697a653d22313070782220786c696e6b3a687265663d2223746578742d706174682d61223e","id":12903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9651:167:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_9421d2b325b171273133fcca90ccbe277797196ba10501e62827c87ba1f00867","typeString":"literal_string \" repeatCount=\"indefinite\" /></textPath><textPath startOffset=\"-50%\" fill=\"white\" font-family=\"'Courier New', monospace\" font-size=\"10px\" xlink:href=\"#text-path-a\">\""},"value":" repeatCount=\"indefinite\" /></textPath><textPath startOffset=\"-50%\" fill=\"white\" font-family=\"'Courier New', monospace\" font-size=\"10px\" xlink:href=\"#text-path-a\">"},{"id":12904,"name":"quoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"9836:10:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"20e280a220","id":12905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"unicodeString","lValueRequested":false,"nodeType":"Literal","src":"9864:14:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_e95eeea5856ede1036273fb77d6c19f7ed6ad714c1773e773c8cd40b496df17b","typeString":"literal_string hex\"20e280a220\""},"value":" • "},{"id":12906,"name":"quoteTokenSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12875,"src":"9896:16:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"203c616e696d6174652061646469746976653d2273756d22206174747269627574654e616d653d2273746172744f6666736574222066726f6d3d2230252220746f3d22313030252220626567696e3d22307322206475723d223330732220726570656174436f756e743d22696e646566696e69746522202f3e3c2f74657874506174683e3c2f746578743e","id":12907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9930:141:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_02f06577ff640a7b9a57b4040afd931b573e563f869bd83106611dd7f5abd304","typeString":"literal_string \" <animate additive=\"sum\" attributeName=\"startOffset\" from=\"0%\" to=\"100%\" begin=\"0s\" dur=\"30s\" repeatCount=\"indefinite\" /></textPath></text>\""},"value":" <animate additive=\"sum\" attributeName=\"startOffset\" from=\"0%\" to=\"100%\" begin=\"0s\" dur=\"30s\" repeatCount=\"indefinite\" /></textPath></text>"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_def1de1dcd58e9459a64156d5380ddffd45a29faa565a4062a201283a4b86c28","typeString":"literal_string \"<text text-rendering=\"optimizeSpeed\">\""},{"typeIdentifier":"t_stringliteral_5c021e382e7c7104a13e2471955db1e88164a0a2701d8def1c530fbda61a37dc","typeString":"literal_string \"<textPath startOffset=\"-100%\" fill=\"white\" font-family=\"'Courier New', monospace\" font-size=\"10px\" xlink:href=\"#text-path-a\">\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_e95eeea5856ede1036273fb77d6c19f7ed6ad714c1773e773c8cd40b496df17b","typeString":"literal_string hex\"20e280a220\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_5ac049306c61d2605d500baef9423dd59101a8acd4643a030e0b4b8780979a7f","typeString":"literal_string \" <animate additive=\"sum\" attributeName=\"startOffset\" from=\"0%\" to=\"100%\" begin=\"0s\" dur=\"30s\" repeatCount=\"indefinite\" />\""},{"typeIdentifier":"t_stringliteral_dd2dd1ce2446da3135b69075c1bfb5ae217a66fb97ea23bbfa9101533f005eee","typeString":"literal_string \"</textPath> <textPath startOffset=\"0%\" fill=\"white\" font-family=\"'Courier New', monospace\" font-size=\"10px\" xlink:href=\"#text-path-a\">\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_e95eeea5856ede1036273fb77d6c19f7ed6ad714c1773e773c8cd40b496df17b","typeString":"literal_string hex\"20e280a220\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_12e5d23ac3d5565fca6e18679427bcbe328ab78094fc30d5dc29018e64601f05","typeString":"literal_string \" <animate additive=\"sum\" attributeName=\"startOffset\" from=\"0%\" to=\"100%\" begin=\"0s\" dur=\"30s\" repeatCount=\"indefinite\" /> </textPath>\""},{"typeIdentifier":"t_stringliteral_bba7d0e9c87f4fc07285d3901f65b11169f0a648c5503e2a93e1438c905d75bd","typeString":"literal_string \"<textPath startOffset=\"50%\" fill=\"white\" font-family=\"'Courier New', monospace\" font-size=\"10px\" xlink:href=\"#text-path-a\">\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_e95eeea5856ede1036273fb77d6c19f7ed6ad714c1773e773c8cd40b496df17b","typeString":"literal_string hex\"20e280a220\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_2150a1c8c321a12bc9aebef62dce6760f1d4a6152ca8e7d1cfc2a91709c86ed3","typeString":"literal_string \" <animate additive=\"sum\" attributeName=\"startOffset\" from=\"0%\" to=\"100%\" begin=\"0s\" dur=\"30s\"\""},{"typeIdentifier":"t_stringliteral_9421d2b325b171273133fcca90ccbe277797196ba10501e62827c87ba1f00867","typeString":"literal_string \" repeatCount=\"indefinite\" /></textPath><textPath startOffset=\"-50%\" fill=\"white\" font-family=\"'Courier New', monospace\" font-size=\"10px\" xlink:href=\"#text-path-a\">\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_e95eeea5856ede1036273fb77d6c19f7ed6ad714c1773e773c8cd40b496df17b","typeString":"literal_string hex\"20e280a220\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_02f06577ff640a7b9a57b4040afd931b573e563f869bd83106611dd7f5abd304","typeString":"literal_string \" <animate additive=\"sum\" attributeName=\"startOffset\" from=\"0%\" to=\"100%\" begin=\"0s\" dur=\"30s\" repeatCount=\"indefinite\" /></textPath></text>\""}],"expression":{"id":12885,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8427:3:85","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12886,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"8427:16:85","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8427:1658:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12884,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8407:6:85","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":12883,"name":"string","nodeType":"ElementaryTypeName","src":"8407:6:85","typeDescriptions":{}}},"id":12909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8407:1688:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"8401:1694:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":12911,"nodeType":"ExpressionStatement","src":"8401:1694:85"}]},"id":12913,"implemented":true,"kind":"function","modifiers":[],"name":"generateSVGBorderText","nodeType":"FunctionDefinition","parameters":{"id":12878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12871,"mutability":"mutable","name":"quoteToken","nodeType":"VariableDeclaration","scope":12913,"src":"8207:24:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12870,"name":"string","nodeType":"ElementaryTypeName","src":"8207:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12873,"mutability":"mutable","name":"baseToken","nodeType":"VariableDeclaration","scope":12913,"src":"8241:23:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12872,"name":"string","nodeType":"ElementaryTypeName","src":"8241:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12875,"mutability":"mutable","name":"quoteTokenSymbol","nodeType":"VariableDeclaration","scope":12913,"src":"8274:30:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12874,"name":"string","nodeType":"ElementaryTypeName","src":"8274:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12877,"mutability":"mutable","name":"baseTokenSymbol","nodeType":"VariableDeclaration","scope":12913,"src":"8314:29:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12876,"name":"string","nodeType":"ElementaryTypeName","src":"8314:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8197:152:85"},"returnParameters":{"id":12881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12880,"mutability":"mutable","name":"svg","nodeType":"VariableDeclaration","scope":12913,"src":"8372:17:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12879,"name":"string","nodeType":"ElementaryTypeName","src":"8372:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8371:19:85"},"scope":13550,"src":"8167:1935:85","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":12941,"nodeType":"Block","src":"10296:730:85","statements":[{"expression":{"id":12939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12924,"name":"svg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12922,"src":"10306:3:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"3c67206d61736b3d2275726c2823666164652d73796d626f6c29223e3c726563742066696c6c3d226e6f6e652220783d223070782220793d22307078222077696474683d22323930707822206865696768743d22323030707822202f3e203c7465787420793d22373070782220783d2233327078222066696c6c3d2277686974652220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d7765696768743d223230302220666f6e742d73697a653d2233367078223e","id":12929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10366:209:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f48c6991d8370b108e265feefc6212179a011d404515a1dce8a57af40b85b7f","typeString":"literal_string \"<g mask=\"url(#fade-symbol)\"><rect fill=\"none\" x=\"0px\" y=\"0px\" width=\"290px\" height=\"200px\" /> <text y=\"70px\" x=\"32px\" fill=\"white\" font-family=\"'Courier New', monospace\" font-weight=\"200\" font-size=\"36px\">\""},"value":"<g mask=\"url(#fade-symbol)\"><rect fill=\"none\" x=\"0px\" y=\"0px\" width=\"290px\" height=\"200px\" /> <text y=\"70px\" x=\"32px\" fill=\"white\" font-family=\"'Courier New', monospace\" font-weight=\"200\" font-size=\"36px\">"},{"id":12930,"name":"quoteTokenSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12915,"src":"10593:16:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"2f","id":12931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10627:3:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527","typeString":"literal_string \"/\""},"value":"/"},{"id":12932,"name":"baseTokenSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12917,"src":"10648:15:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"3c2f746578743e3c7465787420793d2231313570782220783d2233327078222066696c6c3d2277686974652220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d7765696768743d223230302220666f6e742d73697a653d2233367078223e","id":12933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10681:123:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_f6a4c28d3a8f91939e9dde8d20603d72bf408bb3a4810ebf3bb6c06742d8297b","typeString":"literal_string \"</text><text y=\"115px\" x=\"32px\" fill=\"white\" font-family=\"'Courier New', monospace\" font-weight=\"200\" font-size=\"36px\">\""},"value":"</text><text y=\"115px\" x=\"32px\" fill=\"white\" font-family=\"'Courier New', monospace\" font-weight=\"200\" font-size=\"36px\">"},{"id":12934,"name":"feeTier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12919,"src":"10822:7:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"3c2f746578743e3c2f673e","id":12935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10847:13:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_0b7427e2f769aaaa13bde5b715b09255dc5398714a59a798afc7999c8e6ae7f0","typeString":"literal_string \"</text></g>\""},"value":"</text></g>"},{"hexValue":"3c7265637420783d2231362220793d223136222077696474683d2232353822206865696768743d22343638222072783d223236222072793d223236222066696c6c3d227267626128302c302c302c302922207374726f6b653d2272676261283235352c3235352c3235352c302e322922202f3e","id":12936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10878:117:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_e0b4a009558fed53d8b93645952b1120d122982ebf4ca4d1136598e7708bf775","typeString":"literal_string \"<rect x=\"16\" y=\"16\" width=\"258\" height=\"468\" rx=\"26\" ry=\"26\" fill=\"rgba(0,0,0,0)\" stroke=\"rgba(255,255,255,0.2)\" />\""},"value":"<rect x=\"16\" y=\"16\" width=\"258\" height=\"468\" rx=\"26\" ry=\"26\" fill=\"rgba(0,0,0,0)\" stroke=\"rgba(255,255,255,0.2)\" />"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0f48c6991d8370b108e265feefc6212179a011d404515a1dce8a57af40b85b7f","typeString":"literal_string \"<g mask=\"url(#fade-symbol)\"><rect fill=\"none\" x=\"0px\" y=\"0px\" width=\"290px\" height=\"200px\" /> <text y=\"70px\" x=\"32px\" fill=\"white\" font-family=\"'Courier New', monospace\" font-weight=\"200\" font-size=\"36px\">\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527","typeString":"literal_string \"/\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_f6a4c28d3a8f91939e9dde8d20603d72bf408bb3a4810ebf3bb6c06742d8297b","typeString":"literal_string \"</text><text y=\"115px\" x=\"32px\" fill=\"white\" font-family=\"'Courier New', monospace\" font-weight=\"200\" font-size=\"36px\">\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_0b7427e2f769aaaa13bde5b715b09255dc5398714a59a798afc7999c8e6ae7f0","typeString":"literal_string \"</text></g>\""},{"typeIdentifier":"t_stringliteral_e0b4a009558fed53d8b93645952b1120d122982ebf4ca4d1136598e7708bf775","typeString":"literal_string \"<rect x=\"16\" y=\"16\" width=\"258\" height=\"468\" rx=\"26\" ry=\"26\" fill=\"rgba(0,0,0,0)\" stroke=\"rgba(255,255,255,0.2)\" />\""}],"expression":{"id":12927,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10332:3:85","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12928,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"10332:16:85","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10332:677:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10312:6:85","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":12925,"name":"string","nodeType":"ElementaryTypeName","src":"10312:6:85","typeDescriptions":{}}},"id":12938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10312:707:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"10306:713:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":12940,"nodeType":"ExpressionStatement","src":"10306:713:85"}]},"id":12942,"implemented":true,"kind":"function","modifiers":[],"name":"generateSVGCardMantle","nodeType":"FunctionDefinition","parameters":{"id":12920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12915,"mutability":"mutable","name":"quoteTokenSymbol","nodeType":"VariableDeclaration","scope":12942,"src":"10148:30:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12914,"name":"string","nodeType":"ElementaryTypeName","src":"10148:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12917,"mutability":"mutable","name":"baseTokenSymbol","nodeType":"VariableDeclaration","scope":12942,"src":"10188:29:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12916,"name":"string","nodeType":"ElementaryTypeName","src":"10188:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12919,"mutability":"mutable","name":"feeTier","nodeType":"VariableDeclaration","scope":12942,"src":"10227:21:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12918,"name":"string","nodeType":"ElementaryTypeName","src":"10227:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"10138:116:85"},"returnParameters":{"id":12923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12922,"mutability":"mutable","name":"svg","nodeType":"VariableDeclaration","scope":12942,"src":"10277:17:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12921,"name":"string","nodeType":"ElementaryTypeName","src":"10277:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"10276:19:85"},"scope":13550,"src":"10108:918:85","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":13004,"nodeType":"Block","src":"11206:1122:85","statements":[{"assignments":[12956],"declarations":[{"constant":false,"id":12956,"mutability":"mutable","name":"fade","nodeType":"VariableDeclaration","scope":13004,"src":"11216:18:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12955,"name":"string","nodeType":"ElementaryTypeName","src":"11216:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":12969,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int8","typeString":"int8"},"id":12959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12957,"name":"overRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12950,"src":"11237:9:85","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":12958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11250:1:85","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11237:14:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"condition":{"commonType":{"typeIdentifier":"t_int8","typeString":"int8"},"id":12964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12961,"name":"overRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12950,"src":"11291:9:85","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":12963,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"11304:2:85","subExpression":{"hexValue":"31","id":12962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11305:1:85","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}},"src":"11291:15:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"236e6f6e65","id":12966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11356:7:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_de3d54d0009a30de6574658fe768c121745861e4ddbc47fa69ea53fecbbb0a0c","typeString":"literal_string \"#none\""},"value":"#none"},"id":12967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11291:72:85","trueExpression":{"hexValue":"23666164652d646f776e","id":12965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11325:12:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_2b01e6fb7a2c53cd6a7605ccb24831699c60989eff7007eb7c3036e4ed9f56e1","typeString":"literal_string \"#fade-down\""},"value":"#fade-down"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":12968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11237:126:85","trueExpression":{"hexValue":"23666164652d7570","id":12960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11266:10:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_d462c7626c0238db39d4f1d403630879f178b4bb0ebe2e10a6b1998122e55d72","typeString":"literal_string \"#fade-up\""},"value":"#fade-up"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"11216:147:85"},{"assignments":[12971],"declarations":[{"constant":false,"id":12971,"mutability":"mutable","name":"curve","nodeType":"VariableDeclaration","scope":13004,"src":"11373:19:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12970,"name":"string","nodeType":"ElementaryTypeName","src":"11373:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":12977,"initialValue":{"arguments":[{"id":12973,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12944,"src":"11404:9:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":12974,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12946,"src":"11415:9:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":12975,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12948,"src":"11426:11:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"id":12972,"name":"getCurve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13094,"src":"11395:8:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$_t_int24_$_t_int24_$returns$_t_string_memory_ptr_$","typeString":"function (int24,int24,int24) pure returns (string memory)"}},"id":12976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11395:43:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"11373:65:85"},{"expression":{"id":13002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12978,"name":"svg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12953,"src":"11448:3:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"3c67206d61736b3d2275726c28","id":12983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11508:15:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_073f6ea16f7ccb68c2d82384c98a49ffe08e4d0cca470dd7b597850d3360adf1","typeString":"literal_string \"<g mask=\"url(\""},"value":"<g mask=\"url("},{"id":12984,"name":"fade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12956,"src":"11541:4:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"2922","id":12985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11563:4:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_c4b4594b062b8dfb6eaf7db997d942d04b66dec75ec258222a814ab915492f07","typeString":"literal_string \")\"\""},"value":")\""},{"hexValue":"207374796c653d227472616e73666f726d3a7472616e736c61746528373270782c313839707829223e3c7265637420783d222d313670782220793d222d31367078222077696474683d22313830707822206865696768743d223138307078222066696c6c3d226e6f6e6522202f3e3c7061746820643d22","id":12986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11585:159:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_8d38c449c54623af115300f0b4cd575c9ad248d96fa963ffbc8a5d10a537195e","typeString":"literal_string \" style=\"transform:translate(72px,189px)\"><rect x=\"-16px\" y=\"-16px\" width=\"180px\" height=\"180px\" fill=\"none\" /><path d=\"\""},"value":" style=\"transform:translate(72px,189px)\"><rect x=\"-16px\" y=\"-16px\" width=\"180px\" height=\"180px\" fill=\"none\" /><path d=\""},{"id":12987,"name":"curve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12971,"src":"11762:5:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"22207374726f6b653d227267626128302c302c302c302e332922207374726f6b652d77696474683d2233327078222066696c6c3d226e6f6e6522207374726f6b652d6c696e656361703d22726f756e6422202f3e","id":12988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11785:86:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_20b18c33024e2e0e17abfb47072fb69fd233a084a9b52e7077234344339ef1d2","typeString":"literal_string \"\" stroke=\"rgba(0,0,0,0.3)\" stroke-width=\"32px\" fill=\"none\" stroke-linecap=\"round\" />\""},"value":"\" stroke=\"rgba(0,0,0,0.3)\" stroke-width=\"32px\" fill=\"none\" stroke-linecap=\"round\" />"},{"hexValue":"3c2f673e3c67206d61736b3d2275726c28","id":12989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11889:19:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_5d5b8544d6c3a0963cab785f7bfd6c7e8729a866fc2c71a9b519c74a2851ad8e","typeString":"literal_string \"</g><g mask=\"url(\""},"value":"</g><g mask=\"url("},{"id":12990,"name":"fade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12956,"src":"11926:4:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"2922","id":12991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11948:4:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_c4b4594b062b8dfb6eaf7db997d942d04b66dec75ec258222a814ab915492f07","typeString":"literal_string \")\"\""},"value":")\""},{"hexValue":"207374796c653d227472616e73666f726d3a7472616e736c61746528373270782c313839707829223e","id":12992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11970:43:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e24499475377ebfea88a8b66ad4852ff14fea8d70bdbc3a7eceb1a729240226","typeString":"literal_string \" style=\"transform:translate(72px,189px)\">\""},"value":" style=\"transform:translate(72px,189px)\">"},{"hexValue":"3c7265637420783d222d313670782220793d222d31367078222077696474683d22313830707822206865696768743d223138307078222066696c6c3d226e6f6e6522202f3e","id":12993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12031:71:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_8f43f63d6c112f03be0e24ed0ecb0994a71907eacdd7bbe72850d1059fbd6fa7","typeString":"literal_string \"<rect x=\"-16px\" y=\"-16px\" width=\"180px\" height=\"180px\" fill=\"none\" />\""},"value":"<rect x=\"-16px\" y=\"-16px\" width=\"180px\" height=\"180px\" fill=\"none\" />"},{"hexValue":"3c7061746820643d22","id":12994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12120:11:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_8435fbe25d8e10dc1b7fa802b6ce492013481bf38ccb57fac98cd4034d9fca4a","typeString":"literal_string \"<path d=\"\""},"value":"<path d=\""},{"id":12995,"name":"curve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12971,"src":"12149:5:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"22207374726f6b653d2272676261283235352c3235352c3235352c3129222066696c6c3d226e6f6e6522207374726f6b652d6c696e656361703d22726f756e6422202f3e3c2f673e","id":12996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12172:74:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_9bb25be920b258880439ec0b834ec0e12e09bcc9295c9fb6ea92333a2947269b","typeString":"literal_string \"\" stroke=\"rgba(255,255,255,1)\" fill=\"none\" stroke-linecap=\"round\" /></g>\""},"value":"\" stroke=\"rgba(255,255,255,1)\" fill=\"none\" stroke-linecap=\"round\" /></g>"},{"arguments":[{"id":12998,"name":"overRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12950,"src":"12287:9:85","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int8","typeString":"int8"}],"id":12997,"name":"generateSVGCurveCircle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13190,"src":"12264:22:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int8_$returns$_t_string_memory_ptr_$","typeString":"function (int8) pure returns (string memory)"}},"id":12999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12264:33:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_073f6ea16f7ccb68c2d82384c98a49ffe08e4d0cca470dd7b597850d3360adf1","typeString":"literal_string \"<g mask=\"url(\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_c4b4594b062b8dfb6eaf7db997d942d04b66dec75ec258222a814ab915492f07","typeString":"literal_string \")\"\""},{"typeIdentifier":"t_stringliteral_8d38c449c54623af115300f0b4cd575c9ad248d96fa963ffbc8a5d10a537195e","typeString":"literal_string \" style=\"transform:translate(72px,189px)\"><rect x=\"-16px\" y=\"-16px\" width=\"180px\" height=\"180px\" fill=\"none\" /><path d=\"\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_20b18c33024e2e0e17abfb47072fb69fd233a084a9b52e7077234344339ef1d2","typeString":"literal_string \"\" stroke=\"rgba(0,0,0,0.3)\" stroke-width=\"32px\" fill=\"none\" stroke-linecap=\"round\" />\""},{"typeIdentifier":"t_stringliteral_5d5b8544d6c3a0963cab785f7bfd6c7e8729a866fc2c71a9b519c74a2851ad8e","typeString":"literal_string \"</g><g mask=\"url(\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_c4b4594b062b8dfb6eaf7db997d942d04b66dec75ec258222a814ab915492f07","typeString":"literal_string \")\"\""},{"typeIdentifier":"t_stringliteral_8e24499475377ebfea88a8b66ad4852ff14fea8d70bdbc3a7eceb1a729240226","typeString":"literal_string \" style=\"transform:translate(72px,189px)\">\""},{"typeIdentifier":"t_stringliteral_8f43f63d6c112f03be0e24ed0ecb0994a71907eacdd7bbe72850d1059fbd6fa7","typeString":"literal_string \"<rect x=\"-16px\" y=\"-16px\" width=\"180px\" height=\"180px\" fill=\"none\" />\""},{"typeIdentifier":"t_stringliteral_8435fbe25d8e10dc1b7fa802b6ce492013481bf38ccb57fac98cd4034d9fca4a","typeString":"literal_string \"<path d=\"\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_9bb25be920b258880439ec0b834ec0e12e09bcc9295c9fb6ea92333a2947269b","typeString":"literal_string \"\" stroke=\"rgba(255,255,255,1)\" fill=\"none\" stroke-linecap=\"round\" /></g>\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":12981,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"11474:3:85","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12982,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"11474:16:85","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":13000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11474:837:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12980,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11454:6:85","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":12979,"name":"string","nodeType":"ElementaryTypeName","src":"11454:6:85","typeDescriptions":{}}},"id":13001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11454:867:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"11448:873:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":13003,"nodeType":"ExpressionStatement","src":"11448:873:85"}]},"id":13005,"implemented":true,"kind":"function","modifiers":[],"name":"generageSvgCurve","nodeType":"FunctionDefinition","parameters":{"id":12951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12944,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":13005,"src":"11067:15:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12943,"name":"int24","nodeType":"ElementaryTypeName","src":"11067:5:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":12946,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":13005,"src":"11092:15:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12945,"name":"int24","nodeType":"ElementaryTypeName","src":"11092:5:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":12948,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":13005,"src":"11117:17:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12947,"name":"int24","nodeType":"ElementaryTypeName","src":"11117:5:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":12950,"mutability":"mutable","name":"overRange","nodeType":"VariableDeclaration","scope":13005,"src":"11144:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":12949,"name":"int8","nodeType":"ElementaryTypeName","src":"11144:4:85","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"11057:107:85"},"returnParameters":{"id":12954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12953,"mutability":"mutable","name":"svg","nodeType":"VariableDeclaration","scope":13005,"src":"11187:17:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12952,"name":"string","nodeType":"ElementaryTypeName","src":"11187:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"11186:19:85"},"scope":13550,"src":"11032:1296:85","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":13093,"nodeType":"Block","src":"12449:582:85","statements":[{"assignments":[13017],"declarations":[{"constant":false,"id":13017,"mutability":"mutable","name":"tickRange","nodeType":"VariableDeclaration","scope":13093,"src":"12459:15:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13016,"name":"int24","nodeType":"ElementaryTypeName","src":"12459:5:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":13024,"initialValue":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13018,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13009,"src":"12478:9:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13019,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13007,"src":"12490:9:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"12478:21:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":13021,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12477:23:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":13022,"name":"tickSpacing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13011,"src":"12503:11:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"12477:37:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"12459:55:85"},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13025,"name":"tickRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13017,"src":"12528:9:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"34","id":13026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12541:1:85","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12528:14:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13033,"name":"tickRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13017,"src":"12593:9:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"38","id":13034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12606:1:85","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12593:14:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13041,"name":"tickRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13017,"src":"12658:9:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"3136","id":13042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12671:2:85","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12658:15:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13049,"name":"tickRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13017,"src":"12724:9:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"3332","id":13050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12737:2:85","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12724:15:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13057,"name":"tickRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13017,"src":"12790:9:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"3634","id":13058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12803:2:85","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12790:15:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13065,"name":"tickRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13017,"src":"12856:9:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"313238","id":13066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12869:3:85","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"12856:16:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13073,"name":"tickRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13017,"src":"12923:9:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"323536","id":13074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12936:3:85","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"src":"12923:16:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13085,"nodeType":"Block","src":"12986:39:85","statements":[{"expression":{"id":13083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13081,"name":"curve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13014,"src":"13000:5:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13082,"name":"curve8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12645,"src":"13008:6:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"13000:14:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":13084,"nodeType":"ExpressionStatement","src":"13000:14:85"}]},"id":13086,"nodeType":"IfStatement","src":"12919:106:85","trueBody":{"id":13080,"nodeType":"Block","src":"12941:39:85","statements":[{"expression":{"id":13078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13076,"name":"curve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13014,"src":"12955:5:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13077,"name":"curve7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12642,"src":"12963:6:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"12955:14:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":13079,"nodeType":"ExpressionStatement","src":"12955:14:85"}]}},"id":13087,"nodeType":"IfStatement","src":"12852:173:85","trueBody":{"id":13072,"nodeType":"Block","src":"12874:39:85","statements":[{"expression":{"id":13070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13068,"name":"curve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13014,"src":"12888:5:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13069,"name":"curve6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12639,"src":"12896:6:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"12888:14:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":13071,"nodeType":"ExpressionStatement","src":"12888:14:85"}]}},"id":13088,"nodeType":"IfStatement","src":"12786:239:85","trueBody":{"id":13064,"nodeType":"Block","src":"12807:39:85","statements":[{"expression":{"id":13062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13060,"name":"curve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13014,"src":"12821:5:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13061,"name":"curve5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12636,"src":"12829:6:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"12821:14:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":13063,"nodeType":"ExpressionStatement","src":"12821:14:85"}]}},"id":13089,"nodeType":"IfStatement","src":"12720:305:85","trueBody":{"id":13056,"nodeType":"Block","src":"12741:39:85","statements":[{"expression":{"id":13054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13052,"name":"curve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13014,"src":"12755:5:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13053,"name":"curve4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12633,"src":"12763:6:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"12755:14:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":13055,"nodeType":"ExpressionStatement","src":"12755:14:85"}]}},"id":13090,"nodeType":"IfStatement","src":"12654:371:85","trueBody":{"id":13048,"nodeType":"Block","src":"12675:39:85","statements":[{"expression":{"id":13046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13044,"name":"curve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13014,"src":"12689:5:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13045,"name":"curve3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12630,"src":"12697:6:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"12689:14:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":13047,"nodeType":"ExpressionStatement","src":"12689:14:85"}]}},"id":13091,"nodeType":"IfStatement","src":"12589:436:85","trueBody":{"id":13040,"nodeType":"Block","src":"12609:39:85","statements":[{"expression":{"id":13038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13036,"name":"curve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13014,"src":"12623:5:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13037,"name":"curve2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12627,"src":"12631:6:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"12623:14:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":13039,"nodeType":"ExpressionStatement","src":"12623:14:85"}]}},"id":13092,"nodeType":"IfStatement","src":"12524:501:85","trueBody":{"id":13032,"nodeType":"Block","src":"12544:39:85","statements":[{"expression":{"id":13030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13028,"name":"curve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13014,"src":"12558:5:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13029,"name":"curve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12624,"src":"12566:6:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"12558:14:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":13031,"nodeType":"ExpressionStatement","src":"12558:14:85"}]}}]},"id":13094,"implemented":true,"kind":"function","modifiers":[],"name":"getCurve","nodeType":"FunctionDefinition","parameters":{"id":13012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13007,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":13094,"src":"12352:15:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13006,"name":"int24","nodeType":"ElementaryTypeName","src":"12352:5:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":13009,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":13094,"src":"12369:15:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13008,"name":"int24","nodeType":"ElementaryTypeName","src":"12369:5:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":13011,"mutability":"mutable","name":"tickSpacing","nodeType":"VariableDeclaration","scope":13094,"src":"12386:17:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13010,"name":"int24","nodeType":"ElementaryTypeName","src":"12386:5:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"12351:53:85"},"returnParameters":{"id":13015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13014,"mutability":"mutable","name":"curve","nodeType":"VariableDeclaration","scope":13094,"src":"12428:19:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13013,"name":"string","nodeType":"ElementaryTypeName","src":"12428:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"12427:21:85"},"scope":13550,"src":"12334:697:85","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13189,"nodeType":"Block","src":"13127:1233:85","statements":[{"assignments":[13102],"declarations":[{"constant":false,"id":13102,"mutability":"mutable","name":"curvex1","nodeType":"VariableDeclaration","scope":13189,"src":"13137:21:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13101,"name":"string","nodeType":"ElementaryTypeName","src":"13137:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":13104,"initialValue":{"hexValue":"3733","id":13103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13161:4:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_b2219b801710730437d0358146c829b62297a059eceaa0b40b27aea2daecf595","typeString":"literal_string \"73\""},"value":"73"},"nodeType":"VariableDeclarationStatement","src":"13137:28:85"},{"assignments":[13106],"declarations":[{"constant":false,"id":13106,"mutability":"mutable","name":"curvey1","nodeType":"VariableDeclaration","scope":13189,"src":"13175:21:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13105,"name":"string","nodeType":"ElementaryTypeName","src":"13175:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":13108,"initialValue":{"hexValue":"313930","id":13107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13199:5:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_e056e162080d5da78663154decfd308f0383b8d138d504e8a4cde93086ac2fef","typeString":"literal_string \"190\""},"value":"190"},"nodeType":"VariableDeclarationStatement","src":"13175:29:85"},{"assignments":[13110],"declarations":[{"constant":false,"id":13110,"mutability":"mutable","name":"curvex2","nodeType":"VariableDeclaration","scope":13189,"src":"13214:21:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13109,"name":"string","nodeType":"ElementaryTypeName","src":"13214:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":13112,"initialValue":{"hexValue":"323137","id":13111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13238:5:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_aaf3f8a03bf981e82bfa1e6e69fda395c89cda31e9dff74038d977f68cce1756","typeString":"literal_string \"217\""},"value":"217"},"nodeType":"VariableDeclarationStatement","src":"13214:29:85"},{"assignments":[13114],"declarations":[{"constant":false,"id":13114,"mutability":"mutable","name":"curvey2","nodeType":"VariableDeclaration","scope":13189,"src":"13253:21:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13113,"name":"string","nodeType":"ElementaryTypeName","src":"13253:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":13116,"initialValue":{"hexValue":"333334","id":13115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13277:5:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_f9bbcd66573bf3c1f4cc184d2152e0dd1704bf0095e444b842e9e57042cbafba","typeString":"literal_string \"334\""},"value":"334"},"nodeType":"VariableDeclarationStatement","src":"13253:29:85"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int8","typeString":"int8"},"id":13119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13117,"name":"overRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13096,"src":"13296:9:85","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":13118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13309:1:85","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13296:14:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_int8","typeString":"int8"},"id":13123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13120,"name":"overRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13096,"src":"13314:9:85","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":13122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"13327:2:85","subExpression":{"hexValue":"31","id":13121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13328:1:85","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}},"src":"13314:15:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13296:33:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13187,"nodeType":"Block","src":"13897:457:85","statements":[{"expression":{"id":13185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13168,"name":"svg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13099,"src":"13911:3:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"3c636972636c652063783d22","id":13173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13979:14:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_0cfb64137c1b932845c13a5b9099e70707981c3c97fcffefd9a9dc3cb4822b2a","typeString":"literal_string \"<circle cx=\"\""},"value":"<circle cx=\""},{"id":13174,"name":"curvex1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13102,"src":"14015:7:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"7078222063793d22","id":13175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14044:10:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_04df0b57098eaa746dd457aea178f76fd2ba5ac64e69b33f7dbdf88159fd9066","typeString":"literal_string \"px\" cy=\"\""},"value":"px\" cy=\""},{"id":13176,"name":"curvey1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13106,"src":"14076:7:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"70782220723d22347078222066696c6c3d22776869746522202f3e","id":13177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14105:29:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_9688ea6eac52256e23e98de0d885a67cbdda4b4d8cf2999e296a56007ffef501","typeString":"literal_string \"px\" r=\"4px\" fill=\"white\" />\""},"value":"px\" r=\"4px\" fill=\"white\" />"},{"hexValue":"3c636972636c652063783d22","id":13178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14156:14:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_0cfb64137c1b932845c13a5b9099e70707981c3c97fcffefd9a9dc3cb4822b2a","typeString":"literal_string \"<circle cx=\"\""},"value":"<circle cx=\""},{"id":13179,"name":"curvex2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13110,"src":"14192:7:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"7078222063793d22","id":13180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14221:10:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_04df0b57098eaa746dd457aea178f76fd2ba5ac64e69b33f7dbdf88159fd9066","typeString":"literal_string \"px\" cy=\"\""},"value":"px\" cy=\""},{"id":13181,"name":"curvey2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13114,"src":"14253:7:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"70782220723d22347078222066696c6c3d22776869746522202f3e","id":13182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14282:29:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_9688ea6eac52256e23e98de0d885a67cbdda4b4d8cf2999e296a56007ffef501","typeString":"literal_string \"px\" r=\"4px\" fill=\"white\" />\""},"value":"px\" r=\"4px\" fill=\"white\" />"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0cfb64137c1b932845c13a5b9099e70707981c3c97fcffefd9a9dc3cb4822b2a","typeString":"literal_string \"<circle cx=\"\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_04df0b57098eaa746dd457aea178f76fd2ba5ac64e69b33f7dbdf88159fd9066","typeString":"literal_string \"px\" cy=\"\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_9688ea6eac52256e23e98de0d885a67cbdda4b4d8cf2999e296a56007ffef501","typeString":"literal_string \"px\" r=\"4px\" fill=\"white\" />\""},{"typeIdentifier":"t_stringliteral_0cfb64137c1b932845c13a5b9099e70707981c3c97fcffefd9a9dc3cb4822b2a","typeString":"literal_string \"<circle cx=\"\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_04df0b57098eaa746dd457aea178f76fd2ba5ac64e69b33f7dbdf88159fd9066","typeString":"literal_string \"px\" cy=\"\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_9688ea6eac52256e23e98de0d885a67cbdda4b4d8cf2999e296a56007ffef501","typeString":"literal_string \"px\" r=\"4px\" fill=\"white\" />\""}],"expression":{"id":13171,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13941:3:85","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":13172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"13941:16:85","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":13183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13941:388:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13170,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13917:6:85","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":13169,"name":"string","nodeType":"ElementaryTypeName","src":"13917:6:85","typeDescriptions":{}}},"id":13184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13917:426:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"13911:432:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":13186,"nodeType":"ExpressionStatement","src":"13911:432:85"}]},"id":13188,"nodeType":"IfStatement","src":"13292:1062:85","trueBody":{"id":13167,"nodeType":"Block","src":"13331:560:85","statements":[{"expression":{"id":13165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13125,"name":"svg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13099,"src":"13345:3:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"3c636972636c652063783d22","id":13130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13413:14:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_0cfb64137c1b932845c13a5b9099e70707981c3c97fcffefd9a9dc3cb4822b2a","typeString":"literal_string \"<circle cx=\"\""},"value":"<circle cx=\""},{"condition":{"commonType":{"typeIdentifier":"t_int8","typeString":"int8"},"id":13134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13131,"name":"overRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13096,"src":"13449:9:85","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":13133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"13462:2:85","subExpression":{"hexValue":"31","id":13132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13463:1:85","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}},"src":"13449:15:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":13136,"name":"curvex2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13110,"src":"13477:7:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":13137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13449:35:85","trueExpression":{"id":13135,"name":"curvex1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13102,"src":"13467:7:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"7078222063793d22","id":13138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13506:10:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_04df0b57098eaa746dd457aea178f76fd2ba5ac64e69b33f7dbdf88159fd9066","typeString":"literal_string \"px\" cy=\"\""},"value":"px\" cy=\""},{"condition":{"commonType":{"typeIdentifier":"t_int8","typeString":"int8"},"id":13142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13139,"name":"overRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13096,"src":"13538:9:85","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":13141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"13551:2:85","subExpression":{"hexValue":"31","id":13140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13552:1:85","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}},"src":"13538:15:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":13144,"name":"curvey2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13114,"src":"13566:7:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":13145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13538:35:85","trueExpression":{"id":13143,"name":"curvey1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13106,"src":"13556:7:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"70782220723d22347078222066696c6c3d22776869746522202f3e3c636972636c652063783d22","id":13146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13595:41:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_805d2dfd72788fbd262dae04ab03ec6490a808b57ad0f61b37e39bca57c9434b","typeString":"literal_string \"px\" r=\"4px\" fill=\"white\" /><circle cx=\"\""},"value":"px\" r=\"4px\" fill=\"white\" /><circle cx=\""},{"condition":{"commonType":{"typeIdentifier":"t_int8","typeString":"int8"},"id":13150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13147,"name":"overRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13096,"src":"13658:9:85","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":13149,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"13671:2:85","subExpression":{"hexValue":"31","id":13148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13672:1:85","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}},"src":"13658:15:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":13152,"name":"curvex2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13110,"src":"13686:7:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":13153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13658:35:85","trueExpression":{"id":13151,"name":"curvex1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13102,"src":"13676:7:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"7078222063793d22","id":13154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13715:10:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_04df0b57098eaa746dd457aea178f76fd2ba5ac64e69b33f7dbdf88159fd9066","typeString":"literal_string \"px\" cy=\"\""},"value":"px\" cy=\""},{"condition":{"commonType":{"typeIdentifier":"t_int8","typeString":"int8"},"id":13158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13155,"name":"overRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13096,"src":"13747:9:85","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":13157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"13760:2:85","subExpression":{"hexValue":"31","id":13156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13761:1:85","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}},"src":"13747:15:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":13160,"name":"curvey2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13114,"src":"13775:7:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":13161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13747:35:85","trueExpression":{"id":13159,"name":"curvey1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13106,"src":"13765:7:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"70782220723d2232347078222066696c6c3d226e6f6e6522207374726f6b653d22776869746522202f3e","id":13162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13804:44:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_8f39c2ef49d5b31ddb2a6f4b9d03a6a799196af85cc95b7c0148ca8f2d6c3143","typeString":"literal_string \"px\" r=\"24px\" fill=\"none\" stroke=\"white\" />\""},"value":"px\" r=\"24px\" fill=\"none\" stroke=\"white\" />"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0cfb64137c1b932845c13a5b9099e70707981c3c97fcffefd9a9dc3cb4822b2a","typeString":"literal_string \"<circle cx=\"\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_04df0b57098eaa746dd457aea178f76fd2ba5ac64e69b33f7dbdf88159fd9066","typeString":"literal_string \"px\" cy=\"\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_805d2dfd72788fbd262dae04ab03ec6490a808b57ad0f61b37e39bca57c9434b","typeString":"literal_string \"px\" r=\"4px\" fill=\"white\" /><circle cx=\"\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_04df0b57098eaa746dd457aea178f76fd2ba5ac64e69b33f7dbdf88159fd9066","typeString":"literal_string \"px\" cy=\"\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_8f39c2ef49d5b31ddb2a6f4b9d03a6a799196af85cc95b7c0148ca8f2d6c3143","typeString":"literal_string \"px\" r=\"24px\" fill=\"none\" stroke=\"white\" />\""}],"expression":{"id":13128,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13375:3:85","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":13129,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"13375:16:85","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":13163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13375:491:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13127,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13351:6:85","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":13126,"name":"string","nodeType":"ElementaryTypeName","src":"13351:6:85","typeDescriptions":{}}},"id":13164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13351:529:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"13345:535:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":13166,"nodeType":"ExpressionStatement","src":"13345:535:85"}]}}]},"id":13190,"implemented":true,"kind":"function","modifiers":[],"name":"generateSVGCurveCircle","nodeType":"FunctionDefinition","parameters":{"id":13097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13096,"mutability":"mutable","name":"overRange","nodeType":"VariableDeclaration","scope":13190,"src":"13069:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":13095,"name":"int8","nodeType":"ElementaryTypeName","src":"13069:4:85","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"13068:16:85"},"returnParameters":{"id":13100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13099,"mutability":"mutable","name":"svg","nodeType":"VariableDeclaration","scope":13190,"src":"13108:17:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13098,"name":"string","nodeType":"ElementaryTypeName","src":"13108:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"13107:19:85"},"scope":13550,"src":"13037:1323:85","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13319,"nodeType":"Block","src":"14543:2372:85","statements":[{"assignments":[13202],"declarations":[{"constant":false,"id":13202,"mutability":"mutable","name":"tickLowerStr","nodeType":"VariableDeclaration","scope":13319,"src":"14553:26:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13201,"name":"string","nodeType":"ElementaryTypeName","src":"14553:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":13206,"initialValue":{"arguments":[{"id":13204,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13194,"src":"14595:9:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":13203,"name":"tickToString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13362,"src":"14582:12:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_string_memory_ptr_$","typeString":"function (int24) pure returns (string memory)"}},"id":13205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14582:23:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"14553:52:85"},{"assignments":[13208],"declarations":[{"constant":false,"id":13208,"mutability":"mutable","name":"tickUpperStr","nodeType":"VariableDeclaration","scope":13319,"src":"14615:26:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13207,"name":"string","nodeType":"ElementaryTypeName","src":"14615:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":13212,"initialValue":{"arguments":[{"id":13210,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13196,"src":"14657:9:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":13209,"name":"tickToString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13362,"src":"14644:12:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_string_memory_ptr_$","typeString":"function (int24) pure returns (string memory)"}},"id":13211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14644:23:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"14615:52:85"},{"assignments":[13214],"declarations":[{"constant":false,"id":13214,"mutability":"mutable","name":"str1length","nodeType":"VariableDeclaration","scope":13319,"src":"14677:18:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13213,"name":"uint256","nodeType":"ElementaryTypeName","src":"14677:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13222,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":13217,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13192,"src":"14704:7:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":13216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14698:5:85","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":13215,"name":"bytes","nodeType":"ElementaryTypeName","src":"14698:5:85","typeDescriptions":{}}},"id":13218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14698:14:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"14698:21:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"34","id":13220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14722:1:85","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"14698:25:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14677:46:85"},{"assignments":[13224],"declarations":[{"constant":false,"id":13224,"mutability":"mutable","name":"str2length","nodeType":"VariableDeclaration","scope":13319,"src":"14733:18:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13223,"name":"uint256","nodeType":"ElementaryTypeName","src":"14733:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13232,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":13227,"name":"tickLowerStr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13202,"src":"14760:12:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":13226,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14754:5:85","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":13225,"name":"bytes","nodeType":"ElementaryTypeName","src":"14754:5:85","typeDescriptions":{}}},"id":13228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14754:19:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"14754:26:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3130","id":13230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14783:2:85","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"14754:31:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14733:52:85"},{"assignments":[13234],"declarations":[{"constant":false,"id":13234,"mutability":"mutable","name":"str3length","nodeType":"VariableDeclaration","scope":13319,"src":"14795:18:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13233,"name":"uint256","nodeType":"ElementaryTypeName","src":"14795:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13242,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":13237,"name":"tickUpperStr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13208,"src":"14822:12:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":13236,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14816:5:85","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":13235,"name":"bytes","nodeType":"ElementaryTypeName","src":"14816:5:85","typeDescriptions":{}}},"id":13238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14816:19:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"14816:26:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3130","id":13240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14845:2:85","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"14816:31:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14795:52:85"},{"assignments":[13244,13246],"declarations":[{"constant":false,"id":13244,"mutability":"mutable","name":"xCoord","nodeType":"VariableDeclaration","scope":13319,"src":"14858:20:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13243,"name":"string","nodeType":"ElementaryTypeName","src":"14858:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13246,"mutability":"mutable","name":"yCoord","nodeType":"VariableDeclaration","scope":13319,"src":"14880:20:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13245,"name":"string","nodeType":"ElementaryTypeName","src":"14880:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":13251,"initialValue":{"arguments":[{"id":13248,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13194,"src":"14918:9:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":13249,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13196,"src":"14929:9:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"id":13247,"name":"rangeLocation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13473,"src":"14904:13:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$_t_int24_$returns$_t_string_memory_ptr_$_t_string_memory_ptr_$","typeString":"function (int24,int24) pure returns (string memory,string memory)"}},"id":13250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14904:35:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_string_memory_ptr_$_t_string_memory_ptr_$","typeString":"tuple(string memory,string memory)"}},"nodeType":"VariableDeclarationStatement","src":"14857:82:85"},{"expression":{"id":13317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13252,"name":"svg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13199,"src":"14949:3:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"203c67207374796c653d227472616e73666f726d3a7472616e736c61746528323970782c20333834707829223e","id":13257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15009:47:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_a1d35662f193c8dca60ea626415bf453b6eb6f19f995eb4e725506bddb1c9b3c","typeString":"literal_string \" <g style=\"transform:translate(29px, 384px)\">\""},"value":" <g style=\"transform:translate(29px, 384px)\">"},{"hexValue":"3c726563742077696474683d22","id":13258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15074:15:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_ea677e503ab4e967d2570a008dd897c1687e0426ee06ab367778d22358bbd498","typeString":"literal_string \"<rect width=\"\""},"value":"<rect width=\""},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"37","id":13261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15115:1:85","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13262,"name":"str1length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13214,"src":"15120:10:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"34","id":13263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15133:1:85","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"15120:14:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13265,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15119:16:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15115:20:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15107:7:85","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13259,"name":"uint256","nodeType":"ElementaryTypeName","src":"15107:7:85","typeDescriptions":{}}},"id":13267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15107:29:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":6826,"src":"15107:38:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":13269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15107:40:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"707822206865696768743d2232367078222072783d22387078222072793d22387078222066696c6c3d227267626128302c302c302c302e362922202f3e","id":13270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15165:63:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_800ca0756ff976e45c222900c67e79662594eea8a3ec66e3bbb8af53bd09f4e4","typeString":"literal_string \"px\" height=\"26px\" rx=\"8px\" ry=\"8px\" fill=\"rgba(0,0,0,0.6)\" />\""},"value":"px\" height=\"26px\" rx=\"8px\" ry=\"8px\" fill=\"rgba(0,0,0,0.6)\" />"},{"hexValue":"3c7465787420783d22313270782220793d22313770782220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d73697a653d2231327078222066696c6c3d227768697465223e3c747370616e2066696c6c3d2272676261283235352c3235352c3235352c302e3629223e49443a203c2f747370616e3e","id":13271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15246:145:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_e48f616382bc4db7da9436f22e091c88340d840be14446bdcabee6fb3c9ef913","typeString":"literal_string \"<text x=\"12px\" y=\"17px\" font-family=\"'Courier New', monospace\" font-size=\"12px\" fill=\"white\"><tspan fill=\"rgba(255,255,255,0.6)\">ID: </tspan>\""},"value":"<text x=\"12px\" y=\"17px\" font-family=\"'Courier New', monospace\" font-size=\"12px\" fill=\"white\"><tspan fill=\"rgba(255,255,255,0.6)\">ID: </tspan>"},{"id":13272,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13192,"src":"15409:7:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"3c2f746578743e3c2f673e","id":13273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15434:13:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_0b7427e2f769aaaa13bde5b715b09255dc5398714a59a798afc7999c8e6ae7f0","typeString":"literal_string \"</text></g>\""},"value":"</text></g>"},{"hexValue":"203c67207374796c653d227472616e73666f726d3a7472616e736c61746528323970782c20343134707829223e","id":13274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15465:47:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_fab582159965dc3537eef15a4898cfd495cdf6178ad5c39fe4f14de95021bcdd","typeString":"literal_string \" <g style=\"transform:translate(29px, 414px)\">\""},"value":" <g style=\"transform:translate(29px, 414px)\">"},{"hexValue":"3c726563742077696474683d22","id":13275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15530:15:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_ea677e503ab4e967d2570a008dd897c1687e0426ee06ab367778d22358bbd498","typeString":"literal_string \"<rect width=\"\""},"value":"<rect width=\""},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"37","id":13278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15571:1:85","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13279,"name":"str2length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13224,"src":"15576:10:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"34","id":13280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15589:1:85","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"15576:14:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13282,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15575:16:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15571:20:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13277,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15563:7:85","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13276,"name":"uint256","nodeType":"ElementaryTypeName","src":"15563:7:85","typeDescriptions":{}}},"id":13284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15563:29:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":6826,"src":"15563:38:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":13286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15563:40:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"707822206865696768743d2232367078222072783d22387078222072793d22387078222066696c6c3d227267626128302c302c302c302e362922202f3e","id":13287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15621:63:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_800ca0756ff976e45c222900c67e79662594eea8a3ec66e3bbb8af53bd09f4e4","typeString":"literal_string \"px\" height=\"26px\" rx=\"8px\" ry=\"8px\" fill=\"rgba(0,0,0,0.6)\" />\""},"value":"px\" height=\"26px\" rx=\"8px\" ry=\"8px\" fill=\"rgba(0,0,0,0.6)\" />"},{"hexValue":"3c7465787420783d22313270782220793d22313770782220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d73697a653d2231327078222066696c6c3d227768697465223e3c747370616e2066696c6c3d2272676261283235352c3235352c3235352c302e3629223e4d696e205469636b3a203c2f747370616e3e","id":13288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15702:151:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_5bc1bf3d11aae697778119ef346ad4842b7aeee3b48245084fb03eaf191c89a0","typeString":"literal_string \"<text x=\"12px\" y=\"17px\" font-family=\"'Courier New', monospace\" font-size=\"12px\" fill=\"white\"><tspan fill=\"rgba(255,255,255,0.6)\">Min Tick: </tspan>\""},"value":"<text x=\"12px\" y=\"17px\" font-family=\"'Courier New', monospace\" font-size=\"12px\" fill=\"white\"><tspan fill=\"rgba(255,255,255,0.6)\">Min Tick: </tspan>"},{"id":13289,"name":"tickLowerStr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13202,"src":"15871:12:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"3c2f746578743e3c2f673e","id":13290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15901:13:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_0b7427e2f769aaaa13bde5b715b09255dc5398714a59a798afc7999c8e6ae7f0","typeString":"literal_string \"</text></g>\""},"value":"</text></g>"},{"hexValue":"203c67207374796c653d227472616e73666f726d3a7472616e736c61746528323970782c20343434707829223e","id":13291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15932:47:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_220105d546304f5c5e6ab619f93ed0540d9e75da2d2186101f3be7105ff28a8a","typeString":"literal_string \" <g style=\"transform:translate(29px, 444px)\">\""},"value":" <g style=\"transform:translate(29px, 444px)\">"},{"hexValue":"3c726563742077696474683d22","id":13292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15997:15:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_ea677e503ab4e967d2570a008dd897c1687e0426ee06ab367778d22358bbd498","typeString":"literal_string \"<rect width=\"\""},"value":"<rect width=\""},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"37","id":13295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16038:1:85","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13296,"name":"str3length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13234,"src":"16043:10:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"34","id":13297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16056:1:85","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"16043:14:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16042:16:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16038:20:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13294,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16030:7:85","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13293,"name":"uint256","nodeType":"ElementaryTypeName","src":"16030:7:85","typeDescriptions":{}}},"id":13301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16030:29:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":6826,"src":"16030:38:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":13303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16030:40:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"707822206865696768743d2232367078222072783d22387078222072793d22387078222066696c6c3d227267626128302c302c302c302e362922202f3e","id":13304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16088:63:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_800ca0756ff976e45c222900c67e79662594eea8a3ec66e3bbb8af53bd09f4e4","typeString":"literal_string \"px\" height=\"26px\" rx=\"8px\" ry=\"8px\" fill=\"rgba(0,0,0,0.6)\" />\""},"value":"px\" height=\"26px\" rx=\"8px\" ry=\"8px\" fill=\"rgba(0,0,0,0.6)\" />"},{"hexValue":"3c7465787420783d22313270782220793d22313770782220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d73697a653d2231327078222066696c6c3d227768697465223e3c747370616e2066696c6c3d2272676261283235352c3235352c3235352c302e3629223e4d6178205469636b3a203c2f747370616e3e","id":13305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16169:151:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_bef0de1b6ab64a87365883910640202cc923019a0642c3dc3ce8c92f70e2aec2","typeString":"literal_string \"<text x=\"12px\" y=\"17px\" font-family=\"'Courier New', monospace\" font-size=\"12px\" fill=\"white\"><tspan fill=\"rgba(255,255,255,0.6)\">Max Tick: </tspan>\""},"value":"<text x=\"12px\" y=\"17px\" font-family=\"'Courier New', monospace\" font-size=\"12px\" fill=\"white\"><tspan fill=\"rgba(255,255,255,0.6)\">Max Tick: </tspan>"},{"id":13306,"name":"tickUpperStr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13208,"src":"16338:12:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"3c2f746578743e3c2f673e3c67207374796c653d227472616e73666f726d3a7472616e736c6174652832323670782c20343333707829223e","id":13307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16368:77:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_f779b01e2c11d50446559da8a96e840c35be2177455b0699985122c52b0d1f4e","typeString":"literal_string \"</text></g><g style=\"transform:translate(226px, 433px)\">\""},"value":"</text></g><g style=\"transform:translate(226px, 433px)\">"},{"hexValue":"3c726563742077696474683d223336707822206865696768743d2233367078222072783d22387078222072793d22387078222066696c6c3d226e6f6e6522207374726f6b653d2272676261283235352c3235352c3235352c302e322922202f3e","id":13308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16463:98:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_ec66f735b9269156d2621c7cb2e179cbb93736ea6dfc7db8bdd4441a81eb1f64","typeString":"literal_string \"<rect width=\"36px\" height=\"36px\" rx=\"8px\" ry=\"8px\" fill=\"none\" stroke=\"rgba(255,255,255,0.2)\" />\""},"value":"<rect width=\"36px\" height=\"36px\" rx=\"8px\" ry=\"8px\" fill=\"none\" stroke=\"rgba(255,255,255,0.2)\" />"},{"hexValue":"3c70617468207374726f6b652d6c696e656361703d22726f756e642220643d224d38203943382e30303030342032322e393439342031362e32303939203238203237203238222066696c6c3d226e6f6e6522207374726f6b653d22776869746522202f3e","id":13309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16579:102:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_9172aa3905273de2038748a8a21d4c0caf162952597ab7af5f83d1a3c63cec1a","typeString":"literal_string \"<path stroke-linecap=\"round\" d=\"M8 9C8.00004 22.9494 16.2099 28 27 28\" fill=\"none\" stroke=\"white\" />\""},"value":"<path stroke-linecap=\"round\" d=\"M8 9C8.00004 22.9494 16.2099 28 27 28\" fill=\"none\" stroke=\"white\" />"},{"hexValue":"3c636972636c65207374796c653d227472616e73666f726d3a7472616e736c617465336428","id":13310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16699:39:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_2f31b113ee3d3056d0911a5e394047e1383278908d2c52df748865318956703e","typeString":"literal_string \"<circle style=\"transform:translate3d(\""},"value":"<circle style=\"transform:translate3d("},{"id":13311,"name":"xCoord","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13244,"src":"16756:6:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"70782c20","id":13312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16780:6:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_b6aaa2c0b71922b19b9b8b146cc93d2f4e231e6b961d744f30cad118bc857ef8","typeString":"literal_string \"px, \""},"value":"px, "},{"id":13313,"name":"yCoord","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13246,"src":"16804:6:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"70782c2030707829222063783d22307078222063793d223070782220723d22347078222066696c6c3d227768697465222f3e3c2f673e","id":13314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16828:56:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_12c8706c8ed81675e674ab6c512d5560a6aee02a6795723026211fc0112724ea","typeString":"literal_string \"px, 0px)\" cx=\"0px\" cy=\"0px\" r=\"4px\" fill=\"white\"/></g>\""},"value":"px, 0px)\" cx=\"0px\" cy=\"0px\" r=\"4px\" fill=\"white\"/></g>"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a1d35662f193c8dca60ea626415bf453b6eb6f19f995eb4e725506bddb1c9b3c","typeString":"literal_string \" <g style=\"transform:translate(29px, 384px)\">\""},{"typeIdentifier":"t_stringliteral_ea677e503ab4e967d2570a008dd897c1687e0426ee06ab367778d22358bbd498","typeString":"literal_string \"<rect width=\"\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_800ca0756ff976e45c222900c67e79662594eea8a3ec66e3bbb8af53bd09f4e4","typeString":"literal_string \"px\" height=\"26px\" rx=\"8px\" ry=\"8px\" fill=\"rgba(0,0,0,0.6)\" />\""},{"typeIdentifier":"t_stringliteral_e48f616382bc4db7da9436f22e091c88340d840be14446bdcabee6fb3c9ef913","typeString":"literal_string \"<text x=\"12px\" y=\"17px\" font-family=\"'Courier New', monospace\" font-size=\"12px\" fill=\"white\"><tspan fill=\"rgba(255,255,255,0.6)\">ID: </tspan>\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_0b7427e2f769aaaa13bde5b715b09255dc5398714a59a798afc7999c8e6ae7f0","typeString":"literal_string \"</text></g>\""},{"typeIdentifier":"t_stringliteral_fab582159965dc3537eef15a4898cfd495cdf6178ad5c39fe4f14de95021bcdd","typeString":"literal_string \" <g style=\"transform:translate(29px, 414px)\">\""},{"typeIdentifier":"t_stringliteral_ea677e503ab4e967d2570a008dd897c1687e0426ee06ab367778d22358bbd498","typeString":"literal_string \"<rect width=\"\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_800ca0756ff976e45c222900c67e79662594eea8a3ec66e3bbb8af53bd09f4e4","typeString":"literal_string \"px\" height=\"26px\" rx=\"8px\" ry=\"8px\" fill=\"rgba(0,0,0,0.6)\" />\""},{"typeIdentifier":"t_stringliteral_5bc1bf3d11aae697778119ef346ad4842b7aeee3b48245084fb03eaf191c89a0","typeString":"literal_string \"<text x=\"12px\" y=\"17px\" font-family=\"'Courier New', monospace\" font-size=\"12px\" fill=\"white\"><tspan fill=\"rgba(255,255,255,0.6)\">Min Tick: </tspan>\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_0b7427e2f769aaaa13bde5b715b09255dc5398714a59a798afc7999c8e6ae7f0","typeString":"literal_string \"</text></g>\""},{"typeIdentifier":"t_stringliteral_220105d546304f5c5e6ab619f93ed0540d9e75da2d2186101f3be7105ff28a8a","typeString":"literal_string \" <g style=\"transform:translate(29px, 444px)\">\""},{"typeIdentifier":"t_stringliteral_ea677e503ab4e967d2570a008dd897c1687e0426ee06ab367778d22358bbd498","typeString":"literal_string \"<rect width=\"\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_800ca0756ff976e45c222900c67e79662594eea8a3ec66e3bbb8af53bd09f4e4","typeString":"literal_string \"px\" height=\"26px\" rx=\"8px\" ry=\"8px\" fill=\"rgba(0,0,0,0.6)\" />\""},{"typeIdentifier":"t_stringliteral_bef0de1b6ab64a87365883910640202cc923019a0642c3dc3ce8c92f70e2aec2","typeString":"literal_string \"<text x=\"12px\" y=\"17px\" font-family=\"'Courier New', monospace\" font-size=\"12px\" fill=\"white\"><tspan fill=\"rgba(255,255,255,0.6)\">Max Tick: </tspan>\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_f779b01e2c11d50446559da8a96e840c35be2177455b0699985122c52b0d1f4e","typeString":"literal_string \"</text></g><g style=\"transform:translate(226px, 433px)\">\""},{"typeIdentifier":"t_stringliteral_ec66f735b9269156d2621c7cb2e179cbb93736ea6dfc7db8bdd4441a81eb1f64","typeString":"literal_string \"<rect width=\"36px\" height=\"36px\" rx=\"8px\" ry=\"8px\" fill=\"none\" stroke=\"rgba(255,255,255,0.2)\" />\""},{"typeIdentifier":"t_stringliteral_9172aa3905273de2038748a8a21d4c0caf162952597ab7af5f83d1a3c63cec1a","typeString":"literal_string \"<path stroke-linecap=\"round\" d=\"M8 9C8.00004 22.9494 16.2099 28 27 28\" fill=\"none\" stroke=\"white\" />\""},{"typeIdentifier":"t_stringliteral_2f31b113ee3d3056d0911a5e394047e1383278908d2c52df748865318956703e","typeString":"literal_string \"<circle style=\"transform:translate3d(\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_b6aaa2c0b71922b19b9b8b146cc93d2f4e231e6b961d744f30cad118bc857ef8","typeString":"literal_string \"px, \""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_12c8706c8ed81675e674ab6c512d5560a6aee02a6795723026211fc0112724ea","typeString":"literal_string \"px, 0px)\" cx=\"0px\" cy=\"0px\" r=\"4px\" fill=\"white\"/></g>\""}],"expression":{"id":13255,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14975:3:85","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":13256,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"14975:16:85","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":13315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14975:1923:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14955:6:85","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":13253,"name":"string","nodeType":"ElementaryTypeName","src":"14955:6:85","typeDescriptions":{}}},"id":13316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14955:1953:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"14949:1959:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":13318,"nodeType":"ExpressionStatement","src":"14949:1959:85"}]},"id":13320,"implemented":true,"kind":"function","modifiers":[],"name":"generateSVGPositionDataAndLocationCurve","nodeType":"FunctionDefinition","parameters":{"id":13197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13192,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":13320,"src":"14424:21:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13191,"name":"string","nodeType":"ElementaryTypeName","src":"14424:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13194,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":13320,"src":"14455:15:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13193,"name":"int24","nodeType":"ElementaryTypeName","src":"14455:5:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":13196,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":13320,"src":"14480:15:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13195,"name":"int24","nodeType":"ElementaryTypeName","src":"14480:5:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"14414:87:85"},"returnParameters":{"id":13200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13199,"mutability":"mutable","name":"svg","nodeType":"VariableDeclaration","scope":13320,"src":"14524:17:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13198,"name":"string","nodeType":"ElementaryTypeName","src":"14524:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"14523:19:85"},"scope":13550,"src":"14366:2549:85","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":13361,"nodeType":"Block","src":"16992:201:85","statements":[{"assignments":[13328],"declarations":[{"constant":false,"id":13328,"mutability":"mutable","name":"sign","nodeType":"VariableDeclaration","scope":13361,"src":"17002:18:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13327,"name":"string","nodeType":"ElementaryTypeName","src":"17002:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":13330,"initialValue":{"hexValue":"","id":13329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17023:2:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"nodeType":"VariableDeclarationStatement","src":"17002:23:85"},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13331,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13322,"src":"17039:4:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":13332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17046:1:85","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17039:8:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13346,"nodeType":"IfStatement","src":"17035:79:85","trueBody":{"id":13345,"nodeType":"Block","src":"17049:65:85","statements":[{"expression":{"id":13339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13334,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13322,"src":"17063:4:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13335,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13322,"src":"17070:4:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":13337,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"17077:2:85","subExpression":{"hexValue":"31","id":13336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17078:1:85","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}},"src":"17070:9:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"17063:16:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":13340,"nodeType":"ExpressionStatement","src":"17063:16:85"},{"expression":{"id":13343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13341,"name":"sign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13328,"src":"17093:4:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"2d","id":13342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17100:3:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"src":"17093:10:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":13344,"nodeType":"ExpressionStatement","src":"17093:10:85"}]}},{"expression":{"arguments":[{"arguments":[{"id":13351,"name":"sign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13328,"src":"17154:4:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":13354,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13322,"src":"17168:4:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":13353,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17160:7:85","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13352,"name":"uint256","nodeType":"ElementaryTypeName","src":"17160:7:85","typeDescriptions":{}}},"id":13355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17160:13:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":6826,"src":"17160:22:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":13357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17160:24:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":13349,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"17137:3:85","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":13350,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"17137:16:85","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":13358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17137:48:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13348,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17130:6:85","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":13347,"name":"string","nodeType":"ElementaryTypeName","src":"17130:6:85","typeDescriptions":{}}},"id":13359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17130:56:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":13326,"id":13360,"nodeType":"Return","src":"17123:63:85"}]},"id":13362,"implemented":true,"kind":"function","modifiers":[],"name":"tickToString","nodeType":"FunctionDefinition","parameters":{"id":13323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13322,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":13362,"src":"16943:10:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13321,"name":"int24","nodeType":"ElementaryTypeName","src":"16943:5:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"16942:12:85"},"returnParameters":{"id":13326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13325,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13362,"src":"16977:13:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13324,"name":"string","nodeType":"ElementaryTypeName","src":"16977:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"16976:15:85"},"scope":13550,"src":"16921:272:85","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":13472,"nodeType":"Block","src":"17309:771:85","statements":[{"assignments":[13374],"declarations":[{"constant":false,"id":13374,"mutability":"mutable","name":"midPoint","nodeType":"VariableDeclaration","scope":13472,"src":"17319:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13373,"name":"int24","nodeType":"ElementaryTypeName","src":"17319:5:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"id":13381,"initialValue":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13375,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13364,"src":"17337:9:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":13376,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13366,"src":"17349:9:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"17337:21:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":13378,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17336:23:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":13379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17362:1:85","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"17336:27:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"VariableDeclarationStatement","src":"17319:44:85"},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13382,"name":"midPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13374,"src":"17377:8:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13384,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"17388:8:85","subExpression":{"hexValue":"3132355f303030","id":13383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17389:7:85","typeDescriptions":{"typeIdentifier":"t_rational_125000_by_1","typeString":"int_const 125000"},"value":"125_000"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_125000_by_1","typeString":"int_const -125000"}},"src":"17377:19:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13391,"name":"midPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13374,"src":"17450:8:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"17461:7:85","subExpression":{"hexValue":"37355f303030","id":13392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17462:6:85","typeDescriptions":{"typeIdentifier":"t_rational_75000_by_1","typeString":"int_const 75000"},"value":"75_000"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_75000_by_1","typeString":"int_const -75000"}},"src":"17450:18:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13400,"name":"midPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13374,"src":"17525:8:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"17536:7:85","subExpression":{"hexValue":"32355f303030","id":13401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17537:6:85","typeDescriptions":{"typeIdentifier":"t_rational_25000_by_1","typeString":"int_const 25000"},"value":"25_000"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_25000_by_1","typeString":"int_const -25000"}},"src":"17525:18:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13409,"name":"midPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13374,"src":"17601:8:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"17612:6:85","subExpression":{"hexValue":"355f303030","id":13410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17613:5:85","typeDescriptions":{"typeIdentifier":"t_rational_5000_by_1","typeString":"int_const 5000"},"value":"5_000"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_5000_by_1","typeString":"int_const -5000"}},"src":"17601:17:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13418,"name":"midPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13374,"src":"17674:8:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":13419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17685:1:85","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17674:12:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13426,"name":"midPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13374,"src":"17742:8:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"355f303030","id":13427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17753:5:85","typeDescriptions":{"typeIdentifier":"t_rational_5000_by_1","typeString":"int_const 5000"},"value":"5_000"},"src":"17742:16:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13434,"name":"midPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13374,"src":"17814:8:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32355f303030","id":13435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17825:6:85","typeDescriptions":{"typeIdentifier":"t_rational_25000_by_1","typeString":"int_const 25000"},"value":"25_000"},"src":"17814:17:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13442,"name":"midPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13374,"src":"17887:8:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"37355f303030","id":13443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17898:6:85","typeDescriptions":{"typeIdentifier":"t_rational_75000_by_1","typeString":"int_const 75000"},"value":"75_000"},"src":"17887:17:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":13452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13450,"name":"midPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13374,"src":"17960:8:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3132355f303030","id":13451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17971:7:85","typeDescriptions":{"typeIdentifier":"t_rational_125000_by_1","typeString":"int_const 125000"},"value":"125_000"},"src":"17960:18:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13462,"nodeType":"Block","src":"18030:44:85","statements":[{"expression":{"components":[{"hexValue":"3234","id":13458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18052:4:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_6585423cb6456b1d4957f6454d2f004f0c4f58d53a00082412d5c2ef4b1b31fd","typeString":"literal_string \"24\""},"value":"24"},{"hexValue":"3237","id":13459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18058:4:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_58a280f74f57bf051c40f060139dc747e015be52f68c57e2c4ab2e4bd4146f43","typeString":"literal_string \"27\""},"value":"27"}],"id":13460,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"18051:12:85","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_6585423cb6456b1d4957f6454d2f004f0c4f58d53a00082412d5c2ef4b1b31fd_$_t_stringliteral_58a280f74f57bf051c40f060139dc747e015be52f68c57e2c4ab2e4bd4146f43_$","typeString":"tuple(literal_string \"24\",literal_string \"27\")"}},"functionReturnParameters":13372,"id":13461,"nodeType":"Return","src":"18044:19:85"}]},"id":13463,"nodeType":"IfStatement","src":"17956:118:85","trueBody":{"id":13457,"nodeType":"Block","src":"17980:44:85","statements":[{"expression":{"components":[{"hexValue":"3231","id":13453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18002:4:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_f4c2b5de886427473655d4c904c743576dc2d53249b7535d96c06cc97ae7216b","typeString":"literal_string \"21\""},"value":"21"},{"hexValue":"3237","id":13454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18008:4:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_58a280f74f57bf051c40f060139dc747e015be52f68c57e2c4ab2e4bd4146f43","typeString":"literal_string \"27\""},"value":"27"}],"id":13455,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"18001:12:85","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_f4c2b5de886427473655d4c904c743576dc2d53249b7535d96c06cc97ae7216b_$_t_stringliteral_58a280f74f57bf051c40f060139dc747e015be52f68c57e2c4ab2e4bd4146f43_$","typeString":"tuple(literal_string \"21\",literal_string \"27\")"}},"functionReturnParameters":13372,"id":13456,"nodeType":"Return","src":"17994:19:85"}]}},"id":13464,"nodeType":"IfStatement","src":"17883:191:85","trueBody":{"id":13449,"nodeType":"Block","src":"17906:44:85","statements":[{"expression":{"components":[{"hexValue":"3138","id":13445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17928:4:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_8fef2229291b68be841adf029e58b87f39ba144b2d3b0af1760243d0a9bc6a1c","typeString":"literal_string \"18\""},"value":"18"},{"hexValue":"3236","id":13446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17934:4:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_9cce9eb03c9f29c6481fca9f0f942b15bef0bbbc47fda0ddb44df157019835d9","typeString":"literal_string \"26\""},"value":"26"}],"id":13447,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17927:12:85","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_8fef2229291b68be841adf029e58b87f39ba144b2d3b0af1760243d0a9bc6a1c_$_t_stringliteral_9cce9eb03c9f29c6481fca9f0f942b15bef0bbbc47fda0ddb44df157019835d9_$","typeString":"tuple(literal_string \"18\",literal_string \"26\")"}},"functionReturnParameters":13372,"id":13448,"nodeType":"Return","src":"17920:19:85"}]}},"id":13465,"nodeType":"IfStatement","src":"17810:264:85","trueBody":{"id":13441,"nodeType":"Block","src":"17833:44:85","statements":[{"expression":{"components":[{"hexValue":"3135","id":13437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17855:4:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_1d3be50b2bb17407dd170f1d5da128d1def30c6b1598d6a629e79b4775265526","typeString":"literal_string \"15\""},"value":"15"},{"hexValue":"3235","id":13438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17861:4:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_81e080ffc23e8b8d44dd829bc823229e92b893eb1d8f624419d3f5682eb97fc3","typeString":"literal_string \"25\""},"value":"25"}],"id":13439,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17854:12:85","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_1d3be50b2bb17407dd170f1d5da128d1def30c6b1598d6a629e79b4775265526_$_t_stringliteral_81e080ffc23e8b8d44dd829bc823229e92b893eb1d8f624419d3f5682eb97fc3_$","typeString":"tuple(literal_string \"15\",literal_string \"25\")"}},"functionReturnParameters":13372,"id":13440,"nodeType":"Return","src":"17847:19:85"}]}},"id":13466,"nodeType":"IfStatement","src":"17738:336:85","trueBody":{"id":13433,"nodeType":"Block","src":"17760:44:85","statements":[{"expression":{"components":[{"hexValue":"3133","id":13429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17782:4:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_789bcdf275fa270780a52ae3b79bb1ce0fda7e0aaad87b57b74bb99ac290714a","typeString":"literal_string \"13\""},"value":"13"},{"hexValue":"3233","id":13430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17788:4:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_1572b593c53d839d80004aa4b8c51211864104f06ace9e22be9c4365b50655ea","typeString":"literal_string \"23\""},"value":"23"}],"id":13431,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:12:85","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_789bcdf275fa270780a52ae3b79bb1ce0fda7e0aaad87b57b74bb99ac290714a_$_t_stringliteral_1572b593c53d839d80004aa4b8c51211864104f06ace9e22be9c4365b50655ea_$","typeString":"tuple(literal_string \"13\",literal_string \"23\")"}},"functionReturnParameters":13372,"id":13432,"nodeType":"Return","src":"17774:19:85"}]}},"id":13467,"nodeType":"IfStatement","src":"17670:404:85","trueBody":{"id":13425,"nodeType":"Block","src":"17688:44:85","statements":[{"expression":{"components":[{"hexValue":"3131","id":13421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17710:4:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_7880aec93413f117ef14bd4e6d130875ab2c7d7d55a064fac3c2f7bd51516380","typeString":"literal_string \"11\""},"value":"11"},{"hexValue":"3231","id":13422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17716:4:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_f4c2b5de886427473655d4c904c743576dc2d53249b7535d96c06cc97ae7216b","typeString":"literal_string \"21\""},"value":"21"}],"id":13423,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17709:12:85","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_7880aec93413f117ef14bd4e6d130875ab2c7d7d55a064fac3c2f7bd51516380_$_t_stringliteral_f4c2b5de886427473655d4c904c743576dc2d53249b7535d96c06cc97ae7216b_$","typeString":"tuple(literal_string \"11\",literal_string \"21\")"}},"functionReturnParameters":13372,"id":13424,"nodeType":"Return","src":"17702:19:85"}]}},"id":13468,"nodeType":"IfStatement","src":"17597:477:85","trueBody":{"id":13417,"nodeType":"Block","src":"17620:44:85","statements":[{"expression":{"components":[{"hexValue":"3130","id":13413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17642:4:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_1a192fabce13988b84994d4296e6cdc418d55e2f1d7f942188d4040b94fc57ac","typeString":"literal_string \"10\""},"value":"10"},{"hexValue":"3138","id":13414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17648:4:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_8fef2229291b68be841adf029e58b87f39ba144b2d3b0af1760243d0a9bc6a1c","typeString":"literal_string \"18\""},"value":"18"}],"id":13415,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17641:12:85","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_1a192fabce13988b84994d4296e6cdc418d55e2f1d7f942188d4040b94fc57ac_$_t_stringliteral_8fef2229291b68be841adf029e58b87f39ba144b2d3b0af1760243d0a9bc6a1c_$","typeString":"tuple(literal_string \"10\",literal_string \"18\")"}},"functionReturnParameters":13372,"id":13416,"nodeType":"Return","src":"17634:19:85"}]}},"id":13469,"nodeType":"IfStatement","src":"17521:553:85","trueBody":{"id":13408,"nodeType":"Block","src":"17545:46:85","statements":[{"expression":{"components":[{"hexValue":"38","id":13404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17567:3:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10","typeString":"literal_string \"8\""},"value":"8"},{"hexValue":"31342e3235","id":13405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17572:7:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_8fe7b983c83186f2bb4fe7874403b14e48744b4c5f28219cbc58c32323190062","typeString":"literal_string \"14.25\""},"value":"14.25"}],"id":13406,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17566:14:85","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_e4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10_$_t_stringliteral_8fe7b983c83186f2bb4fe7874403b14e48744b4c5f28219cbc58c32323190062_$","typeString":"tuple(literal_string \"8\",literal_string \"14.25\")"}},"functionReturnParameters":13372,"id":13407,"nodeType":"Return","src":"17559:21:85"}]}},"id":13470,"nodeType":"IfStatement","src":"17446:628:85","trueBody":{"id":13399,"nodeType":"Block","src":"17470:45:85","statements":[{"expression":{"components":[{"hexValue":"38","id":13395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17492:3:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10","typeString":"literal_string \"8\""},"value":"8"},{"hexValue":"31302e35","id":13396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17497:6:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_da3d464687fba60756c7debf376611beed660b85b1a8cc9153373d2756ff3096","typeString":"literal_string \"10.5\""},"value":"10.5"}],"id":13397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17491:13:85","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_e4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10_$_t_stringliteral_da3d464687fba60756c7debf376611beed660b85b1a8cc9153373d2756ff3096_$","typeString":"tuple(literal_string \"8\",literal_string \"10.5\")"}},"functionReturnParameters":13372,"id":13398,"nodeType":"Return","src":"17484:20:85"}]}},"id":13471,"nodeType":"IfStatement","src":"17373:701:85","trueBody":{"id":13390,"nodeType":"Block","src":"17398:42:85","statements":[{"expression":{"components":[{"hexValue":"38","id":13386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17420:3:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10","typeString":"literal_string \"8\""},"value":"8"},{"hexValue":"37","id":13387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17425:3:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_52f1a9b320cab38e5da8a8f97989383aab0a49165fc91c737310e4f7e9821021","typeString":"literal_string \"7\""},"value":"7"}],"id":13388,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17419:10:85","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_e4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10_$_t_stringliteral_52f1a9b320cab38e5da8a8f97989383aab0a49165fc91c737310e4f7e9821021_$","typeString":"tuple(literal_string \"8\",literal_string \"7\")"}},"functionReturnParameters":13372,"id":13389,"nodeType":"Return","src":"17412:17:85"}]}}]},"id":13473,"implemented":true,"kind":"function","modifiers":[],"name":"rangeLocation","nodeType":"FunctionDefinition","parameters":{"id":13367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13364,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":13473,"src":"17222:15:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13363,"name":"int24","nodeType":"ElementaryTypeName","src":"17222:5:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":13366,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":13473,"src":"17239:15:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13365,"name":"int24","nodeType":"ElementaryTypeName","src":"17239:5:85","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"17221:34:85"},"returnParameters":{"id":13372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13369,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13473,"src":"17279:13:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13368,"name":"string","nodeType":"ElementaryTypeName","src":"17279:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13371,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13473,"src":"17294:13:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13370,"name":"string","nodeType":"ElementaryTypeName","src":"17294:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"17278:30:85"},"scope":13550,"src":"17199:881:85","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13507,"nodeType":"Block","src":"18197:951:85","statements":[{"condition":{"arguments":[{"id":13483,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13475,"src":"18218:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13484,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13477,"src":"18227:11:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":13482,"name":"isRare","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13549,"src":"18211:6:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_address_$returns$_t_bool_$","typeString":"function (uint256,address) pure returns (bool)"}},"id":13485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18211:28:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13505,"nodeType":"Block","src":"19109:33:85","statements":[{"expression":{"id":13503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13501,"name":"svg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13480,"src":"19123:3:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"","id":13502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19129:2:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"src":"19123:8:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":13504,"nodeType":"ExpressionStatement","src":"19123:8:85"}]},"id":13506,"nodeType":"IfStatement","src":"18207:935:85","trueBody":{"id":13500,"nodeType":"Block","src":"18241:862:85","statements":[{"expression":{"id":13498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13486,"name":"svg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13480,"src":"18255:3:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"3c67207374796c653d227472616e73666f726d3a7472616e736c6174652832323670782c20333932707829223e3c726563742077696474683d223336707822206865696768743d2233367078222072783d22387078222072793d22387078222066696c6c3d226e6f6e6522207374726f6b653d2272676261283235352c3235352c3235352c302e322922202f3e","id":13491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18323:143:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_b620537f4b9141f0600bc5c47da368c069fd5940c0d18c49f45f4f60c38c7276","typeString":"literal_string \"<g style=\"transform:translate(226px, 392px)\"><rect width=\"36px\" height=\"36px\" rx=\"8px\" ry=\"8px\" fill=\"none\" stroke=\"rgba(255,255,255,0.2)\" />\""},"value":"<g style=\"transform:translate(226px, 392px)\"><rect width=\"36px\" height=\"36px\" rx=\"8px\" ry=\"8px\" fill=\"none\" stroke=\"rgba(255,255,255,0.2)\" />"},{"hexValue":"3c673e3c70617468207374796c653d227472616e73666f726d3a7472616e736c617465283670782c367078292220643d224d313220304c31322e3635323220392e35363538374c313820312e363037374c31332e373831392031302e323138314c32322e3339323320364c31342e3433343120","id":13492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18488:117:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_9146626b6016e55f44ab5e9e5bfcf47636d35086d1ea0e9bce56b7a6f4831ef4","typeString":"literal_string \"<g><path style=\"transform:translate(6px,6px)\" d=\"M12 0L12.6522 9.56587L18 1.6077L13.7819 10.2181L22.3923 6L14.4341 \""},"value":"<g><path style=\"transform:translate(6px,6px)\" d=\"M12 0L12.6522 9.56587L18 1.6077L13.7819 10.2181L22.3923 6L14.4341 "},{"hexValue":"31312e333437384c32342031324c31342e343334312031322e363532324c32322e333932332031384c31332e373831392031332e373831394c31382032322e333932334c31322e363532322031342e343334314c31322032344c31312e333437382031342e343334314c362032322e3339","id":13493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18627:115:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_80e2be066469ac86e096e4a497c1f8a9fc0d1b11356ae8a905f38331737d0215","typeString":"literal_string \"11.3478L24 12L14.4341 12.6522L22.3923 18L13.7819 13.7819L18 22.3923L12.6522 14.4341L12 24L11.3478 14.4341L6 22.39\""},"value":"11.3478L24 12L14.4341 12.6522L22.3923 18L13.7819 13.7819L18 22.3923L12.6522 14.4341L12 24L11.3478 14.4341L6 22.39"},{"hexValue":"32334c31302e323138312031332e373831394c312e363037372031384c392e35363538372031322e363532324c302031324c392e35363538372031312e333437384c312e3630373720364c31302e323138312031302e323138314c3620312e363037374c31312e3334373820392e35363538374c313220305a222066696c6c3d22776869746522202f3e","id":13494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18764:140:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_b5bc46fc2ed1d11f843f24feabdc206cab85902b15b95b355214f44b7cfde8e7","typeString":"literal_string \"23L10.2181 13.7819L1.6077 18L9.56587 12.6522L0 12L9.56587 11.3478L1.6077 6L10.2181 10.2181L6 1.6077L11.3478 9.56587L12 0Z\" fill=\"white\" />\""},"value":"23L10.2181 13.7819L1.6077 18L9.56587 12.6522L0 12L9.56587 11.3478L1.6077 6L10.2181 10.2181L6 1.6077L11.3478 9.56587L12 0Z\" fill=\"white\" />"},{"hexValue":"3c616e696d6174655472616e73666f726d206174747269627574654e616d653d227472616e73666f726d2220747970653d22726f74617465222066726f6d3d22302031382031382220746f3d2233363020313820313822206475723d223130732220726570656174436f756e743d22696e646566696e697465222f3e3c2f673e3c2f673e","id":13495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18926:134:85","typeDescriptions":{"typeIdentifier":"t_stringliteral_c4a75554270cae0d3a87478224f34b210600c80765754e633311ca3866647bf9","typeString":"literal_string \"<animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 18 18\" to=\"360 18 18\" dur=\"10s\" repeatCount=\"indefinite\"/></g></g>\""},"value":"<animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 18 18\" to=\"360 18 18\" dur=\"10s\" repeatCount=\"indefinite\"/></g></g>"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b620537f4b9141f0600bc5c47da368c069fd5940c0d18c49f45f4f60c38c7276","typeString":"literal_string \"<g style=\"transform:translate(226px, 392px)\"><rect width=\"36px\" height=\"36px\" rx=\"8px\" ry=\"8px\" fill=\"none\" stroke=\"rgba(255,255,255,0.2)\" />\""},{"typeIdentifier":"t_stringliteral_9146626b6016e55f44ab5e9e5bfcf47636d35086d1ea0e9bce56b7a6f4831ef4","typeString":"literal_string \"<g><path style=\"transform:translate(6px,6px)\" d=\"M12 0L12.6522 9.56587L18 1.6077L13.7819 10.2181L22.3923 6L14.4341 \""},{"typeIdentifier":"t_stringliteral_80e2be066469ac86e096e4a497c1f8a9fc0d1b11356ae8a905f38331737d0215","typeString":"literal_string \"11.3478L24 12L14.4341 12.6522L22.3923 18L13.7819 13.7819L18 22.3923L12.6522 14.4341L12 24L11.3478 14.4341L6 22.39\""},{"typeIdentifier":"t_stringliteral_b5bc46fc2ed1d11f843f24feabdc206cab85902b15b95b355214f44b7cfde8e7","typeString":"literal_string \"23L10.2181 13.7819L1.6077 18L9.56587 12.6522L0 12L9.56587 11.3478L1.6077 6L10.2181 10.2181L6 1.6077L11.3478 9.56587L12 0Z\" fill=\"white\" />\""},{"typeIdentifier":"t_stringliteral_c4a75554270cae0d3a87478224f34b210600c80765754e633311ca3866647bf9","typeString":"literal_string \"<animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 18 18\" to=\"360 18 18\" dur=\"10s\" repeatCount=\"indefinite\"/></g></g>\""}],"expression":{"id":13489,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"18285:3:85","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":13490,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"18285:16:85","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":13496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18285:793:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13488,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18261:6:85","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":13487,"name":"string","nodeType":"ElementaryTypeName","src":"18261:6:85","typeDescriptions":{}}},"id":13497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18261:831:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"18255:837:85","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":13499,"nodeType":"ExpressionStatement","src":"18255:837:85"}]}}]},"id":13508,"implemented":true,"kind":"function","modifiers":[],"name":"generateSVGRareSparkle","nodeType":"FunctionDefinition","parameters":{"id":13478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13475,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":13508,"src":"18118:15:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13474,"name":"uint256","nodeType":"ElementaryTypeName","src":"18118:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13477,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":13508,"src":"18135:19:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13476,"name":"address","nodeType":"ElementaryTypeName","src":"18135:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18117:38:85"},"returnParameters":{"id":13481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13480,"mutability":"mutable","name":"svg","nodeType":"VariableDeclaration","scope":13508,"src":"18178:17:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13479,"name":"string","nodeType":"ElementaryTypeName","src":"18178:6:85","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"18177:19:85"},"scope":13550,"src":"18086:1062:85","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":13548,"nodeType":"Block","src":"19237:173:85","statements":[{"assignments":[13518],"declarations":[{"constant":false,"id":13518,"mutability":"mutable","name":"h","nodeType":"VariableDeclaration","scope":13548,"src":"19247:9:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13517,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19247:7:85","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":13526,"initialValue":{"arguments":[{"arguments":[{"id":13522,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13510,"src":"19286:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13523,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13512,"src":"19295:11:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13520,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"19269:3:85","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":13521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"19269:16:85","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":13524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19269:38:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13519,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"19259:9:85","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":13525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19259:49:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"19247:61:85"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":13529,"name":"h","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13518,"src":"19333:1:85","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":13528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19325:7:85","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13527,"name":"uint256","nodeType":"ElementaryTypeName","src":"19325:7:85","typeDescriptions":{}}},"id":13530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19325:10:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":13533,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19343:7:85","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13532,"name":"uint256","nodeType":"ElementaryTypeName","src":"19343:7:85","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":13531,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"19338:4:85","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19338:13:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":13535,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"19338:17:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":13543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":13536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19359:1:85","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":13542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":13539,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13510,"src":"19390:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13537,"name":"BitMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":851,"src":"19363:7:85","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BitMath_$851_$","typeString":"type(library BitMath)"}},"id":13538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mostSignificantBit","nodeType":"MemberAccess","referencedDeclaration":689,"src":"19363:26:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) pure returns (uint8)"}},"id":13540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19363:35:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":13541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19401:1:85","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19363:39:85","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19359:43:85","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":13544,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19358:45:85","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19338:65:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19325:78:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13516,"id":13547,"nodeType":"Return","src":"19318:85:85"}]},"id":13549,"implemented":true,"kind":"function","modifiers":[],"name":"isRare","nodeType":"FunctionDefinition","parameters":{"id":13513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13510,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":13549,"src":"19170:15:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13509,"name":"uint256","nodeType":"ElementaryTypeName","src":"19170:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13512,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":13549,"src":"19187:19:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13511,"name":"address","nodeType":"ElementaryTypeName","src":"19187:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19169:38:85"},"returnParameters":{"id":13516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13515,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13549,"src":"19231:4:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13514,"name":"bool","nodeType":"ElementaryTypeName","src":"19231:4:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"19230:6:85"},"scope":13550,"src":"19154:256:85","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":13551,"src":"376:19036:85"}],"src":"45:19368:85"},"id":85},"contracts/libraries/OracleLibrary.sol":{"ast":{"absolutePath":"contracts/libraries/OracleLibrary.sol","exportedSymbols":{"FullMath":[1041],"IAstraCLPool":[110],"IAstraCLPoolActions":[248],"IAstraCLPoolDerivedState":[279],"IAstraCLPoolEvents":[398],"IAstraCLPoolImmutables":[438],"IAstraCLPoolOwnerActions":[464],"IAstraCLPoolState":[572],"OracleLibrary":[14139],"TickMath":[2536]},"id":14140,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13552,"literals":["solidity",">=","0.5",".0","<","0.8",".0"],"nodeType":"PragmaDirective","src":"45:31:86"},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/FullMath.sol","file":"@airdao/astra-cl-core/contracts/libraries/FullMath.sol","id":13553,"nodeType":"ImportDirective","scope":14140,"sourceUnit":1042,"src":"131:64:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/TickMath.sol","file":"@airdao/astra-cl-core/contracts/libraries/TickMath.sol","id":13554,"nodeType":"ImportDirective","scope":14140,"sourceUnit":2537,"src":"249:64:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","file":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","id":13555,"nodeType":"ImportDirective","scope":14140,"sourceUnit":111,"src":"367:69:86","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":13556,"nodeType":"StructuredDocumentation","src":"438:90:86","text":"@title Oracle library\n @notice Provides functions to integrate with CL pool oracle"},"fullyImplemented":true,"id":14139,"linearizedBaseContracts":[14139],"name":"OracleLibrary","nodeType":"ContractDefinition","nodes":[{"body":{"id":13684,"nodeType":"Block","src":"1210:1068:86","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":13571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13569,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13561,"src":"1228:10:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":13570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1242:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1228:15:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4250","id":13572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1245:4:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_6f8c752f16a50d13ae873620fdefd90c2c58e0d13a068366e5a1b685076b71bb","typeString":"literal_string \"BP\""},"value":"BP"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6f8c752f16a50d13ae873620fdefd90c2c58e0d13a068366e5a1b685076b71bb","typeString":"literal_string \"BP\""}],"id":13568,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1220:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1220:30:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13574,"nodeType":"ExpressionStatement","src":"1220:30:86"},{"assignments":[13579],"declarations":[{"constant":false,"id":13579,"mutability":"mutable","name":"secondsAgos","nodeType":"VariableDeclaration","scope":13684,"src":"1261:27:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":13577,"name":"uint32","nodeType":"ElementaryTypeName","src":"1261:6:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":13578,"nodeType":"ArrayTypeName","src":"1261:8:86","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"}],"id":13585,"initialValue":{"arguments":[{"hexValue":"32","id":13583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1304:1:86","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":13582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1291:12:86","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint32[] memory)"},"typeName":{"baseType":{"id":13580,"name":"uint32","nodeType":"ElementaryTypeName","src":"1295:6:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":13581,"nodeType":"ArrayTypeName","src":"1295:8:86","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}}},"id":13584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1291:15:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"1261:45:86"},{"expression":{"id":13590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13586,"name":"secondsAgos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13579,"src":"1316:11:86","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":13588,"indexExpression":{"hexValue":"30","id":13587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1328:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1316:14:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13589,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13561,"src":"1333:10:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1316:27:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":13591,"nodeType":"ExpressionStatement","src":"1316:27:86"},{"expression":{"id":13596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13592,"name":"secondsAgos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13579,"src":"1353:11:86","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":13594,"indexExpression":{"hexValue":"31","id":13593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1365:1:86","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1353:14:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":13595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1370:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1353:18:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":13597,"nodeType":"ExpressionStatement","src":"1353:18:86"},{"assignments":[13602,13605],"declarations":[{"constant":false,"id":13602,"mutability":"mutable","name":"tickCumulatives","nodeType":"VariableDeclaration","scope":13684,"src":"1383:30:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[]"},"typeName":{"baseType":{"id":13600,"name":"int56","nodeType":"ElementaryTypeName","src":"1383:5:86","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":13601,"nodeType":"ArrayTypeName","src":"1383:7:86","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_storage_ptr","typeString":"int56[]"}},"visibility":"internal"},{"constant":false,"id":13605,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128s","nodeType":"VariableDeclaration","scope":13684,"src":"1415:51:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[]"},"typeName":{"baseType":{"id":13603,"name":"uint160","nodeType":"ElementaryTypeName","src":"1415:7:86","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":13604,"nodeType":"ArrayTypeName","src":"1415:9:86","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}},"visibility":"internal"}],"id":13612,"initialValue":{"arguments":[{"id":13610,"name":"secondsAgos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13579,"src":"1510:11:86","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}],"expression":{"arguments":[{"id":13607,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13559,"src":"1483:4:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13606,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"1470:12:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":13608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1470:18:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":13609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"observe","nodeType":"MemberAccess","referencedDeclaration":264,"src":"1470:39:86","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_array$_t_int56_$dyn_memory_ptr_$_t_array$_t_uint160_$dyn_memory_ptr_$","typeString":"function (uint32[] memory) view external returns (int56[] memory,uint160[] memory)"}},"id":13611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1470:52:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_int56_$dyn_memory_ptr_$_t_array$_t_uint160_$dyn_memory_ptr_$","typeString":"tuple(int56[] memory,uint160[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"1382:140:86"},{"assignments":[13614],"declarations":[{"constant":false,"id":13614,"mutability":"mutable","name":"tickCumulativesDelta","nodeType":"VariableDeclaration","scope":13684,"src":"1533:26:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":13613,"name":"int56","nodeType":"ElementaryTypeName","src":"1533:5:86","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"id":13622,"initialValue":{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":13621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":13615,"name":"tickCumulatives","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13602,"src":"1562:15:86","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[] memory"}},"id":13617,"indexExpression":{"hexValue":"31","id":13616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1578:1:86","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1562:18:86","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"id":13618,"name":"tickCumulatives","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13602,"src":"1583:15:86","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[] memory"}},"id":13620,"indexExpression":{"hexValue":"30","id":13619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1599:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1583:18:86","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"1562:39:86","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"VariableDeclarationStatement","src":"1533:68:86"},{"assignments":[13624],"declarations":[{"constant":false,"id":13624,"mutability":"mutable","name":"secondsPerLiquidityCumulativesDelta","nodeType":"VariableDeclaration","scope":13684,"src":"1611:43:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":13623,"name":"uint160","nodeType":"ElementaryTypeName","src":"1611:7:86","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":13632,"initialValue":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":13631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":13625,"name":"secondsPerLiquidityCumulativeX128s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13605,"src":"1657:34:86","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"id":13627,"indexExpression":{"hexValue":"31","id":13626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1692:1:86","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1657:37:86","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"id":13628,"name":"secondsPerLiquidityCumulativeX128s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13605,"src":"1709:34:86","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[] memory"}},"id":13630,"indexExpression":{"hexValue":"30","id":13629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1744:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1709:37:86","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1657:89:86","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"1611:135:86"},{"expression":{"id":13640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13633,"name":"arithmeticMeanTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13564,"src":"1757:18:86","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":13638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13636,"name":"tickCumulativesDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13614,"src":"1784:20:86","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":13637,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13561,"src":"1807:10:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1784:33:86","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int56","typeString":"int56"}],"id":13635,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1778:5:86","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":13634,"name":"int24","nodeType":"ElementaryTypeName","src":"1778:5:86","typeDescriptions":{}}},"id":13639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1778:40:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1757:61:86","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":13641,"nodeType":"ExpressionStatement","src":"1757:61:86"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":13644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13642,"name":"tickCumulativesDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13614,"src":"1877:20:86","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":13643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1900:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1877:24:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":13649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":13647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13645,"name":"tickCumulativesDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13614,"src":"1906:20:86","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":13646,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13561,"src":"1929:10:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1906:33:86","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":13648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1943:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1906:38:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":13650,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1905:40:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1877:68:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13655,"nodeType":"IfStatement","src":"1873:94:86","trueBody":{"expression":{"id":13653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"1947:20:86","subExpression":{"id":13652,"name":"arithmeticMeanTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13564,"src":"1947:18:86","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":13654,"nodeType":"ExpressionStatement","src":"1947:20:86"}},{"assignments":[13657],"declarations":[{"constant":false,"id":13657,"mutability":"mutable","name":"secondsAgoX160","nodeType":"VariableDeclaration","scope":13684,"src":"2095:22:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":13656,"name":"uint192","nodeType":"ElementaryTypeName","src":"2095:7:86","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"id":13668,"initialValue":{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":13667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":13660,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13561,"src":"2128:10:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":13659,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2120:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":13658,"name":"uint192","nodeType":"ElementaryTypeName","src":"2120:7:86","typeDescriptions":{}}},"id":13661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2120:19:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"arguments":[{"id":13664,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2147:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":13663,"name":"uint160","nodeType":"ElementaryTypeName","src":"2147:7:86","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":13662,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2142:4:86","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2142:13:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":13666,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"2142:17:86","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2120:39:86","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"VariableDeclarationStatement","src":"2095:64:86"},{"expression":{"id":13682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13669,"name":"harmonicMeanLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13566,"src":"2169:21:86","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":13680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13672,"name":"secondsAgoX160","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13657,"src":"2201:14:86","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":13678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":13675,"name":"secondsPerLiquidityCumulativesDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13624,"src":"2227:35:86","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":13674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2219:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":13673,"name":"uint192","nodeType":"ElementaryTypeName","src":"2219:7:86","typeDescriptions":{}}},"id":13676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2219:44:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":13677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2267:2:86","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"2219:50:86","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"id":13679,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2218:52:86","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"2201:69:86","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint192","typeString":"uint192"}],"id":13671,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2193:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":13670,"name":"uint128","nodeType":"ElementaryTypeName","src":"2193:7:86","typeDescriptions":{}}},"id":13681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2193:78:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2169:102:86","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":13683,"nodeType":"ExpressionStatement","src":"2169:102:86"}]},"documentation":{"id":13557,"nodeType":"StructuredDocumentation","src":"556:497:86","text":"@notice Calculates time-weighted means of tick and liquidity for a given AstraDEX CL pool\n @param pool Address of the pool that we want to observe\n @param secondsAgo Number of seconds in the past from which to calculate the time-weighted means\n @return arithmeticMeanTick The arithmetic mean tick from (block.timestamp - secondsAgo) to block.timestamp\n @return harmonicMeanLiquidity The harmonic mean liquidity from (block.timestamp - secondsAgo) to block.timestamp"},"id":13685,"implemented":true,"kind":"function","modifiers":[],"name":"consult","nodeType":"FunctionDefinition","parameters":{"id":13562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13559,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":13685,"src":"1084:12:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13558,"name":"address","nodeType":"ElementaryTypeName","src":"1084:7:86","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13561,"mutability":"mutable","name":"secondsAgo","nodeType":"VariableDeclaration","scope":13685,"src":"1106:17:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13560,"name":"uint32","nodeType":"ElementaryTypeName","src":"1106:6:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1074:55:86"},"returnParameters":{"id":13567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13564,"mutability":"mutable","name":"arithmeticMeanTick","nodeType":"VariableDeclaration","scope":13685,"src":"1153:24:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13563,"name":"int24","nodeType":"ElementaryTypeName","src":"1153:5:86","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":13566,"mutability":"mutable","name":"harmonicMeanLiquidity","nodeType":"VariableDeclaration","scope":13685,"src":"1179:29:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":13565,"name":"uint128","nodeType":"ElementaryTypeName","src":"1179:7:86","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1152:57:86"},"scope":14139,"src":"1058:1220:86","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13782,"nodeType":"Block","src":"2959:778:86","statements":[{"assignments":[13700],"declarations":[{"constant":false,"id":13700,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":13782,"src":"2969:20:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":13699,"name":"uint160","nodeType":"ElementaryTypeName","src":"2969:7:86","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":13705,"initialValue":{"arguments":[{"id":13703,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13688,"src":"3020:4:86","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":13701,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"2992:8:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$2536_$","typeString":"type(library TickMath)"}},"id":13702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":2396,"src":"2992:27:86","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":13704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2992:33:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"2969:56:86"},{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":13712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13706,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13700,"src":"3144:12:86","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":13709,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3165:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":13708,"name":"uint128","nodeType":"ElementaryTypeName","src":"3165:7:86","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":13707,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3160:4:86","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3160:13:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":13711,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"3160:17:86","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3144:33:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13780,"nodeType":"Block","src":"3450:281:86","statements":[{"assignments":[13747],"declarations":[{"constant":false,"id":13747,"mutability":"mutable","name":"ratioX128","nodeType":"VariableDeclaration","scope":13780,"src":"3464:17:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13746,"name":"uint256","nodeType":"ElementaryTypeName","src":"3464:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13756,"initialValue":{"arguments":[{"id":13750,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13700,"src":"3500:12:86","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":13751,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13700,"src":"3514:12:86","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"commonType":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"id":13754,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":13752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3528:1:86","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":13753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3533:2:86","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"3528:7:86","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}],"expression":{"id":13748,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"3484:8:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$1041_$","typeString":"type(library FullMath)"}},"id":13749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":997,"src":"3484:15:86","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":13755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3484:52:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3464:72:86"},{"expression":{"id":13778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13757,"name":"quoteAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13697,"src":"3550:11:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13758,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13692,"src":"3564:9:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13759,"name":"quoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13694,"src":"3576:10:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3564:22:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"id":13773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":13771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3688:1:86","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":13772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3693:3:86","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3688:8:86","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}},{"id":13774,"name":"baseAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13690,"src":"3698:10:86","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":13775,"name":"ratioX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13747,"src":"3710:9:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13769,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"3672:8:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$1041_$","typeString":"type(library FullMath)"}},"id":13770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":997,"src":"3672:15:86","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":13776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3672:48:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3564:156:86","trueExpression":{"arguments":[{"id":13763,"name":"ratioX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13747,"src":"3621:9:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13764,"name":"baseAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13690,"src":"3632:10:86","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"id":13767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":13765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3644:1:86","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":13766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3649:3:86","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3644:8:86","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}],"expression":{"id":13761,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"3605:8:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$1041_$","typeString":"type(library FullMath)"}},"id":13762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":997,"src":"3605:15:86","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":13768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3605:48:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3550:170:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13779,"nodeType":"ExpressionStatement","src":"3550:170:86"}]},"id":13781,"nodeType":"IfStatement","src":"3140:591:86","trueBody":{"id":13745,"nodeType":"Block","src":"3179:265:86","statements":[{"assignments":[13714],"declarations":[{"constant":false,"id":13714,"mutability":"mutable","name":"ratioX192","nodeType":"VariableDeclaration","scope":13745,"src":"3193:17:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13713,"name":"uint256","nodeType":"ElementaryTypeName","src":"3193:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13721,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":13717,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13700,"src":"3221:12:86","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":13716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3213:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13715,"name":"uint256","nodeType":"ElementaryTypeName","src":"3213:7:86","typeDescriptions":{}}},"id":13718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3213:21:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":13719,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13700,"src":"3237:12:86","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"3213:36:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3193:56:86"},{"expression":{"id":13743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13722,"name":"quoteAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13697,"src":"3263:11:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13723,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13692,"src":"3277:9:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13724,"name":"quoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13694,"src":"3289:10:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3277:22:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_rational_6277101735386680763835789423207666416102355444464034512896_by_1","typeString":"int_const 6277...(50 digits omitted)...2896"},"id":13738,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":13736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3401:1:86","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313932","id":13737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3406:3:86","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},"src":"3401:8:86","typeDescriptions":{"typeIdentifier":"t_rational_6277101735386680763835789423207666416102355444464034512896_by_1","typeString":"int_const 6277...(50 digits omitted)...2896"}},{"id":13739,"name":"baseAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13690,"src":"3411:10:86","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":13740,"name":"ratioX192","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13714,"src":"3423:9:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_6277101735386680763835789423207666416102355444464034512896_by_1","typeString":"int_const 6277...(50 digits omitted)...2896"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13734,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"3385:8:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$1041_$","typeString":"type(library FullMath)"}},"id":13735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":997,"src":"3385:15:86","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":13741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3385:48:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3277:156:86","trueExpression":{"arguments":[{"id":13728,"name":"ratioX192","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13714,"src":"3334:9:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13729,"name":"baseAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13690,"src":"3345:10:86","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"commonType":{"typeIdentifier":"t_rational_6277101735386680763835789423207666416102355444464034512896_by_1","typeString":"int_const 6277...(50 digits omitted)...2896"},"id":13732,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":13730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3357:1:86","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313932","id":13731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3362:3:86","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},"src":"3357:8:86","typeDescriptions":{"typeIdentifier":"t_rational_6277101735386680763835789423207666416102355444464034512896_by_1","typeString":"int_const 6277...(50 digits omitted)...2896"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_rational_6277101735386680763835789423207666416102355444464034512896_by_1","typeString":"int_const 6277...(50 digits omitted)...2896"}],"expression":{"id":13726,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"3318:8:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$1041_$","typeString":"type(library FullMath)"}},"id":13727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":997,"src":"3318:15:86","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":13733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3318:48:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3263:170:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13744,"nodeType":"ExpressionStatement","src":"3263:170:86"}]}}]},"documentation":{"id":13686,"nodeType":"StructuredDocumentation","src":"2284:493:86","text":"@notice Given a tick and a token amount, calculates the amount of token received in exchange\n @param tick Tick value used to calculate the quote\n @param baseAmount Amount of token to be converted\n @param baseToken Address of an ERC20 token contract used as the baseAmount denomination\n @param quoteToken Address of an ERC20 token contract used as the quoteAmount denomination\n @return quoteAmount Amount of quoteToken received for baseAmount of baseToken"},"id":13783,"implemented":true,"kind":"function","modifiers":[],"name":"getQuoteAtTick","nodeType":"FunctionDefinition","parameters":{"id":13695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13688,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":13783,"src":"2815:10:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13687,"name":"int24","nodeType":"ElementaryTypeName","src":"2815:5:86","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":13690,"mutability":"mutable","name":"baseAmount","nodeType":"VariableDeclaration","scope":13783,"src":"2835:18:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":13689,"name":"uint128","nodeType":"ElementaryTypeName","src":"2835:7:86","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":13692,"mutability":"mutable","name":"baseToken","nodeType":"VariableDeclaration","scope":13783,"src":"2863:17:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13691,"name":"address","nodeType":"ElementaryTypeName","src":"2863:7:86","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13694,"mutability":"mutable","name":"quoteToken","nodeType":"VariableDeclaration","scope":13783,"src":"2890:18:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13693,"name":"address","nodeType":"ElementaryTypeName","src":"2890:7:86","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2805:109:86"},"returnParameters":{"id":13698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13697,"mutability":"mutable","name":"quoteAmount","nodeType":"VariableDeclaration","scope":13783,"src":"2938:19:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13696,"name":"uint256","nodeType":"ElementaryTypeName","src":"2938:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2937:21:86"},"scope":14139,"src":"2782:955:86","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13848,"nodeType":"Block","src":"4110:688:86","statements":[{"assignments":[null,null,13792,13794,null,null,null],"declarations":[null,null,{"constant":false,"id":13792,"mutability":"mutable","name":"observationIndex","nodeType":"VariableDeclaration","scope":13848,"src":"4125:23:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":13791,"name":"uint16","nodeType":"ElementaryTypeName","src":"4125:6:86","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":13794,"mutability":"mutable","name":"observationCardinality","nodeType":"VariableDeclaration","scope":13848,"src":"4150:29:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":13793,"name":"uint16","nodeType":"ElementaryTypeName","src":"4150:6:86","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},null,null,null],"id":13800,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":13796,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13786,"src":"4202:4:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13795,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"4189:12:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":13797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4189:18:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":13798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":485,"src":"4189:24:86","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$","typeString":"function () view external returns (uint160,int24,uint16,uint16,uint16,uint8,bool)"}},"id":13799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4189:26:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$","typeString":"tuple(uint160,int24,uint16,uint16,uint16,uint8,bool)"}},"nodeType":"VariableDeclarationStatement","src":"4120:95:86"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":13804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13802,"name":"observationCardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13794,"src":"4233:22:86","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4258:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4233:26:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e49","id":13805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4261:4:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_e817963341ac54b6c6630a42fcd594b50ae6e47bc5952aa5478cb70078a54ca0","typeString":"literal_string \"NI\""},"value":"NI"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e817963341ac54b6c6630a42fcd594b50ae6e47bc5952aa5478cb70078a54ca0","typeString":"literal_string \"NI\""}],"id":13801,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4225:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4225:41:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13807,"nodeType":"ExpressionStatement","src":"4225:41:86"},{"assignments":[13809,null,null,13811],"declarations":[{"constant":false,"id":13809,"mutability":"mutable","name":"observationTimestamp","nodeType":"VariableDeclaration","scope":13848,"src":"4278:27:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13808,"name":"uint32","nodeType":"ElementaryTypeName","src":"4278:6:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},null,null,{"constant":false,"id":13811,"mutability":"mutable","name":"initialized","nodeType":"VariableDeclaration","scope":13848,"src":"4311:16:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13810,"name":"bool","nodeType":"ElementaryTypeName","src":"4311:4:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":13823,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":13821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":13818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13816,"name":"observationIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13792,"src":"4377:16:86","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":13817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4396:1:86","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4377:20:86","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":13819,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4376:22:86","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":13820,"name":"observationCardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13794,"src":"4401:22:86","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"4376:47:86","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"arguments":[{"id":13813,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13786,"src":"4344:4:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13812,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"4331:12:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":13814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4331:18:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":13815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"observations","nodeType":"MemberAccess","referencedDeclaration":571,"src":"4331:31:86","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$","typeString":"function (uint256) view external returns (uint32,int56,uint160,bool)"}},"id":13822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4331:102:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$","typeString":"tuple(uint32,int56,uint160,bool)"}},"nodeType":"VariableDeclarationStatement","src":"4277:156:86"},{"condition":{"id":13825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4618:12:86","subExpression":{"id":13824,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13811,"src":"4619:11:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13837,"nodeType":"IfStatement","src":"4614:108:86","trueBody":{"id":13836,"nodeType":"Block","src":"4632:90:86","statements":[{"expression":{"id":13834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":13826,"name":"observationTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13809,"src":"4647:20:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},null,null,null],"id":13827,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4646:28:86","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$__$__$__$","typeString":"tuple(uint32,,,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":13832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4709:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[{"id":13829,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13786,"src":"4690:4:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13828,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"4677:12:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":13830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4677:18:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":13831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"observations","nodeType":"MemberAccess","referencedDeclaration":571,"src":"4677:31:86","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$","typeString":"function (uint256) view external returns (uint32,int56,uint160,bool)"}},"id":13833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4677:34:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$","typeString":"tuple(uint32,int56,uint160,bool)"}},"src":"4646:65:86","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13835,"nodeType":"ExpressionStatement","src":"4646:65:86"}]}},{"expression":{"id":13846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13838,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13789,"src":"4732:10:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":13845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":13841,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4752:5:86","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"4752:15:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13840,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4745:6:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":13839,"name":"uint32","nodeType":"ElementaryTypeName","src":"4745:6:86","typeDescriptions":{}}},"id":13843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4745:23:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13844,"name":"observationTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13809,"src":"4771:20:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4745:46:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4732:59:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":13847,"nodeType":"ExpressionStatement","src":"4732:59:86"}]},"documentation":{"id":13784,"nodeType":"StructuredDocumentation","src":"3743:266:86","text":"@notice Given a pool, it returns the number of seconds ago of the oldest stored observation\n @param pool Address of AstraDEX CL pool that we want to observe\n @return secondsAgo The number of seconds ago of the oldest observation stored for the pool"},"id":13849,"implemented":true,"kind":"function","modifiers":[],"name":"getOldestObservationSecondsAgo","nodeType":"FunctionDefinition","parameters":{"id":13787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13786,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":13849,"src":"4054:12:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13785,"name":"address","nodeType":"ElementaryTypeName","src":"4054:7:86","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4053:14:86"},"returnParameters":{"id":13790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13789,"mutability":"mutable","name":"secondsAgo","nodeType":"VariableDeclaration","scope":13849,"src":"4091:17:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13788,"name":"uint32","nodeType":"ElementaryTypeName","src":"4091:6:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"4090:19:86"},"scope":14139,"src":"4014:784:86","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13991,"nodeType":"Block","src":"5120:1654:86","statements":[{"assignments":[null,13860,13862,13864,null,null,null],"declarations":[null,{"constant":false,"id":13860,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":13991,"src":"5133:10:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13859,"name":"int24","nodeType":"ElementaryTypeName","src":"5133:5:86","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":13862,"mutability":"mutable","name":"observationIndex","nodeType":"VariableDeclaration","scope":13991,"src":"5145:23:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":13861,"name":"uint16","nodeType":"ElementaryTypeName","src":"5145:6:86","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":13864,"mutability":"mutable","name":"observationCardinality","nodeType":"VariableDeclaration","scope":13991,"src":"5170:29:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":13863,"name":"uint16","nodeType":"ElementaryTypeName","src":"5170:6:86","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},null,null,null],"id":13870,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":13866,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13852,"src":"5222:4:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13865,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"5209:12:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":13867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5209:18:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":13868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":485,"src":"5209:24:86","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$","typeString":"function () view external returns (uint160,int24,uint16,uint16,uint16,uint8,bool)"}},"id":13869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5209:26:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$","typeString":"tuple(uint160,int24,uint16,uint16,uint16,uint8,bool)"}},"nodeType":"VariableDeclarationStatement","src":"5130:105:86"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":13874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13872,"name":"observationCardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13864,"src":"5337:22:86","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":13873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5362:1:86","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5337:26:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e454f","id":13875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5365:5:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_6dc5790d7c4bfaaa2e4f8e2cd517bacd4a3831f85c0964e56f2743cbb847bc46","typeString":"literal_string \"NEO\""},"value":"NEO"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6dc5790d7c4bfaaa2e4f8e2cd517bacd4a3831f85c0964e56f2743cbb847bc46","typeString":"literal_string \"NEO\""}],"id":13871,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5329:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5329:42:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13877,"nodeType":"ExpressionStatement","src":"5329:42:86"},{"assignments":[13879,13881,13883,null],"declarations":[{"constant":false,"id":13879,"mutability":"mutable","name":"observationTimestamp","nodeType":"VariableDeclaration","scope":13991,"src":"5689:27:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13878,"name":"uint32","nodeType":"ElementaryTypeName","src":"5689:6:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":13881,"mutability":"mutable","name":"tickCumulative","nodeType":"VariableDeclaration","scope":13991,"src":"5718:20:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":13880,"name":"int56","nodeType":"ElementaryTypeName","src":"5718:5:86","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":13883,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128","nodeType":"VariableDeclaration","scope":13991,"src":"5740:41:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":13882,"name":"uint160","nodeType":"ElementaryTypeName","src":"5740:7:86","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},null],"id":13890,"initialValue":{"arguments":[{"id":13888,"name":"observationIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13862,"src":"5841:16:86","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"arguments":[{"id":13885,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13852,"src":"5813:4:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13884,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"5787:12:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":13886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5787:40:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":13887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"observations","nodeType":"MemberAccess","referencedDeclaration":571,"src":"5787:53:86","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$","typeString":"function (uint256) view external returns (uint32,int56,uint160,bool)"}},"id":13889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5787:71:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$","typeString":"tuple(uint32,int56,uint160,bool)"}},"nodeType":"VariableDeclarationStatement","src":"5688:170:86"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":13897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13891,"name":"observationTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13879,"src":"5872:20:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"expression":{"id":13894,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5903:5:86","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"5903:15:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5896:6:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":13892,"name":"uint32","nodeType":"ElementaryTypeName","src":"5896:6:86","typeDescriptions":{}}},"id":13896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5896:23:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"5872:47:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13907,"nodeType":"IfStatement","src":"5868:123:86","trueBody":{"id":13906,"nodeType":"Block","src":"5921:70:86","statements":[{"expression":{"components":[{"id":13898,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"5943:4:86","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":13900,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13852,"src":"5962:4:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13899,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"5949:12:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":13901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5949:18:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":13902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":511,"src":"5949:28:86","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint128_$","typeString":"function () view external returns (uint128)"}},"id":13903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5949:30:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":13904,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5942:38:86","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int24_$_t_uint128_$","typeString":"tuple(int24,uint128)"}},"functionReturnParameters":13858,"id":13905,"nodeType":"Return","src":"5935:45:86"}]}},{"assignments":[13909],"declarations":[{"constant":false,"id":13909,"mutability":"mutable","name":"prevIndex","nodeType":"VariableDeclaration","scope":13991,"src":"6001:17:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13908,"name":"uint256","nodeType":"ElementaryTypeName","src":"6001:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13921,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":13912,"name":"observationIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13862,"src":"6030:16:86","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":13911,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6022:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13910,"name":"uint256","nodeType":"ElementaryTypeName","src":"6022:7:86","typeDescriptions":{}}},"id":13913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6022:25:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":13914,"name":"observationCardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13864,"src":"6050:22:86","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"6022:50:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":13916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6075:1:86","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6022:54:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13918,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6021:56:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":13919,"name":"observationCardinality","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13864,"src":"6080:22:86","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"6021:81:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6001:101:86"},{"assignments":[13923,13925,13927,13929],"declarations":[{"constant":false,"id":13923,"mutability":"mutable","name":"prevObservationTimestamp","nodeType":"VariableDeclaration","scope":13991,"src":"6126:31:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13922,"name":"uint32","nodeType":"ElementaryTypeName","src":"6126:6:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":13925,"mutability":"mutable","name":"prevTickCumulative","nodeType":"VariableDeclaration","scope":13991,"src":"6171:24:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":13924,"name":"int56","nodeType":"ElementaryTypeName","src":"6171:5:86","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":13927,"mutability":"mutable","name":"prevSecondsPerLiquidityCumulativeX128","nodeType":"VariableDeclaration","scope":13991,"src":"6209:45:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":13926,"name":"uint160","nodeType":"ElementaryTypeName","src":"6209:7:86","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":13929,"mutability":"mutable","name":"prevInitialized","nodeType":"VariableDeclaration","scope":13991,"src":"6268:20:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13928,"name":"bool","nodeType":"ElementaryTypeName","src":"6268:4:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":13936,"initialValue":{"arguments":[{"id":13934,"name":"prevIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13909,"src":"6333:9:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":13931,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13852,"src":"6314:4:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13930,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"6301:12:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":13932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6301:18:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":13933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"observations","nodeType":"MemberAccess","referencedDeclaration":571,"src":"6301:31:86","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$","typeString":"function (uint256) view external returns (uint32,int56,uint160,bool)"}},"id":13935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6301:42:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_int56_$_t_uint160_$_t_bool_$","typeString":"tuple(uint32,int56,uint160,bool)"}},"nodeType":"VariableDeclarationStatement","src":"6112:231:86"},{"expression":{"arguments":[{"id":13938,"name":"prevInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13929,"src":"6362:15:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f4e49","id":13939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6379:5:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_4375a34c158c497e1dec923d39179cd2bff1d358f7876b16ed4f850d3b707895","typeString":"literal_string \"ONI\""},"value":"ONI"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4375a34c158c497e1dec923d39179cd2bff1d358f7876b16ed4f850d3b707895","typeString":"literal_string \"ONI\""}],"id":13937,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6354:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6354:31:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13941,"nodeType":"ExpressionStatement","src":"6354:31:86"},{"assignments":[13943],"declarations":[{"constant":false,"id":13943,"mutability":"mutable","name":"delta","nodeType":"VariableDeclaration","scope":13991,"src":"6396:12:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13942,"name":"uint32","nodeType":"ElementaryTypeName","src":"6396:6:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":13947,"initialValue":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":13946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13944,"name":"observationTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13879,"src":"6411:20:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13945,"name":"prevObservationTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13923,"src":"6434:24:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"6411:47:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"6396:62:86"},{"expression":{"id":13958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13948,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"6468:4:86","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":13956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int56","typeString":"int56"},"id":13953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13951,"name":"tickCumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13881,"src":"6482:14:86","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13952,"name":"prevTickCumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13925,"src":"6499:18:86","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"6482:35:86","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}}],"id":13954,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6481:37:86","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":13955,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13943,"src":"6521:5:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"6481:45:86","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int56","typeString":"int56"}],"id":13950,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6475:5:86","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":13949,"name":"int24","nodeType":"ElementaryTypeName","src":"6475:5:86","typeDescriptions":{}}},"id":13957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6475:52:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"6468:59:86","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":13959,"nodeType":"ExpressionStatement","src":"6468:59:86"},{"assignments":[13961],"declarations":[{"constant":false,"id":13961,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":13991,"src":"6537:17:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":13960,"name":"uint128","nodeType":"ElementaryTypeName","src":"6537:7:86","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":13986,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":13984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":13973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":13966,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13943,"src":"6587:5:86","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":13965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6579:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":13964,"name":"uint192","nodeType":"ElementaryTypeName","src":"6579:7:86","typeDescriptions":{}}},"id":13967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6579:14:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"arguments":[{"id":13970,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6601:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":13969,"name":"uint160","nodeType":"ElementaryTypeName","src":"6601:7:86","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":13968,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6596:4:86","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6596:13:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":13972,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"6596:17:86","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6579:34:86","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"id":13974,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6578:36:86","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint192","typeString":"uint192"},"id":13982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":13979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13977,"name":"secondsPerLiquidityCumulativeX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13883,"src":"6642:33:86","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13978,"name":"prevSecondsPerLiquidityCumulativeX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13927,"src":"6678:37:86","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"6642:73:86","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":13976,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6634:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":13975,"name":"uint192","nodeType":"ElementaryTypeName","src":"6634:7:86","typeDescriptions":{}}},"id":13980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6634:82:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":13981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6720:2:86","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"6634:88:86","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"id":13983,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6633:90:86","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"6578:145:86","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint192","typeString":"uint192"}],"id":13963,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6557:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":13962,"name":"uint128","nodeType":"ElementaryTypeName","src":"6557:7:86","typeDescriptions":{}}},"id":13985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6557:176:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"6537:196:86"},{"expression":{"components":[{"id":13987,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"6751:4:86","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":13988,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13961,"src":"6757:9:86","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":13989,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6750:17:86","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int24_$_t_uint128_$","typeString":"tuple(int24,uint128)"}},"functionReturnParameters":13858,"id":13990,"nodeType":"Return","src":"6743:24:86"}]},"documentation":{"id":13850,"nodeType":"StructuredDocumentation","src":"4804:216:86","text":"@notice Given a pool, it returns the tick value as of the start of the current block\n @param pool Address of AstraDEX CL pool\n @return The tick that the pool was in at the start of the current block"},"id":13992,"implemented":true,"kind":"function","modifiers":[],"name":"getBlockStartingTickAndLiquidity","nodeType":"FunctionDefinition","parameters":{"id":13853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13852,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":13992,"src":"5067:12:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13851,"name":"address","nodeType":"ElementaryTypeName","src":"5067:7:86","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5066:14:86"},"returnParameters":{"id":13858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13855,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13992,"src":"5104:5:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13854,"name":"int24","nodeType":"ElementaryTypeName","src":"5104:5:86","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":13857,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13992,"src":"5111:7:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":13856,"name":"uint128","nodeType":"ElementaryTypeName","src":"5111:7:86","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5103:16:86"},"scope":14139,"src":"5025:1749:86","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"OracleLibrary.WeightedTickData","id":13997,"members":[{"constant":false,"id":13994,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":13997,"src":"6890:10:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":13993,"name":"int24","nodeType":"ElementaryTypeName","src":"6890:5:86","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":13996,"mutability":"mutable","name":"weight","nodeType":"VariableDeclaration","scope":13997,"src":"6910:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":13995,"name":"uint128","nodeType":"ElementaryTypeName","src":"6910:7:86","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"WeightedTickData","nodeType":"StructDefinition","scope":14139,"src":"6856:75:86","visibility":"public"},{"body":{"id":14075,"nodeType":"Block","src":"7674:725:86","statements":[{"assignments":[14007],"declarations":[{"constant":false,"id":14007,"mutability":"mutable","name":"numerator","nodeType":"VariableDeclaration","scope":14075,"src":"7760:16:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14006,"name":"int256","nodeType":"ElementaryTypeName","src":"7760:6:86","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":14008,"nodeType":"VariableDeclarationStatement","src":"7760:16:86"},{"assignments":[14010],"declarations":[{"constant":false,"id":14010,"mutability":"mutable","name":"denominator","nodeType":"VariableDeclaration","scope":14075,"src":"7833:19:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14009,"name":"uint256","nodeType":"ElementaryTypeName","src":"7833:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14011,"nodeType":"VariableDeclarationStatement","src":"7833:19:86"},{"body":{"id":14044,"nodeType":"Block","src":"8017:154:86","statements":[{"expression":{"id":14035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14022,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14007,"src":"8031:9:86","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":14023,"name":"weightedTickData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14001,"src":"8044:16:86","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WeightedTickData_$13997_memory_ptr_$dyn_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData memory[] memory"}},"id":14025,"indexExpression":{"id":14024,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14013,"src":"8061:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8044:19:86","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedTickData_$13997_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData memory"}},"id":14026,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tick","nodeType":"MemberAccess","referencedDeclaration":13994,"src":"8044:24:86","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"expression":{"baseExpression":{"id":14029,"name":"weightedTickData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14001,"src":"8078:16:86","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WeightedTickData_$13997_memory_ptr_$dyn_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData memory[] memory"}},"id":14031,"indexExpression":{"id":14030,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14013,"src":"8095:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8078:19:86","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedTickData_$13997_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData memory"}},"id":14032,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"weight","nodeType":"MemberAccess","referencedDeclaration":13996,"src":"8078:26:86","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":14028,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8071:6:86","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":14027,"name":"int256","nodeType":"ElementaryTypeName","src":"8071:6:86","typeDescriptions":{}}},"id":14033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8071:34:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"8044:61:86","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"8031:74:86","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":14036,"nodeType":"ExpressionStatement","src":"8031:74:86"},{"expression":{"id":14042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14037,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14010,"src":"8119:11:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"baseExpression":{"id":14038,"name":"weightedTickData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14001,"src":"8134:16:86","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WeightedTickData_$13997_memory_ptr_$dyn_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData memory[] memory"}},"id":14040,"indexExpression":{"id":14039,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14013,"src":"8151:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8134:19:86","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedTickData_$13997_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData memory"}},"id":14041,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"weight","nodeType":"MemberAccess","referencedDeclaration":13996,"src":"8134:26:86","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"8119:41:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14043,"nodeType":"ExpressionStatement","src":"8119:41:86"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14015,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14013,"src":"7983:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":14016,"name":"weightedTickData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14001,"src":"7987:16:86","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WeightedTickData_$13997_memory_ptr_$dyn_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData memory[] memory"}},"id":14017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7987:23:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7983:27:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14045,"initializationExpression":{"assignments":[14013],"declarations":[{"constant":false,"id":14013,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":14045,"src":"7972:9:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14012,"name":"uint256","nodeType":"ElementaryTypeName","src":"7972:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14014,"nodeType":"VariableDeclarationStatement","src":"7972:9:86"},"loopExpression":{"expression":{"id":14020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8012:3:86","subExpression":{"id":14019,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14013,"src":"8012:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14021,"nodeType":"ExpressionStatement","src":"8012:3:86"},"nodeType":"ForStatement","src":"7967:204:86"},{"expression":{"id":14056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14046,"name":"weightedArithmeticMeanTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14004,"src":"8181:26:86","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14049,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14007,"src":"8216:9:86","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":14052,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14010,"src":"8235:11:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14051,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8228:6:86","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":14050,"name":"int256","nodeType":"ElementaryTypeName","src":"8228:6:86","typeDescriptions":{}}},"id":14053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8228:19:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"8216:31:86","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":14048,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8210:5:86","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":14047,"name":"int24","nodeType":"ElementaryTypeName","src":"8210:5:86","typeDescriptions":{}}},"id":14055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8210:38:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"8181:67:86","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":14057,"nodeType":"ExpressionStatement","src":"8181:67:86"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14058,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14007,"src":"8307:9:86","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":14059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8319:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8307:13:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":14066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14061,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14007,"src":"8325:9:86","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"arguments":[{"id":14064,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14010,"src":"8344:11:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14063,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8337:6:86","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":14062,"name":"int256","nodeType":"ElementaryTypeName","src":"8337:6:86","typeDescriptions":{}}},"id":14065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8337:19:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"8325:31:86","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":14067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8360:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8325:36:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":14069,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8324:38:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8307:55:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14074,"nodeType":"IfStatement","src":"8303:89:86","trueBody":{"expression":{"id":14072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"8364:28:86","subExpression":{"id":14071,"name":"weightedArithmeticMeanTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14004,"src":"8364:26:86","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":14073,"nodeType":"ExpressionStatement","src":"8364:28:86"}}]},"documentation":{"id":13998,"nodeType":"StructuredDocumentation","src":"6937:578:86","text":"@notice Given an array of ticks and weights, calculates the weighted arithmetic mean tick\n @param weightedTickData An array of ticks and weights\n @return weightedArithmeticMeanTick The weighted arithmetic mean tick\n @dev Each entry of `weightedTickData` should represents ticks from pools with the same underlying pool tokens. If they do not,\n extreme care must be taken to ensure that ticks are comparable (including decimal differences).\n @dev Note that the weighted arithmetic mean tick corresponds to the weighted geometric mean price."},"id":14076,"implemented":true,"kind":"function","modifiers":[],"name":"getWeightedArithmeticMeanTick","nodeType":"FunctionDefinition","parameters":{"id":14002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14001,"mutability":"mutable","name":"weightedTickData","nodeType":"VariableDeclaration","scope":14076,"src":"7568:42:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WeightedTickData_$13997_memory_ptr_$dyn_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData[]"},"typeName":{"baseType":{"id":13999,"name":"WeightedTickData","nodeType":"UserDefinedTypeName","referencedDeclaration":13997,"src":"7568:16:86","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedTickData_$13997_storage_ptr","typeString":"struct OracleLibrary.WeightedTickData"}},"id":14000,"nodeType":"ArrayTypeName","src":"7568:18:86","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WeightedTickData_$13997_storage_$dyn_storage_ptr","typeString":"struct OracleLibrary.WeightedTickData[]"}},"visibility":"internal"}],"src":"7558:58:86"},"returnParameters":{"id":14005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14004,"mutability":"mutable","name":"weightedArithmeticMeanTick","nodeType":"VariableDeclaration","scope":14076,"src":"7640:32:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":14003,"name":"int24","nodeType":"ElementaryTypeName","src":"7640:5:86","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"7639:34:86"},"scope":14139,"src":"7520:879:86","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14137,"nodeType":"Block","src":"9058:409:86","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":14089,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14080,"src":"9076:6:86","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":14090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9076:13:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":14091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9092:1:86","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9076:17:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":14093,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14083,"src":"9097:5:86","typeDescriptions":{"typeIdentifier":"t_array$_t_int24_$dyn_memory_ptr","typeString":"int24[] memory"}},"id":14094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9097:12:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9076:33:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"444c","id":14096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9111:4:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_f6c9155cb7d5666d109a64d0e580ecac0cec91dae3b0325b400a4ad4d41fbcb9","typeString":"literal_string \"DL\""},"value":"DL"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6c9155cb7d5666d109a64d0e580ecac0cec91dae3b0325b400a4ad4d41fbcb9","typeString":"literal_string \"DL\""}],"id":14088,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9068:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9068:48:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14098,"nodeType":"ExpressionStatement","src":"9068:48:86"},{"body":{"id":14135,"nodeType":"Block","src":"9170:291:86","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14110,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14080,"src":"9361:6:86","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":14114,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14111,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14100,"src":"9368:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":14112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9372:1:86","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9368:5:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9361:13:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":14115,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14080,"src":"9377:6:86","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":14117,"indexExpression":{"id":14116,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14100,"src":"9384:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9377:9:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9361:25:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":14132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14126,"name":"syntheticTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14086,"src":"9421:13:86","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"baseExpression":{"id":14127,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14083,"src":"9438:5:86","typeDescriptions":{"typeIdentifier":"t_array$_t_int24_$dyn_memory_ptr","typeString":"int24[] memory"}},"id":14131,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14128,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14100,"src":"9444:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":14129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9448:1:86","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9444:5:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9438:12:86","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"9421:29:86","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":14133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9361:89:86","trueExpression":{"id":14125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14119,"name":"syntheticTick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14086,"src":"9389:13:86","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"id":14120,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14083,"src":"9406:5:86","typeDescriptions":{"typeIdentifier":"t_array$_t_int24_$dyn_memory_ptr","typeString":"int24[] memory"}},"id":14124,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14121,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14100,"src":"9412:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":14122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9416:1:86","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9412:5:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9406:12:86","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"9389:29:86","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":14134,"nodeType":"ExpressionStatement","src":"9361:89:86"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14103,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14100,"src":"9146:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":14104,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14083,"src":"9151:5:86","typeDescriptions":{"typeIdentifier":"t_array$_t_int24_$dyn_memory_ptr","typeString":"int24[] memory"}},"id":14105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9151:12:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9146:17:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14136,"initializationExpression":{"assignments":[14100],"declarations":[{"constant":false,"id":14100,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":14136,"src":"9131:9:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14099,"name":"uint256","nodeType":"ElementaryTypeName","src":"9131:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14102,"initialValue":{"hexValue":"31","id":14101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9143:1:86","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"9131:13:86"},"loopExpression":{"expression":{"id":14108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9165:3:86","subExpression":{"id":14107,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14100,"src":"9165:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14109,"nodeType":"ExpressionStatement","src":"9165:3:86"},"nodeType":"ForStatement","src":"9126:335:86"}]},"documentation":{"id":14077,"nodeType":"StructuredDocumentation","src":"8405:509:86","text":"@notice Returns the \"synthetic\" tick which represents the price of the first entry in `tokens` in terms of the last\n @dev Useful for calculating relative prices along routes.\n @dev There must be one tick for each pairwise set of tokens.\n @param tokens The token contract addresses\n @param ticks The ticks, representing the price of each token pair in `tokens`\n @return syntheticTick The synthetic tick, representing the relative price of the outermost tokens in `tokens`"},"id":14138,"implemented":true,"kind":"function","modifiers":[],"name":"getChainedPrice","nodeType":"FunctionDefinition","parameters":{"id":14084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14080,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":14138,"src":"8953:23:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":14078,"name":"address","nodeType":"ElementaryTypeName","src":"8953:7:86","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14079,"nodeType":"ArrayTypeName","src":"8953:9:86","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":14083,"mutability":"mutable","name":"ticks","nodeType":"VariableDeclaration","scope":14138,"src":"8986:20:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int24_$dyn_memory_ptr","typeString":"int24[]"},"typeName":{"baseType":{"id":14081,"name":"int24","nodeType":"ElementaryTypeName","src":"8986:5:86","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":14082,"nodeType":"ArrayTypeName","src":"8986:7:86","typeDescriptions":{"typeIdentifier":"t_array$_t_int24_$dyn_storage_ptr","typeString":"int24[]"}},"visibility":"internal"}],"src":"8943:69:86"},"returnParameters":{"id":14087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14086,"mutability":"mutable","name":"syntheticTick","nodeType":"VariableDeclaration","scope":14138,"src":"9036:20:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":14085,"name":"int256","nodeType":"ElementaryTypeName","src":"9036:6:86","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9035:22:86"},"scope":14139,"src":"8919:548:86","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":14140,"src":"528:8941:86"}],"src":"45:9425:86"},"id":86},"contracts/libraries/Path.sol":{"ast":{"absolutePath":"contracts/libraries/Path.sol","exportedSymbols":{"BytesLib":[12063],"Path":[14272]},"id":14273,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14141,"literals":["solidity",">=","0.6",".0"],"nodeType":"PragmaDirective","src":"45:24:87"},{"absolutePath":"contracts/libraries/BytesLib.sol","file":"./BytesLib.sol","id":14142,"nodeType":"ImportDirective","scope":14273,"sourceUnit":12064,"src":"71:24:87","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":14143,"nodeType":"StructuredDocumentation","src":"97:67:87","text":"@title Functions for manipulating path data for multihop swaps"},"fullyImplemented":true,"id":14272,"linearizedBaseContracts":[14272],"name":"Path","nodeType":"ContractDefinition","nodes":[{"id":14146,"libraryName":{"id":14144,"name":"BytesLib","nodeType":"UserDefinedTypeName","referencedDeclaration":12063,"src":"189:8:87","typeDescriptions":{"typeIdentifier":"t_contract$_BytesLib_$12063","typeString":"library BytesLib"}},"nodeType":"UsingForDirective","src":"183:25:87","typeName":{"id":14145,"name":"bytes","nodeType":"ElementaryTypeName","src":"202:5:87","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"constant":true,"documentation":{"id":14147,"nodeType":"StructuredDocumentation","src":"214:48:87","text":"@dev The length of the bytes encoded address"},"id":14150,"mutability":"constant","name":"ADDR_SIZE","nodeType":"VariableDeclaration","scope":14272,"src":"267:39:87","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14148,"name":"uint256","nodeType":"ElementaryTypeName","src":"267:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3230","id":14149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"304:2:87","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"constant":true,"documentation":{"id":14151,"nodeType":"StructuredDocumentation","src":"312:44:87","text":"@dev The length of the bytes encoded fee"},"id":14154,"mutability":"constant","name":"FEE_SIZE","nodeType":"VariableDeclaration","scope":14272,"src":"361:37:87","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14152,"name":"uint256","nodeType":"ElementaryTypeName","src":"361:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":14153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"397:1:87","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"private"},{"constant":true,"documentation":{"id":14155,"nodeType":"StructuredDocumentation","src":"405:58:87","text":"@dev The offset of a single token address and pool fee"},"id":14160,"mutability":"constant","name":"NEXT_OFFSET","nodeType":"VariableDeclaration","scope":14272,"src":"468:59:87","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14156,"name":"uint256","nodeType":"ElementaryTypeName","src":"468:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14159,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":14157,"name":"ADDR_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14150,"src":"507:9:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":14158,"name":"FEE_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14154,"src":"519:8:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"507:20:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":true,"documentation":{"id":14161,"nodeType":"StructuredDocumentation","src":"533:42:87","text":"@dev The offset of an encoded pool key"},"id":14166,"mutability":"constant","name":"POP_OFFSET","nodeType":"VariableDeclaration","scope":14272,"src":"580:61:87","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14162,"name":"uint256","nodeType":"ElementaryTypeName","src":"580:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14165,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":14163,"name":"NEXT_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14160,"src":"618:11:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":14164,"name":"ADDR_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14150,"src":"632:9:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"618:23:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":true,"documentation":{"id":14167,"nodeType":"StructuredDocumentation","src":"647:72:87","text":"@dev The minimum length of an encoding that contains 2 or more pools"},"id":14172,"mutability":"constant","name":"MULTIPLE_POOLS_MIN_LENGTH","nodeType":"VariableDeclaration","scope":14272,"src":"724:77:87","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14168,"name":"uint256","nodeType":"ElementaryTypeName","src":"724:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14171,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":14169,"name":"POP_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14166,"src":"777:10:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":14170,"name":"NEXT_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14160,"src":"790:11:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"777:24:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":14185,"nodeType":"Block","src":"1066:64:87","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":14180,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14175,"src":"1083:4:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1083:11:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":14182,"name":"MULTIPLE_POOLS_MIN_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14172,"src":"1098:25:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1083:40:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14179,"id":14184,"nodeType":"Return","src":"1076:47:87"}]},"documentation":{"id":14173,"nodeType":"StructuredDocumentation","src":"808:179:87","text":"@notice Returns true iff the path contains two or more pools\n @param path The encoded swap path\n @return True if path contains two or more pools, otherwise false"},"id":14186,"implemented":true,"kind":"function","modifiers":[],"name":"hasMultiplePools","nodeType":"FunctionDefinition","parameters":{"id":14176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14175,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":14186,"src":"1018:17:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14174,"name":"bytes","nodeType":"ElementaryTypeName","src":"1018:5:87","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1017:19:87"},"returnParameters":{"id":14179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14178,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14186,"src":"1060:4:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14177,"name":"bool","nodeType":"ElementaryTypeName","src":"1060:4:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1059:6:87"},"scope":14272,"src":"992:138:87","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14203,"nodeType":"Block","src":"1351:166:87","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":14194,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14189,"src":"1471:4:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1471:11:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":14196,"name":"ADDR_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14150,"src":"1485:9:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1471:23:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14198,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1470:25:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":14199,"name":"NEXT_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14160,"src":"1498:11:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1470:39:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14201,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1469:41:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14193,"id":14202,"nodeType":"Return","src":"1462:48:87"}]},"documentation":{"id":14187,"nodeType":"StructuredDocumentation","src":"1136:141:87","text":"@notice Returns the number of pools in the path\n @param path The encoded swap path\n @return The number of pools in the path"},"id":14204,"implemented":true,"kind":"function","modifiers":[],"name":"numPools","nodeType":"FunctionDefinition","parameters":{"id":14190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14189,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":14204,"src":"1300:17:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14188,"name":"bytes","nodeType":"ElementaryTypeName","src":"1300:5:87","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1299:19:87"},"returnParameters":{"id":14193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14192,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14204,"src":"1342:7:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14191,"name":"uint256","nodeType":"ElementaryTypeName","src":"1342:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1341:9:87"},"scope":14272,"src":"1282:235:87","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14237,"nodeType":"Block","src":"1890:129:87","statements":[{"expression":{"id":14221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14216,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14210,"src":"1900:6:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":14219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1924:1:87","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":14217,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14207,"src":"1909:4:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":12027,"src":"1909:14:87","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (address)"}},"id":14220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1909:17:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1900:26:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14222,"nodeType":"ExpressionStatement","src":"1900:26:87"},{"expression":{"id":14228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14223,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14214,"src":"1936:3:87","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14226,"name":"ADDR_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14150,"src":"1956:9:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14224,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14207,"src":"1942:4:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toUint24","nodeType":"MemberAccess","referencedDeclaration":12062,"src":"1942:13:87","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint24_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint24)"}},"id":14227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1942:24:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"1936:30:87","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":14229,"nodeType":"ExpressionStatement","src":"1936:30:87"},{"expression":{"id":14235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14230,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14212,"src":"1976:6:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14233,"name":"NEXT_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14160,"src":"2000:11:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14231,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14207,"src":"1985:4:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":12027,"src":"1985:14:87","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (address)"}},"id":14234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1985:27:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1976:36:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14236,"nodeType":"ExpressionStatement","src":"1976:36:87"}]},"documentation":{"id":14205,"nodeType":"StructuredDocumentation","src":"1523:251:87","text":"@notice Decodes the first pool in path\n @param path The bytes encoded swap path\n @return tokenA The first token of the given pool\n @return tokenB The second token of the given pool\n @return fee The fee level of the pool"},"id":14238,"implemented":true,"kind":"function","modifiers":[],"name":"decodeFirstPool","nodeType":"FunctionDefinition","parameters":{"id":14208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14207,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":14238,"src":"1804:17:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14206,"name":"bytes","nodeType":"ElementaryTypeName","src":"1804:5:87","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1803:19:87"},"returnParameters":{"id":14215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14210,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":14238,"src":"1846:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14209,"name":"address","nodeType":"ElementaryTypeName","src":"1846:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14212,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":14238,"src":"1862:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14211,"name":"address","nodeType":"ElementaryTypeName","src":"1862:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14214,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":14238,"src":"1878:10:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":14213,"name":"uint24","nodeType":"ElementaryTypeName","src":"1878:6:87","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"1845:44:87"},"scope":14272,"src":"1779:240:87","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14252,"nodeType":"Block","src":"2323:49:87","statements":[{"expression":{"arguments":[{"hexValue":"30","id":14248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2351:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":14249,"name":"POP_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14166,"src":"2354:10:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14246,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14241,"src":"2340:4:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slice","nodeType":"MemberAccess","referencedDeclaration":11992,"src":"2340:10:87","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"}},"id":14250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2340:25:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":14245,"id":14251,"nodeType":"Return","src":"2333:32:87"}]},"documentation":{"id":14239,"nodeType":"StructuredDocumentation","src":"2025:215:87","text":"@notice Gets the segment corresponding to the first pool in the path\n @param path The bytes encoded swap path\n @return The segment containing all data necessary to target the first pool in the path"},"id":14253,"implemented":true,"kind":"function","modifiers":[],"name":"getFirstPool","nodeType":"FunctionDefinition","parameters":{"id":14242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14241,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":14253,"src":"2267:17:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14240,"name":"bytes","nodeType":"ElementaryTypeName","src":"2267:5:87","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2266:19:87"},"returnParameters":{"id":14245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14244,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14253,"src":"2309:12:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14243,"name":"bytes","nodeType":"ElementaryTypeName","src":"2309:5:87","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2308:14:87"},"scope":14272,"src":"2245:127:87","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14270,"nodeType":"Block","src":"2636:74:87","statements":[{"expression":{"arguments":[{"id":14263,"name":"NEXT_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14160,"src":"2664:11:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":14264,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14256,"src":"2677:4:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2677:11:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":14266,"name":"NEXT_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14160,"src":"2691:11:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2677:25:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14261,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14256,"src":"2653:4:87","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slice","nodeType":"MemberAccess","referencedDeclaration":11992,"src":"2653:10:87","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"}},"id":14268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2653:50:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":14260,"id":14269,"nodeType":"Return","src":"2646:57:87"}]},"documentation":{"id":14254,"nodeType":"StructuredDocumentation","src":"2378:178:87","text":"@notice Skips a token + fee element from the buffer and returns the remainder\n @param path The swap path\n @return The remaining token + fee elements in the path"},"id":14271,"implemented":true,"kind":"function","modifiers":[],"name":"skipToken","nodeType":"FunctionDefinition","parameters":{"id":14257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14256,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":14271,"src":"2580:17:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14255,"name":"bytes","nodeType":"ElementaryTypeName","src":"2580:5:87","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2579:19:87"},"returnParameters":{"id":14260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14259,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14271,"src":"2622:12:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14258,"name":"bytes","nodeType":"ElementaryTypeName","src":"2622:5:87","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2621:14:87"},"scope":14272,"src":"2561:149:87","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":14273,"src":"164:2548:87"}],"src":"45:2668:87"},"id":87},"contracts/libraries/PoolAddress.sol":{"ast":{"absolutePath":"contracts/libraries/PoolAddress.sol","exportedSymbols":{"PoolAddress":[14364]},"id":14365,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14274,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:88"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":14275,"nodeType":"StructuredDocumentation","src":"71:96:88","text":"@title Provides functions for deriving a pool address from the factory, tokens, and the fee"},"fullyImplemented":true,"id":14364,"linearizedBaseContracts":[14364],"name":"PoolAddress","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":14278,"mutability":"constant","name":"POOL_INIT_CODE_HASH","nodeType":"VariableDeclaration","scope":14364,"src":"193:114:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14276,"name":"bytes32","nodeType":"ElementaryTypeName","src":"193:7:88","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307832303363386563363439623233623766616639623733636361646662316136376166353261303937313139633832383031663439343765633564656236633034","id":14277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"241:66:88","typeDescriptions":{"typeIdentifier":"t_rational_14581007372363029699053742918615039622153709847727207857928092248886097964036_by_1","typeString":"int_const 1458...(69 digits omitted)...4036"},"value":"0x203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c04"},"visibility":"internal"},{"canonicalName":"PoolAddress.PoolKey","id":14285,"members":[{"constant":false,"id":14280,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":14285,"src":"387:14:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14279,"name":"address","nodeType":"ElementaryTypeName","src":"387:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14282,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":14285,"src":"411:14:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14281,"name":"address","nodeType":"ElementaryTypeName","src":"411:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14284,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":14285,"src":"435:10:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":14283,"name":"uint24","nodeType":"ElementaryTypeName","src":"435:6:88","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"name":"PoolKey","nodeType":"StructDefinition","scope":14364,"src":"362:90:88","visibility":"public"},{"body":{"id":14315,"nodeType":"Block","src":"887:141:88","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14297,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14288,"src":"901:6:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":14298,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14290,"src":"910:6:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"901:15:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14308,"nodeType":"IfStatement","src":"897:56:88","trueBody":{"expression":{"id":14306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":14300,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14288,"src":"919:6:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14301,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14290,"src":"927:6:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":14302,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"918:16:88","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":14303,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14290,"src":"938:6:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14304,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14288,"src":"946:6:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":14305,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"937:16:88","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"src":"918:35:88","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14307,"nodeType":"ExpressionStatement","src":"918:35:88"}},{"expression":{"arguments":[{"id":14310,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14288,"src":"987:6:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14311,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14290,"src":"1003:6:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14312,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14292,"src":"1016:3:88","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":14309,"name":"PoolKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14285,"src":"970:7:88","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolKey_$14285_storage_ptr_$","typeString":"type(struct PoolAddress.PoolKey storage pointer)"}},"id":14313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee"],"nodeType":"FunctionCall","src":"970:51:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"functionReturnParameters":14296,"id":14314,"nodeType":"Return","src":"963:58:88"}]},"documentation":{"id":14286,"nodeType":"StructuredDocumentation","src":"458:321:88","text":"@notice Returns PoolKey: the ordered tokens with the matched fee levels\n @param tokenA The first token of a pool, unsorted\n @param tokenB The second token of a pool, unsorted\n @param fee The fee level of the pool\n @return Poolkey The pool details with ordered token0 and token1 assignments"},"id":14316,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolKey","nodeType":"FunctionDefinition","parameters":{"id":14293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14288,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":14316,"src":"804:14:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14287,"name":"address","nodeType":"ElementaryTypeName","src":"804:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14290,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":14316,"src":"820:14:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14289,"name":"address","nodeType":"ElementaryTypeName","src":"820:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14292,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":14316,"src":"836:10:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":14291,"name":"uint24","nodeType":"ElementaryTypeName","src":"836:6:88","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"803:44:88"},"returnParameters":{"id":14296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14295,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14316,"src":"871:14:88","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":14294,"name":"PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":14285,"src":"871:7:88","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"src":"870:16:88"},"scope":14364,"src":"784:244:88","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14362,"nodeType":"Block","src":"1374:414:88","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":14327,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14321,"src":"1392:3:88","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":14328,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":14280,"src":"1392:10:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":14329,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14321,"src":"1405:3:88","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":14330,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":14282,"src":"1405:10:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1392:23:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":14326,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1384:7:88","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":14332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1384:32:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14333,"nodeType":"ExpressionStatement","src":"1384:32:88"},{"expression":{"id":14360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14334,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14324,"src":"1426:4:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"ff","id":14342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"1552:7:88","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9","typeString":"literal_string hex\"ff\""}},{"id":14343,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14319,"src":"1585:7:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"expression":{"id":14347,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14321,"src":"1639:3:88","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":14348,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":14280,"src":"1639:10:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14349,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14321,"src":"1651:3:88","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":14350,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":14282,"src":"1651:10:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14351,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14321,"src":"1663:3:88","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}},"id":14352,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":14284,"src":"1663:7:88","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":14345,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1628:3:88","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1628:10:88","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1628:43:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14344,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1618:9:88","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1618:54:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":14355,"name":"POOL_INIT_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14278,"src":"1698:19:88","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9","typeString":"literal_string hex\"ff\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":14340,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1510:3:88","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14341,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1510:16:88","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1510:229:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14339,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1479:9:88","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1479:278:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":14338,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1454:7:88","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14337,"name":"uint256","nodeType":"ElementaryTypeName","src":"1454:7:88","typeDescriptions":{}}},"id":14358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1454:317:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1433:7:88","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14335,"name":"address","nodeType":"ElementaryTypeName","src":"1433:7:88","typeDescriptions":{}}},"id":14359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1433:348:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1426:355:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14361,"nodeType":"ExpressionStatement","src":"1426:355:88"}]},"documentation":{"id":14317,"nodeType":"StructuredDocumentation","src":"1034:237:88","text":"@notice Deterministically computes the pool address given the factory and PoolKey\n @param factory The AstraDEX CL factory contract address\n @param key The PoolKey\n @return pool The contract address of the CL pool"},"id":14363,"implemented":true,"kind":"function","modifiers":[],"name":"computeAddress","nodeType":"FunctionDefinition","parameters":{"id":14322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14319,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":14363,"src":"1300:15:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14318,"name":"address","nodeType":"ElementaryTypeName","src":"1300:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14321,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":14363,"src":"1317:18:88","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey"},"typeName":{"id":14320,"name":"PoolKey","nodeType":"UserDefinedTypeName","referencedDeclaration":14285,"src":"1317:7:88","typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_storage_ptr","typeString":"struct PoolAddress.PoolKey"}},"visibility":"internal"}],"src":"1299:37:88"},"returnParameters":{"id":14325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14324,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":14363,"src":"1360:12:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14323,"name":"address","nodeType":"ElementaryTypeName","src":"1360:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1359:14:88"},"scope":14364,"src":"1276:512:88","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":14365,"src":"167:1623:88"}],"src":"45:1746:88"},"id":88},"contracts/libraries/PoolTicksCounter.sol":{"ast":{"absolutePath":"contracts/libraries/PoolTicksCounter.sol","exportedSymbols":{"IAstraCLPool":[110],"IAstraCLPoolActions":[248],"IAstraCLPoolDerivedState":[279],"IAstraCLPoolEvents":[398],"IAstraCLPoolImmutables":[438],"IAstraCLPoolOwnerActions":[464],"IAstraCLPoolState":[572],"PoolTicksCounter":[14672]},"id":14673,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14366,"literals":["solidity",">=","0.6",".0"],"nodeType":"PragmaDirective","src":"45:24:89"},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","file":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","id":14367,"nodeType":"ImportDirective","scope":14673,"sourceUnit":111,"src":"124:69:89","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":14672,"linearizedBaseContracts":[14672],"name":"PoolTicksCounter","nodeType":"ContractDefinition","nodes":[{"body":{"id":14641,"nodeType":"Block","src":"870:3126:89","statements":[{"assignments":[14380],"declarations":[{"constant":false,"id":14380,"mutability":"mutable","name":"wordPosLower","nodeType":"VariableDeclaration","scope":14641,"src":"880:18:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":14379,"name":"int16","nodeType":"ElementaryTypeName","src":"880:5:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"id":14381,"nodeType":"VariableDeclarationStatement","src":"880:18:89"},{"assignments":[14383],"declarations":[{"constant":false,"id":14383,"mutability":"mutable","name":"wordPosHigher","nodeType":"VariableDeclaration","scope":14641,"src":"908:19:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":14382,"name":"int16","nodeType":"ElementaryTypeName","src":"908:5:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"id":14384,"nodeType":"VariableDeclarationStatement","src":"908:19:89"},{"assignments":[14386],"declarations":[{"constant":false,"id":14386,"mutability":"mutable","name":"bitPosLower","nodeType":"VariableDeclaration","scope":14641,"src":"937:17:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":14385,"name":"uint8","nodeType":"ElementaryTypeName","src":"937:5:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":14387,"nodeType":"VariableDeclarationStatement","src":"937:17:89"},{"assignments":[14389],"declarations":[{"constant":false,"id":14389,"mutability":"mutable","name":"bitPosHigher","nodeType":"VariableDeclaration","scope":14641,"src":"964:18:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":14388,"name":"uint8","nodeType":"ElementaryTypeName","src":"964:5:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":14390,"nodeType":"VariableDeclarationStatement","src":"964:18:89"},{"assignments":[14392],"declarations":[{"constant":false,"id":14392,"mutability":"mutable","name":"tickBeforeInitialized","nodeType":"VariableDeclaration","scope":14641,"src":"992:26:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14391,"name":"bool","nodeType":"ElementaryTypeName","src":"992:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":14393,"nodeType":"VariableDeclarationStatement","src":"992:26:89"},{"assignments":[14395],"declarations":[{"constant":false,"id":14395,"mutability":"mutable","name":"tickAfterInitialized","nodeType":"VariableDeclaration","scope":14641,"src":"1028:25:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14394,"name":"bool","nodeType":"ElementaryTypeName","src":"1028:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":14396,"nodeType":"VariableDeclarationStatement","src":"1028:25:89"},{"id":14562,"nodeType":"Block","src":"1064:1887:89","statements":[{"assignments":[14398],"declarations":[{"constant":false,"id":14398,"mutability":"mutable","name":"wordPos","nodeType":"VariableDeclaration","scope":14562,"src":"1181:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":14397,"name":"int16","nodeType":"ElementaryTypeName","src":"1181:5:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"id":14410,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":14408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":14405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14401,"name":"tickBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14372,"src":"1204:10:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14402,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14370,"src":"1217:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":14403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":431,"src":"1217:16:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_int24_$","typeString":"function () view external returns (int24)"}},"id":14404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1217:18:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1204:31:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":14406,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1203:33:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":14407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1240:1:89","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1203:38:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":14400,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1197:5:89","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":14399,"name":"int16","nodeType":"ElementaryTypeName","src":"1197:5:89","typeDescriptions":{}}},"id":14409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1197:45:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"VariableDeclarationStatement","src":"1181:61:89"},{"assignments":[14412],"declarations":[{"constant":false,"id":14412,"mutability":"mutable","name":"bitPos","nodeType":"VariableDeclaration","scope":14562,"src":"1256:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":14411,"name":"uint8","nodeType":"ElementaryTypeName","src":"1256:5:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":14424,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":14422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":14419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14415,"name":"tickBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14372,"src":"1278:10:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14416,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14370,"src":"1291:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":14417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":431,"src":"1291:16:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_int24_$","typeString":"function () view external returns (int24)"}},"id":14418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1291:18:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1278:31:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":14420,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1277:33:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"323536","id":14421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1313:3:89","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"src":"1277:39:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":14414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1271:5:89","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":14413,"name":"uint8","nodeType":"ElementaryTypeName","src":"1271:5:89","typeDescriptions":{}}},"id":14423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1271:46:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"1256:61:89"},{"assignments":[14426],"declarations":[{"constant":false,"id":14426,"mutability":"mutable","name":"wordPosAfter","nodeType":"VariableDeclaration","scope":14562,"src":"1332:18:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":14425,"name":"int16","nodeType":"ElementaryTypeName","src":"1332:5:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"id":14438,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":14436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":14433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14429,"name":"tickAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14374,"src":"1360:9:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14430,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14370,"src":"1372:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":14431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":431,"src":"1372:16:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_int24_$","typeString":"function () view external returns (int24)"}},"id":14432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1372:18:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1360:30:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":14434,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1359:32:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":14435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1395:1:89","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1359:37:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":14428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1353:5:89","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":14427,"name":"int16","nodeType":"ElementaryTypeName","src":"1353:5:89","typeDescriptions":{}}},"id":14437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1353:44:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"VariableDeclarationStatement","src":"1332:65:89"},{"assignments":[14440],"declarations":[{"constant":false,"id":14440,"mutability":"mutable","name":"bitPosAfter","nodeType":"VariableDeclaration","scope":14562,"src":"1411:17:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":14439,"name":"uint8","nodeType":"ElementaryTypeName","src":"1411:5:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":14452,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":14450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":14447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14443,"name":"tickAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14374,"src":"1438:9:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14444,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14370,"src":"1450:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":14445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":431,"src":"1450:16:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_int24_$","typeString":"function () view external returns (int24)"}},"id":14446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1450:18:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1438:30:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":14448,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1437:32:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"323536","id":14449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1472:3:89","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"src":"1437:38:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"id":14442,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1431:5:89","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":14441,"name":"uint8","nodeType":"ElementaryTypeName","src":"1431:5:89","typeDescriptions":{}}},"id":14451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1431:45:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"1411:65:89"},{"expression":{"id":14482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14453,"name":"tickAfterInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14395,"src":"1856:20:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":14456,"name":"wordPosAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14426,"src":"1913:12:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int16","typeString":"int16"}],"expression":{"id":14454,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14370,"src":"1897:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":14455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickBitmap","nodeType":"MemberAccess","referencedDeclaration":541,"src":"1897:15:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_int16_$returns$_t_uint256_$","typeString":"function (int16) view external returns (uint256)"}},"id":14457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1897:29:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":14458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1930:1:89","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":14459,"name":"bitPosAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14440,"src":"1935:11:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1930:16:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1929:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1897:50:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14463,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1896:52:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1951:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1896:56:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":14466,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1895:58:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":14474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":14471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14467,"name":"tickAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14374,"src":"1975:9:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14468,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14370,"src":"1987:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":14469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":431,"src":"1987:16:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_int24_$","typeString":"function () view external returns (int24)"}},"id":14470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1987:18:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"1975:30:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":14472,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1974:32:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":14473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2010:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1974:37:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":14475,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1973:39:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1895:117:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":14479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14477,"name":"tickBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14372,"src":"2033:10:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":14478,"name":"tickAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14374,"src":"2046:9:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2033:22:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":14480,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2032:24:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1895:161:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1856:200:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14483,"nodeType":"ExpressionStatement","src":"1856:200:89"},{"expression":{"id":14513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14484,"name":"tickBeforeInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14392,"src":"2280:21:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":14487,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14398,"src":"2338:7:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int16","typeString":"int16"}],"expression":{"id":14485,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14370,"src":"2322:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":14486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickBitmap","nodeType":"MemberAccess","referencedDeclaration":541,"src":"2322:15:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_int16_$returns$_t_uint256_$","typeString":"function (int16) view external returns (uint256)"}},"id":14488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2322:24:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":14489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2350:1:89","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":14490,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14412,"src":"2355:6:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2350:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14492,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2349:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2322:40:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14494,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2321:42:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2366:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2321:46:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":14497,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2320:48:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":14505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":14502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14498,"name":"tickBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14372,"src":"2390:10:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14499,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14370,"src":"2403:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":14500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickSpacing","nodeType":"MemberAccess","referencedDeclaration":431,"src":"2403:16:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_int24_$","typeString":"function () view external returns (int24)"}},"id":14501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2403:18:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2390:31:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"id":14503,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2389:33:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":14504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2426:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2389:38:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":14506,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2388:40:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2320:108:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":14510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14508,"name":"tickBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14372,"src":"2449:10:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":14509,"name":"tickAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14374,"src":"2462:9:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"2449:22:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":14511,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2448:24:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2320:152:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2280:192:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14514,"nodeType":"ExpressionStatement","src":"2280:192:89"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int16","typeString":"int16"},"id":14517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14515,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14398,"src":"2491:7:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":14516,"name":"wordPosAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14426,"src":"2501:12:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"2491:22:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int16","typeString":"int16"},"id":14520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14518,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14398,"src":"2518:7:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":14519,"name":"wordPosAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14426,"src":"2529:12:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"2518:23:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14521,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14412,"src":"2545:6:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":14522,"name":"bitPosAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14440,"src":"2555:11:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2545:21:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2518:48:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":14525,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2517:50:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2491:76:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":14560,"nodeType":"Block","src":"2758:183:89","statements":[{"expression":{"id":14546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14544,"name":"wordPosLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14380,"src":"2776:12:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14545,"name":"wordPosAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14426,"src":"2791:12:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"2776:27:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":14547,"nodeType":"ExpressionStatement","src":"2776:27:89"},{"expression":{"id":14550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14548,"name":"bitPosLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14386,"src":"2821:11:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14549,"name":"bitPosAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14440,"src":"2835:11:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2821:25:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14551,"nodeType":"ExpressionStatement","src":"2821:25:89"},{"expression":{"id":14554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14552,"name":"wordPosHigher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14383,"src":"2864:13:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14553,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14398,"src":"2880:7:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"2864:23:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":14555,"nodeType":"ExpressionStatement","src":"2864:23:89"},{"expression":{"id":14558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14556,"name":"bitPosHigher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14389,"src":"2905:12:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14557,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14412,"src":"2920:6:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2905:21:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14559,"nodeType":"ExpressionStatement","src":"2905:21:89"}]},"id":14561,"nodeType":"IfStatement","src":"2487:454:89","trueBody":{"id":14543,"nodeType":"Block","src":"2569:183:89","statements":[{"expression":{"id":14529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14527,"name":"wordPosLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14380,"src":"2587:12:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14528,"name":"wordPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14398,"src":"2602:7:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"2587:22:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":14530,"nodeType":"ExpressionStatement","src":"2587:22:89"},{"expression":{"id":14533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14531,"name":"bitPosLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14386,"src":"2627:11:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14532,"name":"bitPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14412,"src":"2641:6:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2627:20:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14534,"nodeType":"ExpressionStatement","src":"2627:20:89"},{"expression":{"id":14537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14535,"name":"wordPosHigher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14383,"src":"2665:13:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14536,"name":"wordPosAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14426,"src":"2681:12:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"2665:28:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":14538,"nodeType":"ExpressionStatement","src":"2665:28:89"},{"expression":{"id":14541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14539,"name":"bitPosHigher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14389,"src":"2711:12:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14540,"name":"bitPosAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14440,"src":"2726:11:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2711:26:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14542,"nodeType":"ExpressionStatement","src":"2711:26:89"}]}}]},{"assignments":[14564],"declarations":[{"constant":false,"id":14564,"mutability":"mutable","name":"mask","nodeType":"VariableDeclaration","scope":14641,"src":"3140:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14563,"name":"uint256","nodeType":"ElementaryTypeName","src":"3140:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14572,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":14567,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3160:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14566,"name":"uint256","nodeType":"ElementaryTypeName","src":"3160:7:89","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":14565,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3155:4:89","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3155:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":14569,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"3155:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":14570,"name":"bitPosLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14386,"src":"3176:11:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3155:32:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3140:47:89"},{"body":{"id":14623,"nodeType":"Block","src":"3235:535:89","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int16","typeString":"int16"},"id":14578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14576,"name":"wordPosLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14380,"src":"3367:12:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":14577,"name":"wordPosHigher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14383,"src":"3383:13:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"3367:29:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14596,"nodeType":"IfStatement","src":"3363:125:89","trueBody":{"id":14595,"nodeType":"Block","src":"3398:90:89","statements":[{"expression":{"id":14593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14579,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14564,"src":"3416:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14580,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14564,"src":"3423:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":14583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3436:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14582,"name":"uint256","nodeType":"ElementaryTypeName","src":"3436:7:89","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":14581,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3431:4:89","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3431:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":14585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"3431:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323535","id":14586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3453:3:89","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":14587,"name":"bitPosHigher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14389,"src":"3459:12:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3453:18:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":14589,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3452:20:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3431:41:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14591,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3430:43:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3423:50:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3416:57:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14594,"nodeType":"ExpressionStatement","src":"3416:57:89"}]}},{"assignments":[14598],"declarations":[{"constant":false,"id":14598,"mutability":"mutable","name":"masked","nodeType":"VariableDeclaration","scope":14623,"src":"3502:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14597,"name":"uint256","nodeType":"ElementaryTypeName","src":"3502:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14605,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":14601,"name":"wordPosLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14380,"src":"3535:12:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int16","typeString":"int16"}],"expression":{"id":14599,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14370,"src":"3519:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":14600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tickBitmap","nodeType":"MemberAccess","referencedDeclaration":541,"src":"3519:15:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_int16_$returns$_t_uint256_$","typeString":"function (int16) view external returns (uint256)"}},"id":14602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3519:29:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":14603,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14564,"src":"3551:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3519:36:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3502:53:89"},{"expression":{"id":14610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14606,"name":"initializedTicksCrossed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14377,"src":"3569:23:89","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":14608,"name":"masked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14598,"src":"3609:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14607,"name":"countOneBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14671,"src":"3596:12:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint16_$","typeString":"function (uint256) pure returns (uint16)"}},"id":14609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3596:20:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"3569:47:89","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":14611,"nodeType":"ExpressionStatement","src":"3569:47:89"},{"expression":{"id":14613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3630:14:89","subExpression":{"id":14612,"name":"wordPosLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14380,"src":"3630:12:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":14614,"nodeType":"ExpressionStatement","src":"3630:14:89"},{"expression":{"id":14621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14615,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14564,"src":"3735:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":14618,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3747:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14617,"name":"uint256","nodeType":"ElementaryTypeName","src":"3747:7:89","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":14616,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3742:4:89","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3742:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":14620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"3742:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3735:24:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14622,"nodeType":"ExpressionStatement","src":"3735:24:89"}]},"condition":{"commonType":{"typeIdentifier":"t_int16","typeString":"int16"},"id":14575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14573,"name":"wordPosLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14380,"src":"3204:12:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":14574,"name":"wordPosHigher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14383,"src":"3220:13:89","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"3204:29:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14624,"nodeType":"WhileStatement","src":"3197:573:89"},{"condition":{"id":14625,"name":"tickAfterInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14395,"src":"3784:20:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14631,"nodeType":"IfStatement","src":"3780:79:89","trueBody":{"id":14630,"nodeType":"Block","src":"3806:53:89","statements":[{"expression":{"id":14628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14626,"name":"initializedTicksCrossed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14377,"src":"3820:23:89","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":14627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3847:1:89","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3820:28:89","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":14629,"nodeType":"ExpressionStatement","src":"3820:28:89"}]}},{"condition":{"id":14632,"name":"tickBeforeInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14392,"src":"3873:21:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14638,"nodeType":"IfStatement","src":"3869:80:89","trueBody":{"id":14637,"nodeType":"Block","src":"3896:53:89","statements":[{"expression":{"id":14635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14633,"name":"initializedTicksCrossed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14377,"src":"3910:23:89","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":14634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3937:1:89","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3910:28:89","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":14636,"nodeType":"ExpressionStatement","src":"3910:28:89"}]}},{"expression":{"id":14639,"name":"initializedTicksCrossed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14377,"src":"3966:23:89","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":14378,"id":14640,"nodeType":"Return","src":"3959:30:89"}]},"documentation":{"id":14368,"nodeType":"StructuredDocumentation","src":"226:462:89","text":"@dev This function counts the number of initialized ticks that would incur a gas cost between tickBefore and tickAfter.\n When tickBefore and/or tickAfter themselves are initialized, the logic over whether we should count them depends on the\n direction of the swap. If we are swapping upwards (tickAfter > tickBefore) we don't want to count tickBefore but we do\n want to count tickAfter. The opposite is true if we are swapping downwards."},"id":14642,"implemented":true,"kind":"function","modifiers":[],"name":"countInitializedTicksCrossed","nodeType":"FunctionDefinition","parameters":{"id":14375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14370,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":14642,"src":"740:17:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":14369,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"740:12:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"},{"constant":false,"id":14372,"mutability":"mutable","name":"tickBefore","nodeType":"VariableDeclaration","scope":14642,"src":"767:16:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":14371,"name":"int24","nodeType":"ElementaryTypeName","src":"767:5:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":14374,"mutability":"mutable","name":"tickAfter","nodeType":"VariableDeclaration","scope":14642,"src":"793:15:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":14373,"name":"int24","nodeType":"ElementaryTypeName","src":"793:5:89","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"730:84:89"},"returnParameters":{"id":14378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14377,"mutability":"mutable","name":"initializedTicksCrossed","nodeType":"VariableDeclaration","scope":14642,"src":"838:30:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":14376,"name":"uint32","nodeType":"ElementaryTypeName","src":"838:6:89","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"837:32:89"},"scope":14672,"src":"693:3303:89","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14670,"nodeType":"Block","src":"4065:134:89","statements":[{"assignments":[14650],"declarations":[{"constant":false,"id":14650,"mutability":"mutable","name":"bits","nodeType":"VariableDeclaration","scope":14670,"src":"4075:11:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14649,"name":"uint16","nodeType":"ElementaryTypeName","src":"4075:6:89","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":14652,"initialValue":{"hexValue":"30","id":14651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4089:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4075:15:89"},{"body":{"id":14666,"nodeType":"Block","src":"4115:57:89","statements":[{"expression":{"id":14657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4129:6:89","subExpression":{"id":14656,"name":"bits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14650,"src":"4129:4:89","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":14658,"nodeType":"ExpressionStatement","src":"4129:6:89"},{"expression":{"id":14664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14659,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14644,"src":"4149:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"&=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14660,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14644,"src":"4155:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":14661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4159:1:89","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4155:5:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14663,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4154:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4149:12:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14665,"nodeType":"ExpressionStatement","src":"4149:12:89"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14653,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14644,"src":"4107:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":14654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4112:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4107:6:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14667,"nodeType":"WhileStatement","src":"4100:72:89"},{"expression":{"id":14668,"name":"bits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14650,"src":"4188:4:89","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":14648,"id":14669,"nodeType":"Return","src":"4181:11:89"}]},"id":14671,"implemented":true,"kind":"function","modifiers":[],"name":"countOneBits","nodeType":"FunctionDefinition","parameters":{"id":14645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14644,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":14671,"src":"4024:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14643,"name":"uint256","nodeType":"ElementaryTypeName","src":"4024:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4023:11:89"},"returnParameters":{"id":14648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14647,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14671,"src":"4057:6:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14646,"name":"uint16","nodeType":"ElementaryTypeName","src":"4057:6:89","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"4056:8:89"},"scope":14672,"src":"4002:197:89","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":14673,"src":"195:4006:89"}],"src":"45:4157:89"},"id":89},"contracts/libraries/PositionKey.sol":{"ast":{"absolutePath":"contracts/libraries/PositionKey.sol","exportedSymbols":{"PositionKey":[14697]},"id":14698,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14674,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:90"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":14697,"linearizedBaseContracts":[14697],"name":"PositionKey","nodeType":"ContractDefinition","nodes":[{"body":{"id":14695,"nodeType":"Block","src":"260:80:90","statements":[{"expression":{"arguments":[{"arguments":[{"id":14689,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14677,"src":"304:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14690,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14679,"src":"311:9:90","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":14691,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14681,"src":"322:9:90","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":14687,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"287:3:90","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"287:16:90","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"287:45:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14686,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"277:9:90","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"277:56:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":14685,"id":14694,"nodeType":"Return","src":"270:63:90"}]},"documentation":{"id":14675,"nodeType":"StructuredDocumentation","src":"97:60:90","text":"@dev Returns the key of the position in the core library"},"id":14696,"implemented":true,"kind":"function","modifiers":[],"name":"compute","nodeType":"FunctionDefinition","parameters":{"id":14682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14677,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":14696,"src":"179:13:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14676,"name":"address","nodeType":"ElementaryTypeName","src":"179:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14679,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":14696,"src":"194:15:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":14678,"name":"int24","nodeType":"ElementaryTypeName","src":"194:5:90","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":14681,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":14696,"src":"211:15:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":14680,"name":"int24","nodeType":"ElementaryTypeName","src":"211:5:90","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"178:49:90"},"returnParameters":{"id":14685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14684,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14696,"src":"251:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14683,"name":"bytes32","nodeType":"ElementaryTypeName","src":"251:7:90","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"250:9:90"},"scope":14697,"src":"162:178:90","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":14698,"src":"71:271:90"}],"src":"45:298:90"},"id":90},"contracts/libraries/PositionValue.sol":{"ast":{"absolutePath":"contracts/libraries/PositionValue.sol","exportedSymbols":{"FixedPoint128":[858],"FixedPoint96":[868],"FullMath":[1041],"IAstraCLPool":[110],"IAstraCLPoolActions":[248],"IAstraCLPoolDerivedState":[279],"IAstraCLPoolEvents":[398],"IAstraCLPoolImmutables":[438],"IAstraCLPoolOwnerActions":[464],"IAstraCLPoolState":[572],"IERC165":[3068],"IERC721":[5243],"IERC721Enumerable":[5274],"IERC721Metadata":[5301],"IERC721Permit":[9511],"INonfungiblePositionManager":[9720],"IPeripheryImmutableState":[9751],"IPeripheryPayments":[9777],"IPoolInitializer":[9829],"LiquidityAmounts":[12612],"LiquidityMath":[1093],"LowGasSafeMath":[1223],"PoolAddress":[14364],"PositionKey":[14697],"PositionValue":[15041],"SafeCast":[1293],"Tick":[1745],"TickMath":[2536]},"id":15042,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14699,"literals":["solidity",">=","0.6",".8","<","0.8",".0"],"nodeType":"PragmaDirective","src":"45:31:91"},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","file":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","id":14700,"nodeType":"ImportDirective","scope":15042,"sourceUnit":111,"src":"131:69:91","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol","file":"@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol","id":14701,"nodeType":"ImportDirective","scope":15042,"sourceUnit":859,"src":"254:69:91","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/TickMath.sol","file":"@airdao/astra-cl-core/contracts/libraries/TickMath.sol","id":14702,"nodeType":"ImportDirective","scope":15042,"sourceUnit":2537,"src":"377:64:91","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/Tick.sol","file":"@airdao/astra-cl-core/contracts/libraries/Tick.sol","id":14703,"nodeType":"ImportDirective","scope":15042,"sourceUnit":1746,"src":"495:60:91","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/INonfungiblePositionManager.sol","file":"../interfaces/INonfungiblePositionManager.sol","id":14704,"nodeType":"ImportDirective","scope":15042,"sourceUnit":9721,"src":"556:55:91","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/LiquidityAmounts.sol","file":"./LiquidityAmounts.sol","id":14705,"nodeType":"ImportDirective","scope":15042,"sourceUnit":12613,"src":"612:32:91","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/PoolAddress.sol","file":"./PoolAddress.sol","id":14706,"nodeType":"ImportDirective","scope":15042,"sourceUnit":14365,"src":"645:27:91","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/PositionKey.sol","file":"./PositionKey.sol","id":14707,"nodeType":"ImportDirective","scope":15042,"sourceUnit":14698,"src":"673:27:91","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":14708,"nodeType":"StructuredDocumentation","src":"702:79:91","text":"@title Returns information about the token value held in a AstraDEX CL NFT"},"fullyImplemented":true,"id":15041,"linearizedBaseContracts":[15041],"name":"PositionValue","nodeType":"ContractDefinition","nodes":[{"body":{"id":14749,"nodeType":"Block","src":"1573:283:91","statements":[{"assignments":[14723,14725],"declarations":[{"constant":false,"id":14723,"mutability":"mutable","name":"amount0Principal","nodeType":"VariableDeclaration","scope":14749,"src":"1584:24:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14722,"name":"uint256","nodeType":"ElementaryTypeName","src":"1584:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14725,"mutability":"mutable","name":"amount1Principal","nodeType":"VariableDeclaration","scope":14749,"src":"1610:24:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14724,"name":"uint256","nodeType":"ElementaryTypeName","src":"1610:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14731,"initialValue":{"arguments":[{"id":14727,"name":"positionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14711,"src":"1648:15:91","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},{"id":14728,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14713,"src":"1665:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14729,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14715,"src":"1674:12:91","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":14726,"name":"principal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14790,"src":"1638:9:91","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_INonfungiblePositionManager_$9720_$_t_uint256_$_t_uint160_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract INonfungiblePositionManager,uint256,uint160) view returns (uint256,uint256)"}},"id":14730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1638:49:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1583:104:91"},{"assignments":[14733,14735],"declarations":[{"constant":false,"id":14733,"mutability":"mutable","name":"amount0Fee","nodeType":"VariableDeclaration","scope":14749,"src":"1698:18:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14732,"name":"uint256","nodeType":"ElementaryTypeName","src":"1698:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14735,"mutability":"mutable","name":"amount1Fee","nodeType":"VariableDeclaration","scope":14749,"src":"1718:18:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14734,"name":"uint256","nodeType":"ElementaryTypeName","src":"1718:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14740,"initialValue":{"arguments":[{"id":14737,"name":"positionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14711,"src":"1745:15:91","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},{"id":14738,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14713,"src":"1762:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14736,"name":"fees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14865,"src":"1740:4:91","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_INonfungiblePositionManager_$9720_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract INonfungiblePositionManager,uint256) view returns (uint256,uint256)"}},"id":14739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1740:30:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1697:73:91"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14741,"name":"amount0Principal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14723,"src":"1788:16:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":14742,"name":"amount0Fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14733,"src":"1807:10:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1788:29:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14744,"name":"amount1Principal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14725,"src":"1819:16:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":14745,"name":"amount1Fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14735,"src":"1838:10:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1819:29:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14747,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1787:62:91","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":14721,"id":14748,"nodeType":"Return","src":"1780:69:91"}]},"documentation":{"id":14709,"nodeType":"StructuredDocumentation","src":"809:573:91","text":"@notice Returns the total amounts of token0 and token1, i.e. the sum of fees and principal\n that a given nonfungible position manager token is worth\n @param positionManager The AstraDEX CL NonfungiblePositionManager\n @param tokenId The tokenId of the token for which to get the total value\n @param sqrtRatioX96 The square root price X96 for which to calculate the principal amounts\n @return amount0 The total amount of token0 including principal and fees\n @return amount1 The total amount of token1 including principal and fees"},"id":14750,"implemented":true,"kind":"function","modifiers":[],"name":"total","nodeType":"FunctionDefinition","parameters":{"id":14716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14711,"mutability":"mutable","name":"positionManager","nodeType":"VariableDeclaration","scope":14750,"src":"1411:43:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":14710,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":9720,"src":"1411:27:91","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":14713,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":14750,"src":"1464:15:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14712,"name":"uint256","nodeType":"ElementaryTypeName","src":"1464:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14715,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":14750,"src":"1489:20:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":14714,"name":"uint160","nodeType":"ElementaryTypeName","src":"1489:7:91","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1401:114:91"},"returnParameters":{"id":14721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14718,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":14750,"src":"1539:15:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14717,"name":"uint256","nodeType":"ElementaryTypeName","src":"1539:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14720,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":14750,"src":"1556:15:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14719,"name":"uint256","nodeType":"ElementaryTypeName","src":"1556:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1538:34:91"},"scope":15041,"src":"1387:469:91","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14789,"nodeType":"Block","src":"2571:377:91","statements":[{"assignments":[null,null,null,null,null,14765,14767,14769,null,null,null,null],"declarations":[null,null,null,null,null,{"constant":false,"id":14765,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":14789,"src":"2592:15:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":14764,"name":"int24","nodeType":"ElementaryTypeName","src":"2592:5:91","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":14767,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":14789,"src":"2609:15:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":14766,"name":"int24","nodeType":"ElementaryTypeName","src":"2609:5:91","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":14769,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":14789,"src":"2626:17:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":14768,"name":"uint128","nodeType":"ElementaryTypeName","src":"2626:7:91","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},null,null,null,null],"id":14774,"initialValue":{"arguments":[{"id":14772,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14755,"src":"2681:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14770,"name":"positionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14753,"src":"2655:15:91","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},"id":14771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"positions","nodeType":"MemberAccess","referencedDeclaration":9611,"src":"2655:25:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint96_$_t_address_$_t_address_$_t_address_$_t_uint24_$_t_int24_$_t_int24_$_t_uint128_$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$","typeString":"function (uint256) view external returns (uint96,address,address,address,uint24,int24,int24,uint128,uint256,uint256,uint128,uint128)"}},"id":14773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2655:34:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint96_$_t_address_$_t_address_$_t_address_$_t_uint24_$_t_int24_$_t_int24_$_t_uint128_$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$","typeString":"tuple(uint96,address,address,address,uint24,int24,int24,uint128,uint256,uint256,uint128,uint128)"}},"nodeType":"VariableDeclarationStatement","src":"2581:108:91"},{"expression":{"arguments":[{"id":14777,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14757,"src":"2776:12:91","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":14780,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14765,"src":"2834:9:91","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":14778,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"2806:8:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$2536_$","typeString":"type(library TickMath)"}},"id":14779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":2396,"src":"2806:27:91","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":14781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2806:38:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":14784,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14767,"src":"2890:9:91","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":14782,"name":"TickMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"2862:8:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TickMath_$2536_$","typeString":"type(library TickMath)"}},"id":14783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSqrtRatioAtTick","nodeType":"MemberAccess","referencedDeclaration":2396,"src":"2862:27:91","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$returns$_t_uint160_$","typeString":"function (int24) pure returns (uint160)"}},"id":14785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2862:38:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":14786,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14769,"src":"2918:9:91","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":14775,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12612,"src":"2719:16:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$12612_$","typeString":"type(library LiquidityAmounts)"}},"id":14776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsForLiquidity","nodeType":"MemberAccess","referencedDeclaration":12611,"src":"2719:39:91","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint160,uint160,uint160,uint128) pure returns (uint256,uint256)"}},"id":14787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2719:222:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":14763,"id":14788,"nodeType":"Return","src":"2700:241:91"}]},"documentation":{"id":14751,"nodeType":"StructuredDocumentation","src":"1862:514:91","text":"@notice Calculates the principal (currently acting as liquidity) owed to the token owner in the event\n that the position is burned\n @param positionManager The AstraDEX CL NonfungiblePositionManager\n @param tokenId The tokenId of the token for which to get the total principal owed\n @param sqrtRatioX96 The square root price X96 for which to calculate the principal amounts\n @return amount0 The principal amount of token0\n @return amount1 The principal amount of token1"},"id":14790,"implemented":true,"kind":"function","modifiers":[],"name":"principal","nodeType":"FunctionDefinition","parameters":{"id":14758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14753,"mutability":"mutable","name":"positionManager","nodeType":"VariableDeclaration","scope":14790,"src":"2409:43:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":14752,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":9720,"src":"2409:27:91","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":14755,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":14790,"src":"2462:15:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14754,"name":"uint256","nodeType":"ElementaryTypeName","src":"2462:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14757,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":14790,"src":"2487:20:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":14756,"name":"uint160","nodeType":"ElementaryTypeName","src":"2487:7:91","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"2399:114:91"},"returnParameters":{"id":14763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14760,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":14790,"src":"2537:15:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14759,"name":"uint256","nodeType":"ElementaryTypeName","src":"2537:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14762,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":14790,"src":"2554:15:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14761,"name":"uint256","nodeType":"ElementaryTypeName","src":"2554:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2536:34:91"},"scope":15041,"src":"2381:567:91","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"PositionValue.FeeParams","id":14811,"members":[{"constant":false,"id":14792,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":14811,"src":"2981:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14791,"name":"address","nodeType":"ElementaryTypeName","src":"2981:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14794,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":14811,"src":"3005:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14793,"name":"address","nodeType":"ElementaryTypeName","src":"3005:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14796,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":14811,"src":"3029:10:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":14795,"name":"uint24","nodeType":"ElementaryTypeName","src":"3029:6:91","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":14798,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":14811,"src":"3049:15:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":14797,"name":"int24","nodeType":"ElementaryTypeName","src":"3049:5:91","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":14800,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":14811,"src":"3074:15:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":14799,"name":"int24","nodeType":"ElementaryTypeName","src":"3074:5:91","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":14802,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":14811,"src":"3099:17:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":14801,"name":"uint128","nodeType":"ElementaryTypeName","src":"3099:7:91","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":14804,"mutability":"mutable","name":"positionFeeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":14811,"src":"3126:40:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14803,"name":"uint256","nodeType":"ElementaryTypeName","src":"3126:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14806,"mutability":"mutable","name":"positionFeeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":14811,"src":"3176:40:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14805,"name":"uint256","nodeType":"ElementaryTypeName","src":"3176:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14808,"mutability":"mutable","name":"tokensOwed0","nodeType":"VariableDeclaration","scope":14811,"src":"3226:19:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14807,"name":"uint256","nodeType":"ElementaryTypeName","src":"3226:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14810,"mutability":"mutable","name":"tokensOwed1","nodeType":"VariableDeclaration","scope":14811,"src":"3255:19:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14809,"name":"uint256","nodeType":"ElementaryTypeName","src":"3255:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"FeeParams","nodeType":"StructDefinition","scope":15041,"src":"2954:327:91","visibility":"public"},{"body":{"id":14864,"nodeType":"Block","src":"3783:1060:91","statements":[{"assignments":[null,null,14824,14826,14828,14830,14832,14834,14836,14838,14840,14842],"declarations":[null,null,{"constant":false,"id":14824,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":14864,"src":"3835:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14823,"name":"address","nodeType":"ElementaryTypeName","src":"3835:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14826,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":14864,"src":"3863:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14825,"name":"address","nodeType":"ElementaryTypeName","src":"3863:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14828,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":14864,"src":"3891:10:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":14827,"name":"uint24","nodeType":"ElementaryTypeName","src":"3891:6:91","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":14830,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":14864,"src":"3915:15:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":14829,"name":"int24","nodeType":"ElementaryTypeName","src":"3915:5:91","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":14832,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":14864,"src":"3944:15:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":14831,"name":"int24","nodeType":"ElementaryTypeName","src":"3944:5:91","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":14834,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":14864,"src":"3973:17:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":14833,"name":"uint128","nodeType":"ElementaryTypeName","src":"3973:7:91","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":14836,"mutability":"mutable","name":"positionFeeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":14864,"src":"4004:40:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14835,"name":"uint256","nodeType":"ElementaryTypeName","src":"4004:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14838,"mutability":"mutable","name":"positionFeeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":14864,"src":"4058:40:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14837,"name":"uint256","nodeType":"ElementaryTypeName","src":"4058:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14840,"mutability":"mutable","name":"tokensOwed0","nodeType":"VariableDeclaration","scope":14864,"src":"4112:19:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14839,"name":"uint256","nodeType":"ElementaryTypeName","src":"4112:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14842,"mutability":"mutable","name":"tokensOwed1","nodeType":"VariableDeclaration","scope":14864,"src":"4145:19:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14841,"name":"uint256","nodeType":"ElementaryTypeName","src":"4145:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14847,"initialValue":{"arguments":[{"id":14845,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14816,"src":"4203:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14843,"name":"positionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14814,"src":"4177:15:91","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},"id":14844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"positions","nodeType":"MemberAccess","referencedDeclaration":9611,"src":"4177:25:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint96_$_t_address_$_t_address_$_t_address_$_t_uint24_$_t_int24_$_t_int24_$_t_uint128_$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$","typeString":"function (uint256) view external returns (uint96,address,address,address,uint24,int24,int24,uint128,uint256,uint256,uint128,uint128)"}},"id":14846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4177:34:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint96_$_t_address_$_t_address_$_t_address_$_t_uint24_$_t_int24_$_t_int24_$_t_uint128_$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$","typeString":"tuple(uint96,address,address,address,uint24,int24,int24,uint128,uint256,uint256,uint128,uint128)"}},"nodeType":"VariableDeclarationStatement","src":"3793:418:91"},{"expression":{"arguments":[{"id":14849,"name":"positionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14814,"src":"4264:15:91","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},{"arguments":[{"id":14851,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14824,"src":"4337:6:91","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14852,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14826,"src":"4373:6:91","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14853,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14828,"src":"4406:3:91","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"id":14854,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14830,"src":"4442:9:91","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":14855,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14832,"src":"4484:9:91","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":14856,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14834,"src":"4526:9:91","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":14857,"name":"positionFeeGrowthInside0LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14836,"src":"4591:32:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14858,"name":"positionFeeGrowthInside1LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14838,"src":"4679:32:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14859,"name":"tokensOwed0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14840,"src":"4746:11:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14860,"name":"tokensOwed1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14842,"src":"4792:11:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14850,"name":"FeeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14811,"src":"4297:9:91","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_FeeParams_$14811_storage_ptr_$","typeString":"type(struct PositionValue.FeeParams storage pointer)"}},"id":14861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee","tickLower","tickUpper","liquidity","positionFeeGrowthInside0LastX128","positionFeeGrowthInside1LastX128","tokensOwed0","tokensOwed1"],"nodeType":"FunctionCall","src":"4297:525:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$14811_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},{"typeIdentifier":"t_struct$_FeeParams_$14811_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}],"id":14848,"name":"_fees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14939,"src":"4241:5:91","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_INonfungiblePositionManager_$9720_$_t_struct$_FeeParams_$14811_memory_ptr_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract INonfungiblePositionManager,struct PositionValue.FeeParams memory) view returns (uint256,uint256)"}},"id":14862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4241:595:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":14822,"id":14863,"nodeType":"Return","src":"4222:614:91"}]},"documentation":{"id":14812,"nodeType":"StructuredDocumentation","src":"3287:336:91","text":"@notice Calculates the total fees owed to the token owner\n @param positionManager The AstraDEX CL NonfungiblePositionManager\n @param tokenId The tokenId of the token for which to get the total fees owed\n @return amount0 The amount of fees owed in token0\n @return amount1 The amount of fees owed in token1"},"id":14865,"implemented":true,"kind":"function","modifiers":[],"name":"fees","nodeType":"FunctionDefinition","parameters":{"id":14817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14814,"mutability":"mutable","name":"positionManager","nodeType":"VariableDeclaration","scope":14865,"src":"3651:43:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":14813,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":9720,"src":"3651:27:91","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":14816,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":14865,"src":"3704:15:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14815,"name":"uint256","nodeType":"ElementaryTypeName","src":"3704:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3641:84:91"},"returnParameters":{"id":14822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14819,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":14865,"src":"3749:15:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14818,"name":"uint256","nodeType":"ElementaryTypeName","src":"3749:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14821,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":14865,"src":"3766:15:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14820,"name":"uint256","nodeType":"ElementaryTypeName","src":"3766:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3748:34:91"},"scope":15041,"src":"3628:1215:91","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14938,"nodeType":"Block","src":"5015:979:91","statements":[{"assignments":[14877,14879],"declarations":[{"constant":false,"id":14877,"mutability":"mutable","name":"poolFeeGrowthInside0LastX128","nodeType":"VariableDeclaration","scope":14938,"src":"5026:36:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14876,"name":"uint256","nodeType":"ElementaryTypeName","src":"5026:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14879,"mutability":"mutable","name":"poolFeeGrowthInside1LastX128","nodeType":"VariableDeclaration","scope":14938,"src":"5064:36:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14878,"name":"uint256","nodeType":"ElementaryTypeName","src":"5064:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14903,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14884,"name":"positionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14867,"src":"5215:15:91","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},"id":14885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"factory","nodeType":"MemberAccess","referencedDeclaration":9744,"src":"5215:23:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":14886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5215:25:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"id":14889,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14869,"src":"5291:9:91","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$14811_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":14890,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":14792,"src":"5291:16:91","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14891,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14869,"src":"5317:9:91","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$14811_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":14892,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":14794,"src":"5317:16:91","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14893,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14869,"src":"5340:9:91","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$14811_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":14894,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":14796,"src":"5340:13:91","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":14887,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14364,"src":"5262:11:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$14364_$","typeString":"type(library PoolAddress)"}},"id":14888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PoolKey","nodeType":"MemberAccess","referencedDeclaration":14285,"src":"5262:19:91","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolKey_$14285_storage_ptr_$","typeString":"type(struct PoolAddress.PoolKey storage pointer)"}},"id":14895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee"],"nodeType":"FunctionCall","src":"5262:93:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":14882,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14364,"src":"5167:11:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$14364_$","typeString":"type(library PoolAddress)"}},"id":14883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":14363,"src":"5167:26:91","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$14285_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":14896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5167:206:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14881,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"5137:12:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":14897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5137:250:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},{"expression":{"id":14898,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14869,"src":"5401:9:91","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$14811_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":14899,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickLower","nodeType":"MemberAccess","referencedDeclaration":14798,"src":"5401:19:91","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"expression":{"id":14900,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14869,"src":"5434:9:91","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$14811_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":14901,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tickUpper","nodeType":"MemberAccess","referencedDeclaration":14800,"src":"5434:19:91","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"id":14880,"name":"_getFeeGrowthInside","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15040,"src":"5104:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IAstraCLPool_$110_$_t_int24_$_t_int24_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract IAstraCLPool,int24,int24) view returns (uint256,uint256)"}},"id":14902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5104:359:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5025:438:91"},{"expression":{"id":14919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14904,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14872,"src":"5474:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14907,"name":"poolFeeGrowthInside0LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14877,"src":"5529:28:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":14908,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14869,"src":"5560:9:91","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$14811_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":14909,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"positionFeeGrowthInside0LastX128","nodeType":"MemberAccess","referencedDeclaration":14804,"src":"5560:42:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5529:73:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":14911,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14869,"src":"5620:9:91","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$14811_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":14912,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":14802,"src":"5620:19:91","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":14913,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":858,"src":"5657:13:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$858_$","typeString":"type(library FixedPoint128)"}},"id":14914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":857,"src":"5657:18:91","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":14905,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"5496:8:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$1041_$","typeString":"type(library FullMath)"}},"id":14906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":997,"src":"5496:15:91","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":14915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5496:193:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":14916,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14869,"src":"5704:9:91","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$14811_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":14917,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed0","nodeType":"MemberAccess","referencedDeclaration":14808,"src":"5704:21:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5496:229:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5474:251:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14920,"nodeType":"ExpressionStatement","src":"5474:251:91"},{"expression":{"id":14936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14921,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14874,"src":"5736:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14924,"name":"poolFeeGrowthInside1LastX128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14879,"src":"5791:28:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":14925,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14869,"src":"5822:9:91","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$14811_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":14926,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"positionFeeGrowthInside1LastX128","nodeType":"MemberAccess","referencedDeclaration":14806,"src":"5822:42:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5791:73:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":14928,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14869,"src":"5882:9:91","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$14811_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":14929,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"liquidity","nodeType":"MemberAccess","referencedDeclaration":14802,"src":"5882:19:91","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":14930,"name":"FixedPoint128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":858,"src":"5919:13:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint128_$858_$","typeString":"type(library FixedPoint128)"}},"id":14931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q128","nodeType":"MemberAccess","referencedDeclaration":857,"src":"5919:18:91","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":14922,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"5758:8:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$1041_$","typeString":"type(library FullMath)"}},"id":14923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":997,"src":"5758:15:91","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":14932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5758:193:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":14933,"name":"feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14869,"src":"5966:9:91","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$14811_memory_ptr","typeString":"struct PositionValue.FeeParams memory"}},"id":14934,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tokensOwed1","nodeType":"MemberAccess","referencedDeclaration":14810,"src":"5966:21:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5758:229:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5736:251:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14937,"nodeType":"ExpressionStatement","src":"5736:251:91"}]},"id":14939,"implemented":true,"kind":"function","modifiers":[],"name":"_fees","nodeType":"FunctionDefinition","parameters":{"id":14870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14867,"mutability":"mutable","name":"positionManager","nodeType":"VariableDeclaration","scope":14939,"src":"4873:43:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":14866,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":9720,"src":"4873:27:91","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":14869,"mutability":"mutable","name":"feeParams","nodeType":"VariableDeclaration","scope":14939,"src":"4926:26:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$14811_memory_ptr","typeString":"struct PositionValue.FeeParams"},"typeName":{"id":14868,"name":"FeeParams","nodeType":"UserDefinedTypeName","referencedDeclaration":14811,"src":"4926:9:91","typeDescriptions":{"typeIdentifier":"t_struct$_FeeParams_$14811_storage_ptr","typeString":"struct PositionValue.FeeParams"}},"visibility":"internal"}],"src":"4863:95:91"},"returnParameters":{"id":14875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14872,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":14939,"src":"4981:15:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14871,"name":"uint256","nodeType":"ElementaryTypeName","src":"4981:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14874,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":14939,"src":"4998:15:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14873,"name":"uint256","nodeType":"ElementaryTypeName","src":"4998:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4980:34:91"},"scope":15041,"src":"4849:1145:91","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":15039,"nodeType":"Block","src":"6194:1154:91","statements":[{"assignments":[null,14953,null,null,null,null,null],"declarations":[null,{"constant":false,"id":14953,"mutability":"mutable","name":"tickCurrent","nodeType":"VariableDeclaration","scope":15039,"src":"6207:17:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":14952,"name":"int24","nodeType":"ElementaryTypeName","src":"6207:5:91","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},null,null,null,null,null],"id":14957,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14954,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14941,"src":"6238:4:91","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":14955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slot0","nodeType":"MemberAccess","referencedDeclaration":485,"src":"6238:10:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$","typeString":"function () view external returns (uint160,int24,uint16,uint16,uint16,uint8,bool)"}},"id":14956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6238:12:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$","typeString":"tuple(uint160,int24,uint16,uint16,uint16,uint8,bool)"}},"nodeType":"VariableDeclarationStatement","src":"6204:46:91"},{"assignments":[null,null,14959,14961,null,null,null,null],"declarations":[null,null,{"constant":false,"id":14959,"mutability":"mutable","name":"lowerFeeGrowthOutside0X128","nodeType":"VariableDeclaration","scope":15039,"src":"6265:34:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14958,"name":"uint256","nodeType":"ElementaryTypeName","src":"6265:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14961,"mutability":"mutable","name":"lowerFeeGrowthOutside1X128","nodeType":"VariableDeclaration","scope":15039,"src":"6301:34:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14960,"name":"uint256","nodeType":"ElementaryTypeName","src":"6301:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null,null,null,null],"id":14966,"initialValue":{"arguments":[{"id":14964,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14943,"src":"6358:9:91","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":14962,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14941,"src":"6347:4:91","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":14963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ticks","nodeType":"MemberAccess","referencedDeclaration":533,"src":"6347:10:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_int24_$returns$_t_uint128_$_t_int128_$_t_uint256_$_t_uint256_$_t_int56_$_t_uint160_$_t_uint32_$_t_bool_$","typeString":"function (int24) view external returns (uint128,int128,uint256,uint256,int56,uint160,uint32,bool)"}},"id":14965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6347:21:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_int128_$_t_uint256_$_t_uint256_$_t_int56_$_t_uint160_$_t_uint32_$_t_bool_$","typeString":"tuple(uint128,int128,uint256,uint256,int56,uint160,uint32,bool)"}},"nodeType":"VariableDeclarationStatement","src":"6260:108:91"},{"assignments":[null,null,14968,14970,null,null,null,null],"declarations":[null,null,{"constant":false,"id":14968,"mutability":"mutable","name":"upperFeeGrowthOutside0X128","nodeType":"VariableDeclaration","scope":15039,"src":"6383:34:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14967,"name":"uint256","nodeType":"ElementaryTypeName","src":"6383:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14970,"mutability":"mutable","name":"upperFeeGrowthOutside1X128","nodeType":"VariableDeclaration","scope":15039,"src":"6419:34:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14969,"name":"uint256","nodeType":"ElementaryTypeName","src":"6419:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null,null,null,null],"id":14975,"initialValue":{"arguments":[{"id":14973,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14945,"src":"6476:9:91","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":14971,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14941,"src":"6465:4:91","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":14972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ticks","nodeType":"MemberAccess","referencedDeclaration":533,"src":"6465:10:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_int24_$returns$_t_uint128_$_t_int128_$_t_uint256_$_t_uint256_$_t_int56_$_t_uint160_$_t_uint32_$_t_bool_$","typeString":"function (int24) view external returns (uint128,int128,uint256,uint256,int56,uint160,uint32,bool)"}},"id":14974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6465:21:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_int128_$_t_uint256_$_t_uint256_$_t_int56_$_t_uint160_$_t_uint32_$_t_bool_$","typeString":"tuple(uint128,int128,uint256,uint256,int56,uint160,uint32,bool)"}},"nodeType":"VariableDeclarationStatement","src":"6378:108:91"},{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":14978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14976,"name":"tickCurrent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14953,"src":"6501:11:91","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":14977,"name":"tickLower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14943,"src":"6515:9:91","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"6501:23:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int24","typeString":"int24"},"id":14994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14992,"name":"tickCurrent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14953,"src":"6731:11:91","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":14993,"name":"tickUpper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14945,"src":"6745:9:91","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"6731:23:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15036,"nodeType":"Block","src":"7147:195:91","statements":[{"expression":{"id":15028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15024,"name":"feeGrowthInside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14948,"src":"7161:20:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15025,"name":"upperFeeGrowthOutside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14968,"src":"7184:26:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":15026,"name":"lowerFeeGrowthOutside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14959,"src":"7213:26:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7184:55:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7161:78:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15029,"nodeType":"ExpressionStatement","src":"7161:78:91"},{"expression":{"id":15034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15030,"name":"feeGrowthInside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14950,"src":"7253:20:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15031,"name":"upperFeeGrowthOutside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14970,"src":"7276:26:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":15032,"name":"lowerFeeGrowthOutside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14961,"src":"7305:26:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7276:55:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7253:78:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15035,"nodeType":"ExpressionStatement","src":"7253:78:91"}]},"id":15037,"nodeType":"IfStatement","src":"6727:615:91","trueBody":{"id":15023,"nodeType":"Block","src":"6756:385:91","statements":[{"assignments":[14996],"declarations":[{"constant":false,"id":14996,"mutability":"mutable","name":"feeGrowthGlobal0X128","nodeType":"VariableDeclaration","scope":15023,"src":"6770:28:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14995,"name":"uint256","nodeType":"ElementaryTypeName","src":"6770:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15000,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14997,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14941,"src":"6801:4:91","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":14998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthGlobal0X128","nodeType":"MemberAccess","referencedDeclaration":491,"src":"6801:25:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":14999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6801:27:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6770:58:91"},{"assignments":[15002],"declarations":[{"constant":false,"id":15002,"mutability":"mutable","name":"feeGrowthGlobal1X128","nodeType":"VariableDeclaration","scope":15023,"src":"6842:28:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15001,"name":"uint256","nodeType":"ElementaryTypeName","src":"6842:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15006,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15003,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14941,"src":"6873:4:91","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":15004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"feeGrowthGlobal1X128","nodeType":"MemberAccess","referencedDeclaration":497,"src":"6873:25:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":15005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6873:27:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6842:58:91"},{"expression":{"id":15013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15007,"name":"feeGrowthInside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14948,"src":"6914:20:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15008,"name":"feeGrowthGlobal0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14996,"src":"6937:20:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":15009,"name":"lowerFeeGrowthOutside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14959,"src":"6960:26:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6937:49:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":15011,"name":"upperFeeGrowthOutside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14968,"src":"6989:26:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6937:78:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6914:101:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15014,"nodeType":"ExpressionStatement","src":"6914:101:91"},{"expression":{"id":15021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15015,"name":"feeGrowthInside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14950,"src":"7029:20:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15016,"name":"feeGrowthGlobal1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15002,"src":"7052:20:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":15017,"name":"lowerFeeGrowthOutside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14961,"src":"7075:26:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7052:49:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":15019,"name":"upperFeeGrowthOutside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14970,"src":"7104:26:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7052:78:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7029:101:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15022,"nodeType":"ExpressionStatement","src":"7029:101:91"}]}},"id":15038,"nodeType":"IfStatement","src":"6497:845:91","trueBody":{"id":14991,"nodeType":"Block","src":"6526:195:91","statements":[{"expression":{"id":14983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14979,"name":"feeGrowthInside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14948,"src":"6540:20:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14980,"name":"lowerFeeGrowthOutside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14959,"src":"6563:26:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":14981,"name":"upperFeeGrowthOutside0X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14968,"src":"6592:26:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6563:55:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6540:78:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14984,"nodeType":"ExpressionStatement","src":"6540:78:91"},{"expression":{"id":14989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14985,"name":"feeGrowthInside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14950,"src":"6632:20:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14986,"name":"lowerFeeGrowthOutside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14961,"src":"6655:26:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":14987,"name":"upperFeeGrowthOutside1X128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14970,"src":"6684:26:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6655:55:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6632:78:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14990,"nodeType":"ExpressionStatement","src":"6632:78:91"}]}}]},"id":15040,"implemented":true,"kind":"function","modifiers":[],"name":"_getFeeGrowthInside","nodeType":"FunctionDefinition","parameters":{"id":14946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14941,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":15040,"src":"6038:17:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":14940,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"6038:12:91","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"},{"constant":false,"id":14943,"mutability":"mutable","name":"tickLower","nodeType":"VariableDeclaration","scope":15040,"src":"6065:15:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":14942,"name":"int24","nodeType":"ElementaryTypeName","src":"6065:5:91","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":14945,"mutability":"mutable","name":"tickUpper","nodeType":"VariableDeclaration","scope":15040,"src":"6090:15:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":14944,"name":"int24","nodeType":"ElementaryTypeName","src":"6090:5:91","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"6028:83:91"},"returnParameters":{"id":14951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14948,"mutability":"mutable","name":"feeGrowthInside0X128","nodeType":"VariableDeclaration","scope":15040,"src":"6134:28:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14947,"name":"uint256","nodeType":"ElementaryTypeName","src":"6134:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14950,"mutability":"mutable","name":"feeGrowthInside1X128","nodeType":"VariableDeclaration","scope":15040,"src":"6164:28:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14949,"name":"uint256","nodeType":"ElementaryTypeName","src":"6164:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6133:60:91"},"scope":15041,"src":"6000:1348:91","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":15042,"src":"781:6569:91"}],"src":"45:7306:91"},"id":91},"contracts/libraries/SafeERC20Namer.sol":{"ast":{"absolutePath":"contracts/libraries/SafeERC20Namer.sol","exportedSymbols":{"AddressStringUtil":[11944],"SafeERC20Namer":[15356]},"id":15357,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15043,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"46:24:92"},{"absolutePath":"contracts/libraries/AddressStringUtil.sol","file":"./AddressStringUtil.sol","id":15044,"nodeType":"ImportDirective","scope":15357,"sourceUnit":11945,"src":"72:33:92","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":15356,"linearizedBaseContracts":[15356],"name":"SafeERC20Namer","nodeType":"ContractDefinition","nodes":[{"body":{"id":15126,"nodeType":"Block","src":"405:511:92","statements":[{"assignments":[15052],"declarations":[{"constant":false,"id":15052,"mutability":"mutable","name":"bytesString","nodeType":"VariableDeclaration","scope":15126,"src":"415:24:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15051,"name":"bytes","nodeType":"ElementaryTypeName","src":"415:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":15057,"initialValue":{"arguments":[{"hexValue":"3332","id":15055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"452:2:92","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"id":15054,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"442:9:92","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":15053,"name":"bytes","nodeType":"ElementaryTypeName","src":"446:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":15056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"442:13:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"415:40:92"},{"assignments":[15059],"declarations":[{"constant":false,"id":15059,"mutability":"mutable","name":"charCount","nodeType":"VariableDeclaration","scope":15126,"src":"465:17:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15058,"name":"uint256","nodeType":"ElementaryTypeName","src":"465:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15061,"initialValue":{"hexValue":"30","id":15060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"485:1:92","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"465:21:92"},{"body":{"id":15092,"nodeType":"Block","src":"529:162:92","statements":[{"assignments":[15073],"declarations":[{"constant":false,"id":15073,"mutability":"mutable","name":"char","nodeType":"VariableDeclaration","scope":15092,"src":"543:11:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":15072,"name":"bytes1","nodeType":"ElementaryTypeName","src":"543:6:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"id":15077,"initialValue":{"baseExpression":{"id":15074,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15046,"src":"557:1:92","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":15076,"indexExpression":{"id":15075,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15063,"src":"559:1:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"557:4:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"VariableDeclarationStatement","src":"543:18:92"},{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":15080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15078,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15073,"src":"579:4:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":15079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"587:1:92","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"579:9:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15091,"nodeType":"IfStatement","src":"575:106:92","trueBody":{"id":15090,"nodeType":"Block","src":"590:91:92","statements":[{"expression":{"id":15085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15081,"name":"bytesString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15052,"src":"608:11:92","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15083,"indexExpression":{"id":15082,"name":"charCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15059,"src":"620:9:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"608:22:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15084,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15073,"src":"633:4:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"608:29:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":15086,"nodeType":"ExpressionStatement","src":"608:29:92"},{"expression":{"id":15088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"655:11:92","subExpression":{"id":15087,"name":"charCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15059,"src":"655:9:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15089,"nodeType":"ExpressionStatement","src":"655:11:92"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15066,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15063,"src":"516:1:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3332","id":15067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"520:2:92","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"516:6:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15093,"initializationExpression":{"assignments":[15063],"declarations":[{"constant":false,"id":15063,"mutability":"mutable","name":"j","nodeType":"VariableDeclaration","scope":15093,"src":"501:9:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15062,"name":"uint256","nodeType":"ElementaryTypeName","src":"501:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15065,"initialValue":{"hexValue":"30","id":15064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"513:1:92","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"501:13:92"},"loopExpression":{"expression":{"id":15070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"524:3:92","subExpression":{"id":15069,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15063,"src":"524:1:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15071,"nodeType":"ExpressionStatement","src":"524:3:92"},"nodeType":"ForStatement","src":"496:195:92"},{"assignments":[15095],"declarations":[{"constant":false,"id":15095,"mutability":"mutable","name":"bytesStringTrimmed","nodeType":"VariableDeclaration","scope":15126,"src":"700:31:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15094,"name":"bytes","nodeType":"ElementaryTypeName","src":"700:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":15100,"initialValue":{"arguments":[{"id":15098,"name":"charCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15059,"src":"744:9:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15097,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"734:9:92","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":15096,"name":"bytes","nodeType":"ElementaryTypeName","src":"738:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":15099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"734:20:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"700:54:92"},{"body":{"id":15119,"nodeType":"Block","src":"804:63:92","statements":[{"expression":{"id":15117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15111,"name":"bytesStringTrimmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15095,"src":"818:18:92","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15113,"indexExpression":{"id":15112,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15102,"src":"837:1:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"818:21:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":15114,"name":"bytesString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15052,"src":"842:11:92","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15116,"indexExpression":{"id":15115,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15102,"src":"854:1:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"842:14:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"818:38:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":15118,"nodeType":"ExpressionStatement","src":"818:38:92"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15105,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15102,"src":"784:1:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":15106,"name":"charCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15059,"src":"788:9:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"784:13:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15120,"initializationExpression":{"assignments":[15102],"declarations":[{"constant":false,"id":15102,"mutability":"mutable","name":"j","nodeType":"VariableDeclaration","scope":15120,"src":"769:9:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15101,"name":"uint256","nodeType":"ElementaryTypeName","src":"769:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15104,"initialValue":{"hexValue":"30","id":15103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"781:1:92","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"769:13:92"},"loopExpression":{"expression":{"id":15109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"799:3:92","subExpression":{"id":15108,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15102,"src":"799:1:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15110,"nodeType":"ExpressionStatement","src":"799:3:92"},"nodeType":"ForStatement","src":"764:103:92"},{"expression":{"arguments":[{"id":15123,"name":"bytesStringTrimmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15095,"src":"890:18:92","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"883:6:92","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":15121,"name":"string","nodeType":"ElementaryTypeName","src":"883:6:92","typeDescriptions":{}}},"id":15124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"883:26:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":15050,"id":15125,"nodeType":"Return","src":"876:33:92"}]},"id":15127,"implemented":true,"kind":"function","modifiers":[],"name":"bytes32ToString","nodeType":"FunctionDefinition","parameters":{"id":15047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15046,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":15127,"src":"357:9:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15045,"name":"bytes32","nodeType":"ElementaryTypeName","src":"357:7:92","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"356:11:92"},"returnParameters":{"id":15050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15049,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15127,"src":"390:13:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15048,"name":"string","nodeType":"ElementaryTypeName","src":"390:6:92","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"389:15:92"},"scope":15356,"src":"332:584:92","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":15197,"nodeType":"Block","src":"1041:428:92","statements":[{"assignments":[15135],"declarations":[{"constant":false,"id":15135,"mutability":"mutable","name":"charCount","nodeType":"VariableDeclaration","scope":15197,"src":"1051:17:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15134,"name":"uint256","nodeType":"ElementaryTypeName","src":"1051:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15137,"initialValue":{"hexValue":"30","id":15136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1071:1:92","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1051:21:92"},{"body":{"id":15161,"nodeType":"Block","src":"1169:78:92","statements":[{"expression":{"id":15150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15148,"name":"charCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15135,"src":"1183:9:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"38","id":15149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1197:1:92","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1183:15:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15151,"nodeType":"ExpressionStatement","src":"1183:15:92"},{"expression":{"id":15159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15152,"name":"charCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15135,"src":"1212:9:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"baseExpression":{"id":15155,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15129,"src":"1231:1:92","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15157,"indexExpression":{"id":15156,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15139,"src":"1233:1:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1231:4:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":15154,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1225:5:92","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":15153,"name":"uint8","nodeType":"ElementaryTypeName","src":"1225:5:92","typeDescriptions":{}}},"id":15158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1225:11:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1212:24:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15160,"nodeType":"ExpressionStatement","src":"1212:24:92"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15142,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15139,"src":"1156:1:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3634","id":15143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1160:2:92","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"1156:6:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15162,"initializationExpression":{"assignments":[15139],"declarations":[{"constant":false,"id":15139,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":15162,"src":"1140:9:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15138,"name":"uint256","nodeType":"ElementaryTypeName","src":"1140:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15141,"initialValue":{"hexValue":"3332","id":15140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1152:2:92","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"nodeType":"VariableDeclarationStatement","src":"1140:14:92"},"loopExpression":{"expression":{"id":15146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1164:3:92","subExpression":{"id":15145,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15139,"src":"1164:1:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15147,"nodeType":"ExpressionStatement","src":"1164:3:92"},"nodeType":"ForStatement","src":"1135:112:92"},{"assignments":[15164],"declarations":[{"constant":false,"id":15164,"mutability":"mutable","name":"bytesStringTrimmed","nodeType":"VariableDeclaration","scope":15197,"src":"1257:31:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15163,"name":"bytes","nodeType":"ElementaryTypeName","src":"1257:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":15169,"initialValue":{"arguments":[{"id":15167,"name":"charCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15135,"src":"1301:9:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15166,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1291:9:92","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":15165,"name":"bytes","nodeType":"ElementaryTypeName","src":"1295:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":15168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1291:20:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1257:54:92"},{"body":{"id":15190,"nodeType":"Block","src":"1361:58:92","statements":[{"expression":{"id":15188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15180,"name":"bytesStringTrimmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15164,"src":"1375:18:92","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15182,"indexExpression":{"id":15181,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15171,"src":"1394:1:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1375:21:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":15183,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15129,"src":"1399:1:92","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15187,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15184,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15171,"src":"1401:1:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3634","id":15185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1405:2:92","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"1401:6:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1399:9:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"1375:33:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":15189,"nodeType":"ExpressionStatement","src":"1375:33:92"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15174,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15171,"src":"1341:1:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":15175,"name":"charCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15135,"src":"1345:9:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1341:13:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15191,"initializationExpression":{"assignments":[15171],"declarations":[{"constant":false,"id":15171,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":15191,"src":"1326:9:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15170,"name":"uint256","nodeType":"ElementaryTypeName","src":"1326:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15173,"initialValue":{"hexValue":"30","id":15172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1338:1:92","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1326:13:92"},"loopExpression":{"expression":{"id":15178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1356:3:92","subExpression":{"id":15177,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15171,"src":"1356:1:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15179,"nodeType":"ExpressionStatement","src":"1356:3:92"},"nodeType":"ForStatement","src":"1321:98:92"},{"expression":{"arguments":[{"id":15194,"name":"bytesStringTrimmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15164,"src":"1443:18:92","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15193,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1436:6:92","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":15192,"name":"string","nodeType":"ElementaryTypeName","src":"1436:6:92","typeDescriptions":{}}},"id":15195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1436:26:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":15133,"id":15196,"nodeType":"Return","src":"1429:33:92"}]},"id":15198,"implemented":true,"kind":"function","modifiers":[],"name":"parseStringData","nodeType":"FunctionDefinition","parameters":{"id":15130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15129,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":15198,"src":"988:14:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15128,"name":"bytes","nodeType":"ElementaryTypeName","src":"988:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"987:16:92"},"returnParameters":{"id":15133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15132,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15198,"src":"1026:13:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15131,"name":"string","nodeType":"ElementaryTypeName","src":"1026:6:92","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1025:15:92"},"scope":15356,"src":"963:506:92","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":15211,"nodeType":"Block","src":"1693:66:92","statements":[{"expression":{"arguments":[{"id":15207,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15200,"src":"1742:5:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"3430","id":15208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1749:2:92","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"}],"expression":{"id":15205,"name":"AddressStringUtil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11944,"src":"1710:17:92","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressStringUtil_$11944_$","typeString":"type(library AddressStringUtil)"}},"id":15206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toAsciiString","nodeType":"MemberAccess","referencedDeclaration":11915,"src":"1710:31:92","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (address,uint256) pure returns (string memory)"}},"id":15209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1710:42:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":15204,"id":15210,"nodeType":"Return","src":"1703:49:92"}]},"id":15212,"implemented":true,"kind":"function","modifiers":[],"name":"addressToName","nodeType":"FunctionDefinition","parameters":{"id":15201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15200,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":15212,"src":"1641:13:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15199,"name":"address","nodeType":"ElementaryTypeName","src":"1641:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1640:15:92"},"returnParameters":{"id":15204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15203,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15212,"src":"1678:13:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15202,"name":"string","nodeType":"ElementaryTypeName","src":"1678:6:92","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1677:15:92"},"scope":15356,"src":"1618:141:92","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":15225,"nodeType":"Block","src":"1990:65:92","statements":[{"expression":{"arguments":[{"id":15221,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15214,"src":"2039:5:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"36","id":15222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2046:1:92","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"}],"expression":{"id":15219,"name":"AddressStringUtil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11944,"src":"2007:17:92","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressStringUtil_$11944_$","typeString":"type(library AddressStringUtil)"}},"id":15220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toAsciiString","nodeType":"MemberAccess","referencedDeclaration":11915,"src":"2007:31:92","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (address,uint256) pure returns (string memory)"}},"id":15223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2007:41:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":15218,"id":15224,"nodeType":"Return","src":"2000:48:92"}]},"id":15226,"implemented":true,"kind":"function","modifiers":[],"name":"addressToSymbol","nodeType":"FunctionDefinition","parameters":{"id":15215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15214,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":15226,"src":"1938:13:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15213,"name":"address","nodeType":"ElementaryTypeName","src":"1938:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1937:15:92"},"returnParameters":{"id":15218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15217,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15226,"src":"1975:13:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15216,"name":"string","nodeType":"ElementaryTypeName","src":"1975:6:92","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1974:15:92"},"scope":15356,"src":"1913:142:92","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":15294,"nodeType":"Block","src":"2283:551:92","statements":[{"assignments":[15236,15238],"declarations":[{"constant":false,"id":15236,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":15294,"src":"2294:12:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15235,"name":"bool","nodeType":"ElementaryTypeName","src":"2294:4:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":15238,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":15294,"src":"2308:17:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15237,"name":"bytes","nodeType":"ElementaryTypeName","src":"2308:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":15246,"initialValue":{"arguments":[{"arguments":[{"id":15243,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15230,"src":"2369:8:92","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":15241,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2346:3:92","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2346:22:92","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":15244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2346:32:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":15239,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15228,"src":"2329:5:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"staticcall","nodeType":"MemberAccess","src":"2329:16:92","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":15245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2329:50:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2293:86:92"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2467:8:92","subExpression":{"id":15247,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15236,"src":"2468:7:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15249,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15238,"src":"2479:4:92","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2479:11:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":15251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2494:1:92","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2479:16:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2467:28:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15257,"nodeType":"IfStatement","src":"2463:68:92","trueBody":{"id":15256,"nodeType":"Block","src":"2497:34:92","statements":[{"expression":{"hexValue":"","id":15254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2518:2:92","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":15234,"id":15255,"nodeType":"Return","src":"2511:9:92"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15258,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15238,"src":"2589:4:92","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2589:11:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3332","id":15260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2604:2:92","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"2589:17:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15277,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15238,"src":"2733:4:92","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2733:11:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3634","id":15279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2747:2:92","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"2733:16:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15290,"nodeType":"IfStatement","src":"2729:80:92","trueBody":{"id":15289,"nodeType":"Block","src":"2751:58:92","statements":[{"expression":{"arguments":[{"id":15283,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15238,"src":"2783:4:92","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":15285,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2790:6:92","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":15284,"name":"string","nodeType":"ElementaryTypeName","src":"2790:6:92","typeDescriptions":{}}}],"id":15286,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2789:8:92","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":15281,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2772:3:92","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2772:10:92","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":15287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2772:26:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":15234,"id":15288,"nodeType":"Return","src":"2765:33:92"}]}},"id":15291,"nodeType":"IfStatement","src":"2585:224:92","trueBody":{"id":15276,"nodeType":"Block","src":"2608:115:92","statements":[{"assignments":[15263],"declarations":[{"constant":false,"id":15263,"mutability":"mutable","name":"decoded","nodeType":"VariableDeclaration","scope":15276,"src":"2622:15:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15262,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2622:7:92","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":15271,"initialValue":{"arguments":[{"id":15266,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15238,"src":"2651:4:92","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":15268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2658:7:92","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":15267,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2658:7:92","typeDescriptions":{}}}],"id":15269,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2657:9:92","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"}],"expression":{"id":15264,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2640:3:92","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2640:10:92","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":15270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2640:27:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2622:45:92"},{"expression":{"arguments":[{"id":15273,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15263,"src":"2704:7:92","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":15272,"name":"bytes32ToString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15127,"src":"2688:15:92","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_string_memory_ptr_$","typeString":"function (bytes32) pure returns (string memory)"}},"id":15274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2688:24:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":15234,"id":15275,"nodeType":"Return","src":"2681:31:92"}]}},{"expression":{"hexValue":"","id":15292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2825:2:92","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":15234,"id":15293,"nodeType":"Return","src":"2818:9:92"}]},"id":15295,"implemented":true,"kind":"function","modifiers":[],"name":"callAndParseStringReturn","nodeType":"FunctionDefinition","parameters":{"id":15231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15228,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":15295,"src":"2214:13:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15227,"name":"address","nodeType":"ElementaryTypeName","src":"2214:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15230,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":15295,"src":"2229:15:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":15229,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2229:6:92","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2213:32:92"},"returnParameters":{"id":15234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15233,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15295,"src":"2268:13:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15232,"name":"string","nodeType":"ElementaryTypeName","src":"2268:6:92","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2267:15:92"},"scope":15356,"src":"2180:654:92","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":15324,"nodeType":"Block","src":"3034:308:92","statements":[{"assignments":[15303],"declarations":[{"constant":false,"id":15303,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":15324,"src":"3098:20:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15302,"name":"string","nodeType":"ElementaryTypeName","src":"3098:6:92","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":15308,"initialValue":{"arguments":[{"id":15305,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15297,"src":"3146:5:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30783935643839623431","id":15306,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3153:10:92","typeDescriptions":{"typeIdentifier":"t_rational_2514000705_by_1","typeString":"int_const 2514000705"},"value":"0x95d89b41"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_2514000705_by_1","typeString":"int_const 2514000705"}],"id":15304,"name":"callAndParseStringReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15295,"src":"3121:24:92","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_string_memory_ptr_$","typeString":"function (address,bytes4) view returns (string memory)"}},"id":15307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3121:43:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"3098:66:92"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":15311,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15303,"src":"3184:6:92","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":15310,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3178:5:92","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":15309,"name":"bytes","nodeType":"ElementaryTypeName","src":"3178:5:92","typeDescriptions":{}}},"id":15312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3178:13:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3178:20:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":15314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3202:1:92","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3178:25:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15321,"nodeType":"IfStatement","src":"3174:139:92","trueBody":{"id":15320,"nodeType":"Block","src":"3205:108:92","statements":[{"expression":{"arguments":[{"id":15317,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15297,"src":"3296:5:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15316,"name":"addressToSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15226,"src":"3280:15:92","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$","typeString":"function (address) pure returns (string memory)"}},"id":15318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3280:22:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":15301,"id":15319,"nodeType":"Return","src":"3273:29:92"}]}},{"expression":{"id":15322,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15303,"src":"3329:6:92","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":15301,"id":15323,"nodeType":"Return","src":"3322:13:92"}]},"id":15325,"implemented":true,"kind":"function","modifiers":[],"name":"tokenSymbol","nodeType":"FunctionDefinition","parameters":{"id":15298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15297,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":15325,"src":"2981:13:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15296,"name":"address","nodeType":"ElementaryTypeName","src":"2981:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2980:15:92"},"returnParameters":{"id":15301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15300,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15325,"src":"3019:13:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15299,"name":"string","nodeType":"ElementaryTypeName","src":"3019:6:92","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3018:15:92"},"scope":15356,"src":"2960:382:92","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":15354,"nodeType":"Block","src":"3534:291:92","statements":[{"assignments":[15333],"declarations":[{"constant":false,"id":15333,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":15354,"src":"3596:18:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15332,"name":"string","nodeType":"ElementaryTypeName","src":"3596:6:92","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":15338,"initialValue":{"arguments":[{"id":15335,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15327,"src":"3642:5:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30783036666464653033","id":15336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3649:10:92","typeDescriptions":{"typeIdentifier":"t_rational_117300739_by_1","typeString":"int_const 117300739"},"value":"0x06fdde03"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_117300739_by_1","typeString":"int_const 117300739"}],"id":15334,"name":"callAndParseStringReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15295,"src":"3617:24:92","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_string_memory_ptr_$","typeString":"function (address,bytes4) view returns (string memory)"}},"id":15337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3617:43:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"3596:64:92"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":15341,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15333,"src":"3680:4:92","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":15340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3674:5:92","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":15339,"name":"bytes","nodeType":"ElementaryTypeName","src":"3674:5:92","typeDescriptions":{}}},"id":15342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3674:11:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3674:18:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":15344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3696:1:92","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3674:23:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15351,"nodeType":"IfStatement","src":"3670:128:92","trueBody":{"id":15350,"nodeType":"Block","src":"3699:99:92","statements":[{"expression":{"arguments":[{"id":15347,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15327,"src":"3781:5:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15346,"name":"addressToName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15212,"src":"3767:13:92","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$","typeString":"function (address) pure returns (string memory)"}},"id":15348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3767:20:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":15331,"id":15349,"nodeType":"Return","src":"3760:27:92"}]}},{"expression":{"id":15352,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15333,"src":"3814:4:92","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":15331,"id":15353,"nodeType":"Return","src":"3807:11:92"}]},"id":15355,"implemented":true,"kind":"function","modifiers":[],"name":"tokenName","nodeType":"FunctionDefinition","parameters":{"id":15328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15327,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":15355,"src":"3481:13:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15326,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:15:92"},"returnParameters":{"id":15331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15330,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15355,"src":"3519:13:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15329,"name":"string","nodeType":"ElementaryTypeName","src":"3519:6:92","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3518:15:92"},"scope":15356,"src":"3462:363:92","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":15357,"src":"303:3524:92"}],"src":"46:3782:92"},"id":92},"contracts/libraries/SqrtPriceMathPartial.sol":{"ast":{"absolutePath":"contracts/libraries/SqrtPriceMathPartial.sol","exportedSymbols":{"FixedPoint96":[868],"FullMath":[1041],"SqrtPriceMathPartial":[15481],"UnsafeMath":[2552]},"id":15482,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15358,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:93"},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/FullMath.sol","file":"@airdao/astra-cl-core/contracts/libraries/FullMath.sol","id":15359,"nodeType":"ImportDirective","scope":15482,"sourceUnit":1042,"src":"124:64:93","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/UnsafeMath.sol","file":"@airdao/astra-cl-core/contracts/libraries/UnsafeMath.sol","id":15360,"nodeType":"ImportDirective","scope":15482,"sourceUnit":2553,"src":"242:66:93","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol","file":"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol","id":15361,"nodeType":"ImportDirective","scope":15482,"sourceUnit":869,"src":"362:68:93","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":15362,"nodeType":"StructuredDocumentation","src":"432:215:93","text":"@title Functions based on Q64.96 sqrt price and liquidity\n @notice Exposes two functions from @airdao/astra-cl-core SqrtPriceMath\n that use square root of price as a Q64.96 and liquidity to compute deltas"},"fullyImplemented":true,"id":15481,"linearizedBaseContracts":[15481],"name":"SqrtPriceMathPartial","nodeType":"ContractDefinition","nodes":[{"body":{"id":15431,"nodeType":"Block","src":"1406:597:93","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":15378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15376,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"1420:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":15377,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15367,"src":"1436:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1420:29:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15387,"nodeType":"IfStatement","src":"1416:98:93","trueBody":{"expression":{"id":15385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":15379,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"1452:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15380,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15367,"src":"1467:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":15381,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1451:30:93","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":15382,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15367,"src":"1485:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15383,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"1500:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":15384,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1484:30:93","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"1451:63:93","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15386,"nodeType":"ExpressionStatement","src":"1451:63:93"}},{"assignments":[15389],"declarations":[{"constant":false,"id":15389,"mutability":"mutable","name":"numerator1","nodeType":"VariableDeclaration","scope":15431,"src":"1525:18:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15388,"name":"uint256","nodeType":"ElementaryTypeName","src":"1525:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15397,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":15392,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15369,"src":"1554:9:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":15391,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1546:7:93","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":15390,"name":"uint256","nodeType":"ElementaryTypeName","src":"1546:7:93","typeDescriptions":{}}},"id":15393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1546:18:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"expression":{"id":15394,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"1568:12:93","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$868_$","typeString":"type(library FixedPoint96)"}},"id":15395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"RESOLUTION","nodeType":"MemberAccess","referencedDeclaration":864,"src":"1568:23:93","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1546:45:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1525:66:93"},{"assignments":[15399],"declarations":[{"constant":false,"id":15399,"mutability":"mutable","name":"numerator2","nodeType":"VariableDeclaration","scope":15431,"src":"1601:18:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15398,"name":"uint256","nodeType":"ElementaryTypeName","src":"1601:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15403,"initialValue":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":15402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15400,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15367,"src":"1622:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":15401,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"1638:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1622:29:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"1601:50:93"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":15407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15405,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"1670:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1686:1:93","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1670:17:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":15404,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1662:7:93","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":15408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1662:26:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15409,"nodeType":"ExpressionStatement","src":"1662:26:93"},{"expression":{"condition":{"id":15410,"name":"roundUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15371,"src":"1718:7:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":15423,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15389,"src":"1942:10:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15424,"name":"numerator2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15399,"src":"1954:10:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15425,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15367,"src":"1966:13:93","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":15421,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"1926:8:93","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$1041_$","typeString":"type(library FullMath)"}},"id":15422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":997,"src":"1926:15:93","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":15426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1926:54:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":15427,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"1983:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1926:70:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1718:278:93","trueExpression":{"arguments":[{"arguments":[{"id":15415,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15389,"src":"1816:10:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15416,"name":"numerator2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15399,"src":"1828:10:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15417,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15367,"src":"1840:13:93","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":15413,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"1790:8:93","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$1041_$","typeString":"type(library FullMath)"}},"id":15414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":1040,"src":"1790:25:93","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":15418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1790:64:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15419,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"1876:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":15411,"name":"UnsafeMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2552,"src":"1744:10:93","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UnsafeMath_$2552_$","typeString":"type(library UnsafeMath)"}},"id":15412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divRoundingUp","nodeType":"MemberAccess","referencedDeclaration":2551,"src":"1744:24:93","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":15420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1744:163:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15375,"id":15430,"nodeType":"Return","src":"1699:297:93"}]},"documentation":{"id":15363,"nodeType":"StructuredDocumentation","src":"682:537:93","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 sqrtRatioAX96 A sqrt price\n @param sqrtRatioBX96 Another sqrt price\n @param liquidity The amount of usable liquidity\n @param roundUp Whether to round the amount up or down\n @return amount0 Amount of token0 required to cover a position of size liquidity between the two passed prices"},"id":15432,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount0Delta","nodeType":"FunctionDefinition","parameters":{"id":15372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15365,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":15432,"src":"1258:21:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15364,"name":"uint160","nodeType":"ElementaryTypeName","src":"1258:7:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15367,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":15432,"src":"1289:21:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15366,"name":"uint160","nodeType":"ElementaryTypeName","src":"1289:7:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15369,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":15432,"src":"1320:17:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":15368,"name":"uint128","nodeType":"ElementaryTypeName","src":"1320:7:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":15371,"mutability":"mutable","name":"roundUp","nodeType":"VariableDeclaration","scope":15432,"src":"1347:12:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15370,"name":"bool","nodeType":"ElementaryTypeName","src":"1347:4:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1248:117:93"},"returnParameters":{"id":15375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15374,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":15432,"src":"1389:15:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15373,"name":"uint256","nodeType":"ElementaryTypeName","src":"1389:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1388:17:93"},"scope":15481,"src":"1224:779:93","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":15479,"nodeType":"Block","src":"2640:350:93","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":15448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15446,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15435,"src":"2654:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":15447,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15437,"src":"2670:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2654:29:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15457,"nodeType":"IfStatement","src":"2650:98:93","trueBody":{"expression":{"id":15455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":15449,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15435,"src":"2686:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15450,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15437,"src":"2701:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":15451,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2685:30:93","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":15452,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15437,"src":"2719:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15453,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15435,"src":"2734:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":15454,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2718:30:93","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"src":"2685:63:93","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15456,"nodeType":"ExpressionStatement","src":"2685:63:93"}},{"expression":{"condition":{"id":15458,"name":"roundUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15441,"src":"2778:7:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":15470,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15439,"src":"2924:9:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":15473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15471,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15437,"src":"2935:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":15472,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15435,"src":"2951:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2935:29:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":15474,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"2966:12:93","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$868_$","typeString":"type(library FixedPoint96)"}},"id":15475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":867,"src":"2966:16:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15468,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"2908:8:93","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$1041_$","typeString":"type(library FullMath)"}},"id":15469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":997,"src":"2908:15:93","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":15476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2908:75:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2778:205:93","trueExpression":{"arguments":[{"id":15461,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15439,"src":"2830:9:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":15464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15462,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15437,"src":"2841:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":15463,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15435,"src":"2857:13:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"2841:29:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"expression":{"id":15465,"name":"FixedPoint96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"2872:12:93","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint96_$868_$","typeString":"type(library FixedPoint96)"}},"id":15466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Q96","nodeType":"MemberAccess","referencedDeclaration":867,"src":"2872:16:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15459,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"2804:8:93","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$1041_$","typeString":"type(library FullMath)"}},"id":15460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDivRoundingUp","nodeType":"MemberAccess","referencedDeclaration":1040,"src":"2804:25:93","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":15467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2804:85:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15445,"id":15478,"nodeType":"Return","src":"2759:224:93"}]},"documentation":{"id":15433,"nodeType":"StructuredDocumentation","src":"2009:444:93","text":"@notice Gets the amount1 delta between two prices\n @dev Calculates liquidity * (sqrt(upper) - sqrt(lower))\n @param sqrtRatioAX96 A sqrt price\n @param sqrtRatioBX96 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 token1 required to cover a position of size liquidity between the two passed prices"},"id":15480,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount1Delta","nodeType":"FunctionDefinition","parameters":{"id":15442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15435,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":15480,"src":"2492:21:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15434,"name":"uint160","nodeType":"ElementaryTypeName","src":"2492:7:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15437,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":15480,"src":"2523:21:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15436,"name":"uint160","nodeType":"ElementaryTypeName","src":"2523:7:93","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15439,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":15480,"src":"2554:17:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":15438,"name":"uint128","nodeType":"ElementaryTypeName","src":"2554:7:93","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":15441,"mutability":"mutable","name":"roundUp","nodeType":"VariableDeclaration","scope":15480,"src":"2581:12:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15440,"name":"bool","nodeType":"ElementaryTypeName","src":"2581:4:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2482:117:93"},"returnParameters":{"id":15445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15444,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":15480,"src":"2623:15:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15443,"name":"uint256","nodeType":"ElementaryTypeName","src":"2623:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2622:17:93"},"scope":15481,"src":"2458:532:93","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":15482,"src":"647:2345:93"}],"src":"45:2948:93"},"id":93},"contracts/libraries/TokenRatioSortOrder.sol":{"ast":{"absolutePath":"contracts/libraries/TokenRatioSortOrder.sol","exportedSymbols":{"TokenRatioSortOrder":[15505]},"id":15506,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":15483,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"32:23:94"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":15505,"linearizedBaseContracts":[15505],"name":"TokenRatioSortOrder","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":15486,"mutability":"constant","name":"NUMERATOR_MOST","nodeType":"VariableDeclaration","scope":15505,"src":"91:36:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":15484,"name":"int256","nodeType":"ElementaryTypeName","src":"91:6:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"333030","id":15485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"124:3:94","typeDescriptions":{"typeIdentifier":"t_rational_300_by_1","typeString":"int_const 300"},"value":"300"},"visibility":"internal"},{"constant":true,"id":15489,"mutability":"constant","name":"NUMERATOR_MORE","nodeType":"VariableDeclaration","scope":15505,"src":"133:36:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":15487,"name":"int256","nodeType":"ElementaryTypeName","src":"133:6:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"323030","id":15488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"166:3:94","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},"visibility":"internal"},{"constant":true,"id":15492,"mutability":"constant","name":"NUMERATOR","nodeType":"VariableDeclaration","scope":15505,"src":"175:31:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":15490,"name":"int256","nodeType":"ElementaryTypeName","src":"175:6:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313030","id":15491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"203:3:94","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"visibility":"internal"},{"constant":true,"id":15496,"mutability":"constant","name":"DENOMINATOR_MOST","nodeType":"VariableDeclaration","scope":15505,"src":"213:39:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":15493,"name":"int256","nodeType":"ElementaryTypeName","src":"213:6:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"id":15495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"248:4:94","subExpression":{"hexValue":"333030","id":15494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"249:3:94","typeDescriptions":{"typeIdentifier":"t_rational_300_by_1","typeString":"int_const 300"},"value":"300"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_300_by_1","typeString":"int_const -300"}},"visibility":"internal"},{"constant":true,"id":15500,"mutability":"constant","name":"DENOMINATOR_MORE","nodeType":"VariableDeclaration","scope":15505,"src":"258:39:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":15497,"name":"int256","nodeType":"ElementaryTypeName","src":"258:6:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"id":15499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"293:4:94","subExpression":{"hexValue":"323030","id":15498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"294:3:94","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_200_by_1","typeString":"int_const -200"}},"visibility":"internal"},{"constant":true,"id":15504,"mutability":"constant","name":"DENOMINATOR","nodeType":"VariableDeclaration","scope":15505,"src":"303:34:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":15501,"name":"int256","nodeType":"ElementaryTypeName","src":"303:6:94","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"id":15503,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"333:4:94","subExpression":{"hexValue":"313030","id":15502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"334:3:94","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_100_by_1","typeString":"int_const -100"}},"visibility":"internal"}],"scope":15506,"src":"57:283:94"}],"src":"32:309:94"},"id":94},"contracts/libraries/TransferHelper.sol":{"ast":{"absolutePath":"contracts/libraries/TransferHelper.sol","exportedSymbols":{"IERC20":[4183],"TransferHelper":[15676]},"id":15677,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15507,"literals":["solidity",">=","0.6",".0"],"nodeType":"PragmaDirective","src":"45:24:95"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":15508,"nodeType":"ImportDirective","scope":15677,"sourceUnit":4184,"src":"71:56:95","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":15676,"linearizedBaseContracts":[15676],"name":"TransferHelper","nodeType":"ContractDefinition","nodes":[{"body":{"id":15556,"nodeType":"Block","src":"652:239:95","statements":[{"assignments":[15521,15523],"declarations":[{"constant":false,"id":15521,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":15556,"src":"663:12:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15520,"name":"bool","nodeType":"ElementaryTypeName","src":"663:4:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":15523,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":15556,"src":"677:17:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15522,"name":"bytes","nodeType":"ElementaryTypeName","src":"677:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":15536,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"id":15528,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4183,"src":"745:6:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$4183_$","typeString":"type(contract IERC20)"}},"id":15529,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":4164,"src":"745:19:95","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function IERC20.transferFrom(address,address,uint256) returns (bool)"}},"id":15530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"745:28:95","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":15531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15513,"src":"775:4:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15515,"src":"781:2:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15533,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15517,"src":"785:5:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15526,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"722:3:95","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15527,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"722:22:95","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":15534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"722:69:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":15524,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15511,"src":"698:5:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"698:10:95","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":15535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"698:103:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"662:139:95"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15538,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15521,"src":"819:7:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15539,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15523,"src":"831:4:95","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"831:11:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":15541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"846:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"831:16:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":15545,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15523,"src":"862:4:95","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":15547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"869:4:95","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":15546,"name":"bool","nodeType":"ElementaryTypeName","src":"869:4:95","typeDescriptions":{}}}],"id":15548,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"868:6:95","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":15543,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"851:3:95","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15544,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"851:10:95","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":15549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"851:24:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"831:44:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":15551,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"830:46:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"819:57:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"535446","id":15553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"878:5:95","typeDescriptions":{"typeIdentifier":"t_stringliteral_a1c4b1d67db284650e7cfb49cb11ce76848206ad466478425bd3418f8bbb9a86","typeString":"literal_string \"STF\""},"value":"STF"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a1c4b1d67db284650e7cfb49cb11ce76848206ad466478425bd3418f8bbb9a86","typeString":"literal_string \"STF\""}],"id":15537,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"811:7:95","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"811:73:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15555,"nodeType":"ExpressionStatement","src":"811:73:95"}]},"documentation":{"id":15509,"nodeType":"StructuredDocumentation","src":"158:398:95","text":"@notice Transfers tokens from the targeted address to the given destination\n @notice Errors with 'STF' if transfer fails\n @param token The contract address of the token to be transferred\n @param from The originating address from which the tokens will be transferred\n @param to The destination address of the transfer\n @param value The amount to be transferred"},"id":15557,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","parameters":{"id":15518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15511,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":15557,"src":"587:13:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15510,"name":"address","nodeType":"ElementaryTypeName","src":"587:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15513,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":15557,"src":"602:12:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15512,"name":"address","nodeType":"ElementaryTypeName","src":"602:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15515,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":15557,"src":"616:10:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15514,"name":"address","nodeType":"ElementaryTypeName","src":"616:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15517,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":15557,"src":"628:13:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15516,"name":"uint256","nodeType":"ElementaryTypeName","src":"628:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"586:56:95"},"returnParameters":{"id":15519,"nodeType":"ParameterList","parameters":[],"src":"652:0:95"},"scope":15676,"src":"561:330:95","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15602,"nodeType":"Block","src":"1256:206:95","statements":[{"assignments":[15568,15570],"declarations":[{"constant":false,"id":15568,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":15602,"src":"1267:12:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15567,"name":"bool","nodeType":"ElementaryTypeName","src":"1267:4:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":15570,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":15602,"src":"1281:17:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15569,"name":"bytes","nodeType":"ElementaryTypeName","src":"1281:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":15582,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"id":15575,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4183,"src":"1336:6:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$4183_$","typeString":"type(contract IERC20)"}},"id":15576,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":4132,"src":"1336:15:95","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function IERC20.transfer(address,uint256) returns (bool)"}},"id":15577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1336:24:95","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":15578,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15562,"src":"1362:2:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15579,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15564,"src":"1366:5:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15573,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1313:3:95","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15574,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1313:22:95","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":15580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1313:59:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":15571,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15560,"src":"1302:5:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"1302:10:95","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":15581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1302:71:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1266:107:95"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15584,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15568,"src":"1391:7:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15585,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15570,"src":"1403:4:95","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1403:11:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":15587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1418:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1403:16:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":15591,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15570,"src":"1434:4:95","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":15593,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1441:4:95","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":15592,"name":"bool","nodeType":"ElementaryTypeName","src":"1441:4:95","typeDescriptions":{}}}],"id":15594,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1440:6:95","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":15589,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1423:3:95","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15590,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1423:10:95","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":15595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1423:24:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1403:44:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":15597,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1402:46:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1391:57:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5354","id":15599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1450:4:95","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e992d6a09e3feb7936717fa482f3a7086f18407e19b697f3153d17fd25870ca","typeString":"literal_string \"ST\""},"value":"ST"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8e992d6a09e3feb7936717fa482f3a7086f18407e19b697f3153d17fd25870ca","typeString":"literal_string \"ST\""}],"id":15583,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1383:7:95","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1383:72:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15601,"nodeType":"ExpressionStatement","src":"1383:72:95"}]},"documentation":{"id":15558,"nodeType":"StructuredDocumentation","src":"897:281:95","text":"@notice Transfers tokens from msg.sender to a recipient\n @dev Errors with ST if transfer fails\n @param token The contract address of the token which will be transferred\n @param to The recipient of the transfer\n @param value The value of the transfer"},"id":15603,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nodeType":"FunctionDefinition","parameters":{"id":15565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15560,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":15603,"src":"1205:13:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15559,"name":"address","nodeType":"ElementaryTypeName","src":"1205:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15562,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":15603,"src":"1220:10:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15561,"name":"address","nodeType":"ElementaryTypeName","src":"1220:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15564,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":15603,"src":"1232:13:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15563,"name":"uint256","nodeType":"ElementaryTypeName","src":"1232:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1204:42:95"},"returnParameters":{"id":15566,"nodeType":"ParameterList","parameters":[],"src":"1256:0:95"},"scope":15676,"src":"1183:279:95","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15648,"nodeType":"Block","src":"1887:205:95","statements":[{"assignments":[15614,15616],"declarations":[{"constant":false,"id":15614,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":15648,"src":"1898:12:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15613,"name":"bool","nodeType":"ElementaryTypeName","src":"1898:4:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":15616,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":15648,"src":"1912:17:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15615,"name":"bytes","nodeType":"ElementaryTypeName","src":"1912:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":15628,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"id":15621,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4183,"src":"1967:6:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$4183_$","typeString":"type(contract IERC20)"}},"id":15622,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":4152,"src":"1967:14:95","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function IERC20.approve(address,uint256) returns (bool)"}},"id":15623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1967:23:95","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":15624,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15608,"src":"1992:2:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15625,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15610,"src":"1996:5:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15619,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1944:3:95","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1944:22:95","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":15626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1944:58:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":15617,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15606,"src":"1933:5:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"1933:10:95","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":15627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1933:70:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1897:106:95"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15630,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15614,"src":"2021:7:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15631,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15616,"src":"2033:4:95","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2033:11:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":15633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2048:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2033:16:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":15637,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15616,"src":"2064:4:95","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":15639,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2071:4:95","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":15638,"name":"bool","nodeType":"ElementaryTypeName","src":"2071:4:95","typeDescriptions":{}}}],"id":15640,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2070:6:95","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":15635,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2053:3:95","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2053:10:95","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":15641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2053:24:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2033:44:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":15643,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2032:46:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2021:57:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5341","id":15645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2080:4:95","typeDescriptions":{"typeIdentifier":"t_stringliteral_0c382912095e7706ed01a66755a50c713445aceaf5a9168954498b03dd381faa","typeString":"literal_string \"SA\""},"value":"SA"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0c382912095e7706ed01a66755a50c713445aceaf5a9168954498b03dd381faa","typeString":"literal_string \"SA\""}],"id":15629,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2013:7:95","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2013:72:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15647,"nodeType":"ExpressionStatement","src":"2013:72:95"}]},"documentation":{"id":15604,"nodeType":"StructuredDocumentation","src":"1468:342:95","text":"@notice Approves the stipulated contract to spend the given allowance in the given token\n @dev Errors with 'SA' if transfer fails\n @param token The contract address of the token to be approved\n @param to The target of the approval\n @param value The amount of the given token the target will be allowed to spend"},"id":15649,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nodeType":"FunctionDefinition","parameters":{"id":15611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15606,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":15649,"src":"1836:13:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15605,"name":"address","nodeType":"ElementaryTypeName","src":"1836:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15608,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":15649,"src":"1851:10:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15607,"name":"address","nodeType":"ElementaryTypeName","src":"1851:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15610,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":15649,"src":"1863:13:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15609,"name":"uint256","nodeType":"ElementaryTypeName","src":"1863:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1835:42:95"},"returnParameters":{"id":15612,"nodeType":"ParameterList","parameters":[],"src":"1887:0:95"},"scope":15676,"src":"1815:277:95","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15674,"nodeType":"Block","src":"2343:104:95","statements":[{"assignments":[15658,null],"declarations":[{"constant":false,"id":15658,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":15674,"src":"2354:12:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15657,"name":"bool","nodeType":"ElementaryTypeName","src":"2354:4:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":15668,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":15665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2404:1:95","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":15664,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2394:9:95","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":15663,"name":"bytes","nodeType":"ElementaryTypeName","src":"2398:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":15666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2394:12:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":15659,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15652,"src":"2372:2:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2372:7:95","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":15662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":15661,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15654,"src":"2387:5:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2372:21:95","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":15667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2372:35:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2353:54:95"},{"expression":{"arguments":[{"id":15670,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15658,"src":"2425:7:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"535445","id":15671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2434:5:95","typeDescriptions":{"typeIdentifier":"t_stringliteral_48541fce89df928ec30caa1aed6c0cd94b8e2ef76b3c68b10b9a184ceadb93d4","typeString":"literal_string \"STE\""},"value":"STE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_48541fce89df928ec30caa1aed6c0cd94b8e2ef76b3c68b10b9a184ceadb93d4","typeString":"literal_string \"STE\""}],"id":15669,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2417:7:95","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2417:23:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15673,"nodeType":"ExpressionStatement","src":"2417:23:95"}]},"documentation":{"id":15650,"nodeType":"StructuredDocumentation","src":"2098:179:95","text":"@notice Transfers AMB to the recipient address\n @dev Fails with `STE`\n @param to The destination of the transfer\n @param value The value to be transferred"},"id":15675,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferAMB","nodeType":"FunctionDefinition","parameters":{"id":15655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15652,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":15675,"src":"2307:10:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15651,"name":"address","nodeType":"ElementaryTypeName","src":"2307:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15654,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":15675,"src":"2319:13:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15653,"name":"uint256","nodeType":"ElementaryTypeName","src":"2319:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2306:27:95"},"returnParameters":{"id":15656,"nodeType":"ParameterList","parameters":[],"src":"2343:0:95"},"scope":15676,"src":"2282:165:95","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":15677,"src":"129:2320:95"}],"src":"45:2405:95"},"id":95},"contracts/test/Base64Test.sol":{"ast":{"absolutePath":"contracts/test/Base64Test.sol","exportedSymbols":{"Base64":[6877],"Base64Test":[15717]},"id":15718,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":15678,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"39:23:96"},{"absolutePath":"base64-sol/base64.sol","file":"base64-sol/base64.sol","id":15679,"nodeType":"ImportDirective","scope":15718,"sourceUnit":6878,"src":"64:31:96","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":15717,"linearizedBaseContracts":[15717],"name":"Base64Test","nodeType":"ContractDefinition","nodes":[{"body":{"id":15691,"nodeType":"Block","src":"196:43:96","statements":[{"expression":{"arguments":[{"id":15688,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15681,"src":"227:4:96","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":15686,"name":"Base64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6877,"src":"213:6:96","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Base64_$6877_$","typeString":"type(library Base64)"}},"id":15687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":6876,"src":"213:13:96","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function (bytes memory) pure returns (string memory)"}},"id":15689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"213:19:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":15685,"id":15690,"nodeType":"Return","src":"206:26:96"}]},"functionSelector":"12496a1b","id":15692,"implemented":true,"kind":"function","modifiers":[],"name":"encode","nodeType":"FunctionDefinition","parameters":{"id":15682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15681,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":15692,"src":"139:17:96","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15680,"name":"bytes","nodeType":"ElementaryTypeName","src":"139:5:96","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"138:19:96"},"returnParameters":{"id":15685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15684,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15692,"src":"181:13:96","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15683,"name":"string","nodeType":"ElementaryTypeName","src":"181:6:96","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"180:15:96"},"scope":15717,"src":"123:116:96","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":15715,"nodeType":"Block","src":"324:113:96","statements":[{"assignments":[15700],"declarations":[{"constant":false,"id":15700,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":15715,"src":"334:17:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15699,"name":"uint256","nodeType":"ElementaryTypeName","src":"334:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15703,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15701,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"354:7:96","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"354:9:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"334:29:96"},{"expression":{"arguments":[{"id":15707,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15694,"src":"387:4:96","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":15704,"name":"Base64","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6877,"src":"373:6:96","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Base64_$6877_$","typeString":"type(library Base64)"}},"id":15706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":6876,"src":"373:13:96","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function (bytes memory) pure returns (string memory)"}},"id":15708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"373:19:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":15709,"nodeType":"ExpressionStatement","src":"373:19:96"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15710,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15700,"src":"409:9:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":15711,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"421:7:96","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"421:9:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"409:21:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15698,"id":15714,"nodeType":"Return","src":"402:28:96"}]},"functionSelector":"74b86d1e","id":15716,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfEncode","nodeType":"FunctionDefinition","parameters":{"id":15695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15694,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":15716,"src":"273:17:96","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15693,"name":"bytes","nodeType":"ElementaryTypeName","src":"273:5:96","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"272:19:96"},"returnParameters":{"id":15698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15697,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15716,"src":"315:7:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15696,"name":"uint256","nodeType":"ElementaryTypeName","src":"315:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"314:9:96"},"scope":15717,"src":"245:192:96","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":15718,"src":"97:342:96"}],"src":"39:401:96"},"id":96},"contracts/test/LiquidityAmountsTest.sol":{"ast":{"absolutePath":"contracts/test/LiquidityAmountsTest.sol","exportedSymbols":{"FixedPoint96":[868],"FullMath":[1041],"LiquidityAmounts":[12612],"LiquidityAmountsTest":[16035]},"id":16036,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":15719,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"39:23:97"},{"absolutePath":"contracts/libraries/LiquidityAmounts.sol","file":"../libraries/LiquidityAmounts.sol","id":15720,"nodeType":"ImportDirective","scope":16036,"sourceUnit":12613,"src":"64:43:97","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":16035,"linearizedBaseContracts":[16035],"name":"LiquidityAmountsTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":15738,"nodeType":"Block","src":"312:102:97","statements":[{"expression":{"arguments":[{"id":15733,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15722,"src":"369:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15734,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15724,"src":"384:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15735,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15726,"src":"399:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15731,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12612,"src":"329:16:97","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$12612_$","typeString":"type(library LiquidityAmounts)"}},"id":15732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getLiquidityForAmount0","nodeType":"MemberAccess","referencedDeclaration":12344,"src":"329:39:97","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":15736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"329:78:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":15730,"id":15737,"nodeType":"Return","src":"322:85:97"}]},"functionSelector":"67df6e89","id":15739,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityForAmount0","nodeType":"FunctionDefinition","parameters":{"id":15727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15722,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":15739,"src":"186:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15721,"name":"uint160","nodeType":"ElementaryTypeName","src":"186:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15724,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":15739,"src":"217:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15723,"name":"uint160","nodeType":"ElementaryTypeName","src":"217:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15726,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":15739,"src":"248:15:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15725,"name":"uint256","nodeType":"ElementaryTypeName","src":"248:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"176:93:97"},"returnParameters":{"id":15730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15729,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":15739,"src":"293:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":15728,"name":"uint128","nodeType":"ElementaryTypeName","src":"293:7:97","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"292:19:97"},"scope":16035,"src":"145:269:97","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":15768,"nodeType":"Block","src":"589:172:97","statements":[{"assignments":[15751],"declarations":[{"constant":false,"id":15751,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":15768,"src":"599:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15750,"name":"uint256","nodeType":"ElementaryTypeName","src":"599:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15754,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15752,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"619:7:97","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"619:9:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"599:29:97"},{"expression":{"arguments":[{"id":15758,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15741,"src":"678:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15759,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15743,"src":"693:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15760,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15745,"src":"708:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15755,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12612,"src":"638:16:97","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$12612_$","typeString":"type(library LiquidityAmounts)"}},"id":15757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getLiquidityForAmount0","nodeType":"MemberAccess","referencedDeclaration":12344,"src":"638:39:97","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":15761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"638:78:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":15762,"nodeType":"ExpressionStatement","src":"638:78:97"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15763,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15751,"src":"733:9:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":15764,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"745:7:97","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"745:9:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"733:21:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15749,"id":15767,"nodeType":"Return","src":"726:28:97"}]},"functionSelector":"d2246209","id":15769,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetLiquidityForAmount0","nodeType":"FunctionDefinition","parameters":{"id":15746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15741,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":15769,"src":"473:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15740,"name":"uint160","nodeType":"ElementaryTypeName","src":"473:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15743,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":15769,"src":"504:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15742,"name":"uint160","nodeType":"ElementaryTypeName","src":"504:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15745,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":15769,"src":"535:15:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15744,"name":"uint256","nodeType":"ElementaryTypeName","src":"535:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"463:93:97"},"returnParameters":{"id":15749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15748,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15769,"src":"580:7:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15747,"name":"uint256","nodeType":"ElementaryTypeName","src":"580:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"579:9:97"},"scope":16035,"src":"420:341:97","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":15787,"nodeType":"Block","src":"934:102:97","statements":[{"expression":{"arguments":[{"id":15782,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15771,"src":"991:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15783,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15773,"src":"1006:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15784,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15775,"src":"1021:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15780,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12612,"src":"951:16:97","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$12612_$","typeString":"type(library LiquidityAmounts)"}},"id":15781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getLiquidityForAmount1","nodeType":"MemberAccess","referencedDeclaration":12381,"src":"951:39:97","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":15785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"951:78:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":15779,"id":15786,"nodeType":"Return","src":"944:85:97"}]},"functionSelector":"08c0f795","id":15788,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityForAmount1","nodeType":"FunctionDefinition","parameters":{"id":15776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15771,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":15788,"src":"808:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15770,"name":"uint160","nodeType":"ElementaryTypeName","src":"808:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15773,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":15788,"src":"839:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15772,"name":"uint160","nodeType":"ElementaryTypeName","src":"839:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15775,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":15788,"src":"870:15:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15774,"name":"uint256","nodeType":"ElementaryTypeName","src":"870:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"798:93:97"},"returnParameters":{"id":15779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15778,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":15788,"src":"915:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":15777,"name":"uint128","nodeType":"ElementaryTypeName","src":"915:7:97","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"914:19:97"},"scope":16035,"src":"767:269:97","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":15817,"nodeType":"Block","src":"1211:172:97","statements":[{"assignments":[15800],"declarations":[{"constant":false,"id":15800,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":15817,"src":"1221:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15799,"name":"uint256","nodeType":"ElementaryTypeName","src":"1221:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15803,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15801,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1241:7:97","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1241:9:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1221:29:97"},{"expression":{"arguments":[{"id":15807,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15790,"src":"1300:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15808,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15792,"src":"1315:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15809,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15794,"src":"1330:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15804,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12612,"src":"1260:16:97","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$12612_$","typeString":"type(library LiquidityAmounts)"}},"id":15806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getLiquidityForAmount1","nodeType":"MemberAccess","referencedDeclaration":12381,"src":"1260:39:97","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":15810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1260:78:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":15811,"nodeType":"ExpressionStatement","src":"1260:78:97"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15812,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15800,"src":"1355:9:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":15813,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1367:7:97","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1367:9:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1355:21:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15798,"id":15816,"nodeType":"Return","src":"1348:28:97"}]},"functionSelector":"cb1b9496","id":15818,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetLiquidityForAmount1","nodeType":"FunctionDefinition","parameters":{"id":15795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15790,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":15818,"src":"1095:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15789,"name":"uint160","nodeType":"ElementaryTypeName","src":"1095:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15792,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":15818,"src":"1126:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15791,"name":"uint160","nodeType":"ElementaryTypeName","src":"1126:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15794,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":15818,"src":"1157:15:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15793,"name":"uint256","nodeType":"ElementaryTypeName","src":"1157:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1085:93:97"},"returnParameters":{"id":15798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15797,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15818,"src":"1202:7:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15796,"name":"uint256","nodeType":"ElementaryTypeName","src":"1202:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1201:9:97"},"scope":16035,"src":"1042:341:97","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":15842,"nodeType":"Block","src":"1611:125:97","statements":[{"expression":{"arguments":[{"id":15835,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15820,"src":"1668:12:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15836,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15822,"src":"1682:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15837,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15824,"src":"1697:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15838,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15826,"src":"1712:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15839,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15828,"src":"1721:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15833,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12612,"src":"1628:16:97","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$12612_$","typeString":"type(library LiquidityAmounts)"}},"id":15834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getLiquidityForAmounts","nodeType":"MemberAccess","referencedDeclaration":12462,"src":"1628:39:97","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint160_$_t_uint256_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint160,uint256,uint256) pure returns (uint128)"}},"id":15840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1628:101:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":15832,"id":15841,"nodeType":"Return","src":"1621:108:97"}]},"functionSelector":"6098fd4a","id":15843,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityForAmounts","nodeType":"FunctionDefinition","parameters":{"id":15829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15820,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":15843,"src":"1430:20:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15819,"name":"uint160","nodeType":"ElementaryTypeName","src":"1430:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15822,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":15843,"src":"1460:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15821,"name":"uint160","nodeType":"ElementaryTypeName","src":"1460:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15824,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":15843,"src":"1491:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15823,"name":"uint160","nodeType":"ElementaryTypeName","src":"1491:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15826,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":15843,"src":"1522:15:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15825,"name":"uint256","nodeType":"ElementaryTypeName","src":"1522:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15828,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":15843,"src":"1547:15:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15827,"name":"uint256","nodeType":"ElementaryTypeName","src":"1547:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1420:148:97"},"returnParameters":{"id":15832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15831,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":15843,"src":"1592:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":15830,"name":"uint128","nodeType":"ElementaryTypeName","src":"1592:7:97","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1591:19:97"},"scope":16035,"src":"1389:347:97","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":15878,"nodeType":"Block","src":"1966:195:97","statements":[{"assignments":[15859],"declarations":[{"constant":false,"id":15859,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":15878,"src":"1976:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15858,"name":"uint256","nodeType":"ElementaryTypeName","src":"1976:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15862,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15860,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1996:7:97","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1996:9:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1976:29:97"},{"expression":{"arguments":[{"id":15866,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15845,"src":"2055:12:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15867,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15847,"src":"2069:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15868,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15849,"src":"2084:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15869,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15851,"src":"2099:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15870,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15853,"src":"2108:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15863,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12612,"src":"2015:16:97","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$12612_$","typeString":"type(library LiquidityAmounts)"}},"id":15865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getLiquidityForAmounts","nodeType":"MemberAccess","referencedDeclaration":12462,"src":"2015:39:97","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint160_$_t_uint256_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint160,uint256,uint256) pure returns (uint128)"}},"id":15871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2015:101:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":15872,"nodeType":"ExpressionStatement","src":"2015:101:97"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15873,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15859,"src":"2133:9:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":15874,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"2145:7:97","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2145:9:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2133:21:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15857,"id":15877,"nodeType":"Return","src":"2126:28:97"}]},"functionSelector":"f7212103","id":15879,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetLiquidityForAmounts","nodeType":"FunctionDefinition","parameters":{"id":15854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15845,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":15879,"src":"1795:20:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15844,"name":"uint160","nodeType":"ElementaryTypeName","src":"1795:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15847,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":15879,"src":"1825:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15846,"name":"uint160","nodeType":"ElementaryTypeName","src":"1825:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15849,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":15879,"src":"1856:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15848,"name":"uint160","nodeType":"ElementaryTypeName","src":"1856:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15851,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":15879,"src":"1887:15:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15850,"name":"uint256","nodeType":"ElementaryTypeName","src":"1887:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15853,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":15879,"src":"1912:15:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15852,"name":"uint256","nodeType":"ElementaryTypeName","src":"1912:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1785:148:97"},"returnParameters":{"id":15857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15856,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15879,"src":"1957:7:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15855,"name":"uint256","nodeType":"ElementaryTypeName","src":"1957:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1956:9:97"},"scope":16035,"src":"1742:419:97","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":15897,"nodeType":"Block","src":"2334:104:97","statements":[{"expression":{"arguments":[{"id":15892,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15881,"src":"2391:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15893,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15883,"src":"2406:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15894,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15885,"src":"2421:9:97","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":15890,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12612,"src":"2351:16:97","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$12612_$","typeString":"type(library LiquidityAmounts)"}},"id":15891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0ForLiquidity","nodeType":"MemberAccess","referencedDeclaration":12504,"src":"2351:39:97","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":15895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2351:80:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15889,"id":15896,"nodeType":"Return","src":"2344:87:97"}]},"functionSelector":"6ac69a8e","id":15898,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount0ForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":15886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15881,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":15898,"src":"2208:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15880,"name":"uint160","nodeType":"ElementaryTypeName","src":"2208:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15883,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":15898,"src":"2239:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15882,"name":"uint160","nodeType":"ElementaryTypeName","src":"2239:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15885,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":15898,"src":"2270:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":15884,"name":"uint128","nodeType":"ElementaryTypeName","src":"2270:7:97","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2198:95:97"},"returnParameters":{"id":15889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15888,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":15898,"src":"2317:15:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15887,"name":"uint256","nodeType":"ElementaryTypeName","src":"2317:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2316:17:97"},"scope":16035,"src":"2167:271:97","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":15927,"nodeType":"Block","src":"2615:174:97","statements":[{"assignments":[15910],"declarations":[{"constant":false,"id":15910,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":15927,"src":"2625:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15909,"name":"uint256","nodeType":"ElementaryTypeName","src":"2625:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15913,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15911,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"2645:7:97","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2645:9:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2625:29:97"},{"expression":{"arguments":[{"id":15917,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15900,"src":"2704:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15918,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15902,"src":"2719:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15919,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15904,"src":"2734:9:97","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":15914,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12612,"src":"2664:16:97","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$12612_$","typeString":"type(library LiquidityAmounts)"}},"id":15916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount0ForLiquidity","nodeType":"MemberAccess","referencedDeclaration":12504,"src":"2664:39:97","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":15920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2664:80:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15921,"nodeType":"ExpressionStatement","src":"2664:80:97"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15922,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15910,"src":"2761:9:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":15923,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"2773:7:97","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2773:9:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2761:21:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15908,"id":15926,"nodeType":"Return","src":"2754:28:97"}]},"functionSelector":"29098462","id":15928,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetAmount0ForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":15905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15900,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":15928,"src":"2497:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15899,"name":"uint160","nodeType":"ElementaryTypeName","src":"2497:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15902,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":15928,"src":"2528:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15901,"name":"uint160","nodeType":"ElementaryTypeName","src":"2528:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15904,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":15928,"src":"2559:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":15903,"name":"uint128","nodeType":"ElementaryTypeName","src":"2559:7:97","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2487:95:97"},"returnParameters":{"id":15908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15907,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15928,"src":"2606:7:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15906,"name":"uint256","nodeType":"ElementaryTypeName","src":"2606:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2605:9:97"},"scope":16035,"src":"2444:345:97","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":15946,"nodeType":"Block","src":"2962:104:97","statements":[{"expression":{"arguments":[{"id":15941,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15930,"src":"3019:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15942,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15932,"src":"3034:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15943,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15934,"src":"3049:9:97","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":15939,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12612,"src":"2979:16:97","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$12612_$","typeString":"type(library LiquidityAmounts)"}},"id":15940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmount1ForLiquidity","nodeType":"MemberAccess","referencedDeclaration":12539,"src":"2979:39:97","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint160,uint160,uint128) pure returns (uint256)"}},"id":15944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2979:80:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15938,"id":15945,"nodeType":"Return","src":"2972:87:97"}]},"functionSelector":"29e24cb7","id":15947,"implemented":true,"kind":"function","modifiers":[],"name":"getAmount1ForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":15935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15930,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":15947,"src":"2836:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15929,"name":"uint160","nodeType":"ElementaryTypeName","src":"2836:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15932,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":15947,"src":"2867:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15931,"name":"uint160","nodeType":"ElementaryTypeName","src":"2867:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15934,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":15947,"src":"2898:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":15933,"name":"uint128","nodeType":"ElementaryTypeName","src":"2898:7:97","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2826:95:97"},"returnParameters":{"id":15938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15937,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":15947,"src":"2945:15:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15936,"name":"uint256","nodeType":"ElementaryTypeName","src":"2945:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2944:17:97"},"scope":16035,"src":"2795:271:97","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":15976,"nodeType":"Block","src":"3243:174:97","statements":[{"assignments":[15959],"declarations":[{"constant":false,"id":15959,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":15976,"src":"3253:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15958,"name":"uint256","nodeType":"ElementaryTypeName","src":"3253:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15962,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15960,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"3273:7:97","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3273:9:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3253:29:97"},{"expression":{"arguments":[{"id":15966,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15949,"src":"3332:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15967,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15951,"src":"3347:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15968,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15953,"src":"3362:9:97","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":15963,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12612,"src":"3292:16:97","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$12612_$","typeString":"type(library LiquidityAmounts)"}},"id":15965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getLiquidityForAmount1","nodeType":"MemberAccess","referencedDeclaration":12381,"src":"3292:39:97","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$","typeString":"function (uint160,uint160,uint256) pure returns (uint128)"}},"id":15969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3292:80:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":15970,"nodeType":"ExpressionStatement","src":"3292:80:97"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15971,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15959,"src":"3389:9:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":15972,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"3401:7:97","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3401:9:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3389:21:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15957,"id":15975,"nodeType":"Return","src":"3382:28:97"}]},"functionSelector":"bf1d2c71","id":15977,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetAmount1ForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":15954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15949,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":15977,"src":"3125:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15948,"name":"uint160","nodeType":"ElementaryTypeName","src":"3125:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15951,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":15977,"src":"3156:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15950,"name":"uint160","nodeType":"ElementaryTypeName","src":"3156:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15953,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":15977,"src":"3187:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":15952,"name":"uint128","nodeType":"ElementaryTypeName","src":"3187:7:97","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3115:95:97"},"returnParameters":{"id":15957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15956,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15977,"src":"3234:7:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15955,"name":"uint256","nodeType":"ElementaryTypeName","src":"3234:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3233:9:97"},"scope":16035,"src":"3072:345:97","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":16000,"nodeType":"Block","src":"3637:118:97","statements":[{"expression":{"arguments":[{"id":15994,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15979,"src":"3694:12:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15995,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15981,"src":"3708:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15996,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15983,"src":"3723:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":15997,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15985,"src":"3738:9:97","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":15992,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12612,"src":"3654:16:97","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$12612_$","typeString":"type(library LiquidityAmounts)"}},"id":15993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsForLiquidity","nodeType":"MemberAccess","referencedDeclaration":12611,"src":"3654:39:97","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint160,uint160,uint160,uint128) pure returns (uint256,uint256)"}},"id":15998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3654:94:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":15991,"id":15999,"nodeType":"Return","src":"3647:101:97"}]},"functionSelector":"c72e160b","id":16001,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountsForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":15986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15979,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":16001,"src":"3464:20:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15978,"name":"uint160","nodeType":"ElementaryTypeName","src":"3464:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15981,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":16001,"src":"3494:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15980,"name":"uint160","nodeType":"ElementaryTypeName","src":"3494:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15983,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":16001,"src":"3525:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":15982,"name":"uint160","nodeType":"ElementaryTypeName","src":"3525:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":15985,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":16001,"src":"3556:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":15984,"name":"uint128","nodeType":"ElementaryTypeName","src":"3556:7:97","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3454:125:97"},"returnParameters":{"id":15991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15988,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":16001,"src":"3603:15:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15987,"name":"uint256","nodeType":"ElementaryTypeName","src":"3603:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15990,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":16001,"src":"3620:15:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15989,"name":"uint256","nodeType":"ElementaryTypeName","src":"3620:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3602:34:97"},"scope":16035,"src":"3423:332:97","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":16033,"nodeType":"Block","src":"3962:188:97","statements":[{"assignments":[16015],"declarations":[{"constant":false,"id":16015,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":16033,"src":"3972:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16014,"name":"uint256","nodeType":"ElementaryTypeName","src":"3972:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16018,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16016,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"3992:7:97","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3992:9:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3972:29:97"},{"expression":{"arguments":[{"id":16022,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16003,"src":"4051:12:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":16023,"name":"sqrtRatioAX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16005,"src":"4065:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":16024,"name":"sqrtRatioBX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16007,"src":"4080:13:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":16025,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16009,"src":"4095:9:97","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":16019,"name":"LiquidityAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12612,"src":"4011:16:97","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LiquidityAmounts_$12612_$","typeString":"type(library LiquidityAmounts)"}},"id":16021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsForLiquidity","nodeType":"MemberAccess","referencedDeclaration":12611,"src":"4011:39:97","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint160,uint160,uint160,uint128) pure returns (uint256,uint256)"}},"id":16026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4011:94:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":16027,"nodeType":"ExpressionStatement","src":"4011:94:97"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16028,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16015,"src":"4122:9:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":16029,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"4134:7:97","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4134:9:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4122:21:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16013,"id":16032,"nodeType":"Return","src":"4115:28:97"}]},"functionSelector":"e26274bd","id":16034,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetAmountsForLiquidity","nodeType":"FunctionDefinition","parameters":{"id":16010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16003,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":16034,"src":"3814:20:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":16002,"name":"uint160","nodeType":"ElementaryTypeName","src":"3814:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":16005,"mutability":"mutable","name":"sqrtRatioAX96","nodeType":"VariableDeclaration","scope":16034,"src":"3844:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":16004,"name":"uint160","nodeType":"ElementaryTypeName","src":"3844:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":16007,"mutability":"mutable","name":"sqrtRatioBX96","nodeType":"VariableDeclaration","scope":16034,"src":"3875:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":16006,"name":"uint160","nodeType":"ElementaryTypeName","src":"3875:7:97","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":16009,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","scope":16034,"src":"3906:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":16008,"name":"uint128","nodeType":"ElementaryTypeName","src":"3906:7:97","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3804:125:97"},"returnParameters":{"id":16013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16012,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16034,"src":"3953:7:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16011,"name":"uint256","nodeType":"ElementaryTypeName","src":"3953:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3952:9:97"},"scope":16035,"src":"3761:389:97","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":16036,"src":"109:4043:97"}],"src":"39:4114:97"},"id":97},"contracts/test/MockTimeSwapRouter.sol":{"ast":{"absolutePath":"contracts/test/MockTimeSwapRouter.sol","exportedSymbols":{"BlockTimestamp":[7859],"BytesLib":[12063],"CallbackValidation":[12125],"IAstraCLPool":[110],"IAstraCLPoolActions":[248],"IAstraCLPoolDerivedState":[279],"IAstraCLPoolEvents":[398],"IAstraCLPoolImmutables":[438],"IAstraCLPoolOwnerActions":[464],"IAstraCLPoolState":[572],"IAstraCLSwapCallback":[152],"IERC20":[4183],"IERC20Permit":[2999],"IERC20PermitAllowed":[10444],"IMulticall":[9526],"IPeripheryImmutableState":[9751],"IPeripheryPayments":[9777],"IPeripheryPaymentsWithFee":[9810],"ISAMB":[10461],"ISelfPermit":[10045],"ISwapRouter":[10141],"LowGasSafeMath":[1223],"MockTimeSwapRouter":[16075],"Multicall":[8369],"Path":[14272],"PeripheryImmutableState":[8400],"PeripheryPayments":[8610],"PeripheryPaymentsWithFee":[8791],"PeripheryValidation":[8811],"PoolAddress":[14364],"SafeCast":[1293],"SelfPermit":[9070],"SwapRouter":[7845],"TickMath":[2536],"TransferHelper":[15676]},"id":16076,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":16037,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"39:23:98"},{"id":16038,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"63:19:98"},{"absolutePath":"contracts/SwapRouter.sol","file":"../SwapRouter.sol","id":16039,"nodeType":"ImportDirective","scope":16076,"sourceUnit":7846,"src":"84:27:98","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":16040,"name":"SwapRouter","nodeType":"UserDefinedTypeName","referencedDeclaration":7845,"src":"144:10:98","typeDescriptions":{"typeIdentifier":"t_contract$_SwapRouter_$7845","typeString":"contract SwapRouter"}},"id":16041,"nodeType":"InheritanceSpecifier","src":"144:10:98"}],"contractDependencies":[152,7845,7859,8369,8400,8610,8791,8811,9070,9526,9751,9777,9810,10045,10141],"contractKind":"contract","fullyImplemented":true,"id":16075,"linearizedBaseContracts":[16075,7845,9070,10045,8369,9526,8791,9810,8610,8811,8400,9751,9777,7859,10141,152],"name":"MockTimeSwapRouter","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":16043,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":16075,"src":"161:12:98","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16042,"name":"uint256","nodeType":"ElementaryTypeName","src":"161:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"body":{"id":16054,"nodeType":"Block","src":"253:2:98","statements":[]},"id":16055,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":16050,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16045,"src":"236:8:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16051,"name":"_SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16047,"src":"246:5:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":16052,"modifierName":{"id":16049,"name":"SwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7845,"src":"225:10:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapRouter_$7845_$","typeString":"type(contract SwapRouter)"}},"nodeType":"ModifierInvocation","src":"225:27:98"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":16048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16045,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":16055,"src":"192:16:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16044,"name":"address","nodeType":"ElementaryTypeName","src":"192:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16047,"mutability":"mutable","name":"_SAMB","nodeType":"VariableDeclaration","scope":16055,"src":"210:13:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16046,"name":"address","nodeType":"ElementaryTypeName","src":"210:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"191:33:98"},"returnParameters":{"id":16053,"nodeType":"ParameterList","parameters":[],"src":"253:0:98"},"scope":16075,"src":"180:75:98","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[7858],"body":{"id":16063,"nodeType":"Block","src":"329:28:98","statements":[{"expression":{"id":16061,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16043,"src":"346:4:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16060,"id":16062,"nodeType":"Return","src":"339:11:98"}]},"id":16064,"implemented":true,"kind":"function","modifiers":[],"name":"_blockTimestamp","nodeType":"FunctionDefinition","overrides":{"id":16057,"nodeType":"OverrideSpecifier","overrides":[],"src":"302:8:98"},"parameters":{"id":16056,"nodeType":"ParameterList","parameters":[],"src":"285:2:98"},"returnParameters":{"id":16060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16059,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16064,"src":"320:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16058,"name":"uint256","nodeType":"ElementaryTypeName","src":"320:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"319:9:98"},"scope":16075,"src":"261:96:98","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":16073,"nodeType":"Block","src":"404:29:98","statements":[{"expression":{"id":16071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16069,"name":"time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16043,"src":"414:4:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16070,"name":"_time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16066,"src":"421:5:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"414:12:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16072,"nodeType":"ExpressionStatement","src":"414:12:98"}]},"functionSelector":"3beb26c4","id":16074,"implemented":true,"kind":"function","modifiers":[],"name":"setTime","nodeType":"FunctionDefinition","parameters":{"id":16067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16066,"mutability":"mutable","name":"_time","nodeType":"VariableDeclaration","scope":16074,"src":"380:13:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16065,"name":"uint256","nodeType":"ElementaryTypeName","src":"380:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"379:15:98"},"returnParameters":{"id":16068,"nodeType":"ParameterList","parameters":[],"src":"404:0:98"},"scope":16075,"src":"363:70:98","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":16076,"src":"113:322:98"}],"src":"39:397:98"},"id":98},"contracts/test/NonfungiblePositionManagerPositionsGasTest.sol":{"ast":{"absolutePath":"contracts/test/NonfungiblePositionManagerPositionsGasTest.sol","exportedSymbols":{"IERC165":[3068],"IERC721":[5243],"IERC721Enumerable":[5274],"IERC721Metadata":[5301],"IERC721Permit":[9511],"INonfungiblePositionManager":[9720],"IPeripheryImmutableState":[9751],"IPeripheryPayments":[9777],"IPoolInitializer":[9829],"NonfungiblePositionManagerPositionsGasTest":[16115]},"id":16116,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":16077,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"39:23:99"},{"absolutePath":"contracts/interfaces/INonfungiblePositionManager.sol","file":"../interfaces/INonfungiblePositionManager.sol","id":16078,"nodeType":"ImportDirective","scope":16116,"sourceUnit":9721,"src":"64:55:99","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":16115,"linearizedBaseContracts":[16115],"name":"NonfungiblePositionManagerPositionsGasTest","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":16080,"mutability":"immutable","name":"nonfungiblePositionManager","nodeType":"VariableDeclaration","scope":16115,"src":"179:64:99","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":16079,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":9720,"src":"179:27:99","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"body":{"id":16089,"nodeType":"Block","src":"319:73:99","statements":[{"expression":{"id":16087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16085,"name":"nonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16080,"src":"329:26:99","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16086,"name":"_nonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16082,"src":"358:27:99","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},"src":"329:56:99","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},"id":16088,"nodeType":"ExpressionStatement","src":"329:56:99"}]},"id":16090,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":16083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16082,"mutability":"mutable","name":"_nonfungiblePositionManager","nodeType":"VariableDeclaration","scope":16090,"src":"262:55:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":16081,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":9720,"src":"262:27:99","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"}],"src":"261:57:99"},"returnParameters":{"id":16084,"nodeType":"ParameterList","parameters":[],"src":"319:0:99"},"scope":16115,"src":"250:142:99","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":16113,"nodeType":"Block","src":"478:139:99","statements":[{"assignments":[16098],"declarations":[{"constant":false,"id":16098,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":16113,"src":"488:17:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16097,"name":"uint256","nodeType":"ElementaryTypeName","src":"488:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16101,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16099,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"508:7:99","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"508:9:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"488:29:99"},{"expression":{"arguments":[{"id":16105,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16092,"src":"564:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16102,"name":"nonfungiblePositionManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16080,"src":"527:26:99","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},"id":16104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"positions","nodeType":"MemberAccess","referencedDeclaration":9611,"src":"527:36:99","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint96_$_t_address_$_t_address_$_t_address_$_t_uint24_$_t_int24_$_t_int24_$_t_uint128_$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$","typeString":"function (uint256) view external returns (uint96,address,address,address,uint24,int24,int24,uint128,uint256,uint256,uint128,uint128)"}},"id":16106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"527:45:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint96_$_t_address_$_t_address_$_t_address_$_t_uint24_$_t_int24_$_t_int24_$_t_uint128_$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$","typeString":"tuple(uint96,address,address,address,uint24,int24,int24,uint128,uint256,uint256,uint128,uint128)"}},"id":16107,"nodeType":"ExpressionStatement","src":"527:45:99"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16108,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16098,"src":"589:9:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":16109,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"601:7:99","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"601:9:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"589:21:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16096,"id":16112,"nodeType":"Return","src":"582:28:99"}]},"functionSelector":"994ea42c","id":16114,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfPositions","nodeType":"FunctionDefinition","parameters":{"id":16093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16092,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":16114,"src":"429:15:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16091,"name":"uint256","nodeType":"ElementaryTypeName","src":"429:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"428:17:99"},"returnParameters":{"id":16096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16095,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16114,"src":"469:7:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16094,"name":"uint256","nodeType":"ElementaryTypeName","src":"469:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"468:9:99"},"scope":16115,"src":"398:219:99","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":16116,"src":"121:498:99"}],"src":"39:581:99"},"id":99},"contracts/test/OracleTest.sol":{"ast":{"absolutePath":"contracts/test/OracleTest.sol","exportedSymbols":{"FullMath":[1041],"IAstraCLPool":[110],"IAstraCLPoolActions":[248],"IAstraCLPoolDerivedState":[279],"IAstraCLPoolEvents":[398],"IAstraCLPoolImmutables":[438],"IAstraCLPoolOwnerActions":[464],"IAstraCLPoolState":[572],"OracleLibrary":[14139],"OracleTest":[16294],"TickMath":[2536]},"id":16295,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":16117,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"39:23:100"},{"id":16118,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"63:19:100"},{"absolutePath":"contracts/libraries/OracleLibrary.sol","file":"../libraries/OracleLibrary.sol","id":16119,"nodeType":"ImportDirective","scope":16295,"sourceUnit":14140,"src":"84:40:100","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":16294,"linearizedBaseContracts":[16294],"name":"OracleTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":16136,"nodeType":"Block","src":"302:63:100","statements":[{"expression":{"arguments":[{"id":16132,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16121,"src":"341:4:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16133,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16123,"src":"347:10:100","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":16130,"name":"OracleLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14139,"src":"319:13:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleLibrary_$14139_$","typeString":"type(library OracleLibrary)"}},"id":16131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"consult","nodeType":"MemberAccess","referencedDeclaration":13685,"src":"319:21:100","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint32_$returns$_t_int24_$_t_uint128_$","typeString":"function (address,uint32) view returns (int24,uint128)"}},"id":16134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"319:39:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int24_$_t_uint128_$","typeString":"tuple(int24,uint128)"}},"functionReturnParameters":16129,"id":16135,"nodeType":"Return","src":"312:46:100"}]},"functionSelector":"82413489","id":16137,"implemented":true,"kind":"function","modifiers":[],"name":"consult","nodeType":"FunctionDefinition","parameters":{"id":16124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16121,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":16137,"src":"178:12:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16120,"name":"address","nodeType":"ElementaryTypeName","src":"178:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16123,"mutability":"mutable","name":"secondsAgo","nodeType":"VariableDeclaration","scope":16137,"src":"200:17:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":16122,"name":"uint32","nodeType":"ElementaryTypeName","src":"200:6:100","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"168:55:100"},"returnParameters":{"id":16129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16126,"mutability":"mutable","name":"arithmeticMeanTick","nodeType":"VariableDeclaration","scope":16137,"src":"245:24:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":16125,"name":"int24","nodeType":"ElementaryTypeName","src":"245:5:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":16128,"mutability":"mutable","name":"harmonicMeanLiquidity","nodeType":"VariableDeclaration","scope":16137,"src":"271:29:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":16127,"name":"uint128","nodeType":"ElementaryTypeName","src":"271:7:100","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"244:57:100"},"scope":16294,"src":"152:213:100","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":16160,"nodeType":"Block","src":"546:100:100","statements":[{"expression":{"id":16158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16150,"name":"quoteAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16148,"src":"556:11:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16153,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16139,"src":"599:4:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":16154,"name":"baseAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16141,"src":"605:10:100","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":16155,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16143,"src":"617:9:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16156,"name":"quoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16145,"src":"628:10:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16151,"name":"OracleLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14139,"src":"570:13:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleLibrary_$14139_$","typeString":"type(library OracleLibrary)"}},"id":16152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getQuoteAtTick","nodeType":"MemberAccess","referencedDeclaration":13783,"src":"570:28:100","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$_t_uint128_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (int24,uint128,address,address) pure returns (uint256)"}},"id":16157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"570:69:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"556:83:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16159,"nodeType":"ExpressionStatement","src":"556:83:100"}]},"functionSelector":"43c57a27","id":16161,"implemented":true,"kind":"function","modifiers":[],"name":"getQuoteAtTick","nodeType":"FunctionDefinition","parameters":{"id":16146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16139,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":16161,"src":"404:10:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":16138,"name":"int24","nodeType":"ElementaryTypeName","src":"404:5:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":16141,"mutability":"mutable","name":"baseAmount","nodeType":"VariableDeclaration","scope":16161,"src":"424:18:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":16140,"name":"uint128","nodeType":"ElementaryTypeName","src":"424:7:100","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":16143,"mutability":"mutable","name":"baseToken","nodeType":"VariableDeclaration","scope":16161,"src":"452:17:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16142,"name":"address","nodeType":"ElementaryTypeName","src":"452:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16145,"mutability":"mutable","name":"quoteToken","nodeType":"VariableDeclaration","scope":16161,"src":"479:18:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16144,"name":"address","nodeType":"ElementaryTypeName","src":"479:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"394:109:100"},"returnParameters":{"id":16149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16148,"mutability":"mutable","name":"quoteAmount","nodeType":"VariableDeclaration","scope":16161,"src":"525:19:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16147,"name":"uint256","nodeType":"ElementaryTypeName","src":"525:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"524:21:100"},"scope":16294,"src":"371:275:100","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":16187,"nodeType":"Block","src":"769:129:100","statements":[{"assignments":[16171],"declarations":[{"constant":false,"id":16171,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":16187,"src":"779:17:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16170,"name":"uint256","nodeType":"ElementaryTypeName","src":"779:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16174,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16172,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"799:7:100","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"799:9:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"779:29:100"},{"expression":{"arguments":[{"id":16178,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16163,"src":"840:4:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16179,"name":"period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16165,"src":"846:6:100","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":16175,"name":"OracleLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14139,"src":"818:13:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleLibrary_$14139_$","typeString":"type(library OracleLibrary)"}},"id":16177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"consult","nodeType":"MemberAccess","referencedDeclaration":13685,"src":"818:21:100","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint32_$returns$_t_int24_$_t_uint128_$","typeString":"function (address,uint32) view returns (int24,uint128)"}},"id":16180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"818:35:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int24_$_t_uint128_$","typeString":"tuple(int24,uint128)"}},"id":16181,"nodeType":"ExpressionStatement","src":"818:35:100"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16182,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16171,"src":"870:9:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":16183,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"882:7:100","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"882:9:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"870:21:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16169,"id":16186,"nodeType":"Return","src":"863:28:100"}]},"functionSelector":"bbe8f419","id":16188,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfConsult","nodeType":"FunctionDefinition","parameters":{"id":16166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16163,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":16188,"src":"710:12:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16162,"name":"address","nodeType":"ElementaryTypeName","src":"710:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16165,"mutability":"mutable","name":"period","nodeType":"VariableDeclaration","scope":16188,"src":"724:13:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":16164,"name":"uint32","nodeType":"ElementaryTypeName","src":"724:6:100","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"709:29:100"},"returnParameters":{"id":16169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16168,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16188,"src":"760:7:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16167,"name":"uint256","nodeType":"ElementaryTypeName","src":"760:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"759:9:100"},"scope":16294,"src":"681:217:100","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":16220,"nodeType":"Block","src":"1079:163:100","statements":[{"assignments":[16202],"declarations":[{"constant":false,"id":16202,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":16220,"src":"1089:17:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16201,"name":"uint256","nodeType":"ElementaryTypeName","src":"1089:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16205,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16203,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1109:7:100","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1109:9:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1089:29:100"},{"expression":{"arguments":[{"id":16209,"name":"tick","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16190,"src":"1157:4:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":16210,"name":"baseAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16192,"src":"1163:10:100","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":16211,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16194,"src":"1175:9:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16212,"name":"quoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16196,"src":"1186:10:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16206,"name":"OracleLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14139,"src":"1128:13:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleLibrary_$14139_$","typeString":"type(library OracleLibrary)"}},"id":16208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getQuoteAtTick","nodeType":"MemberAccess","referencedDeclaration":13783,"src":"1128:28:100","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int24_$_t_uint128_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (int24,uint128,address,address) pure returns (uint256)"}},"id":16213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1128:69:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16214,"nodeType":"ExpressionStatement","src":"1128:69:100"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16215,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16202,"src":"1214:9:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":16216,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1226:7:100","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1226:9:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1214:21:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16200,"id":16219,"nodeType":"Return","src":"1207:28:100"}]},"functionSelector":"6a816ff9","id":16221,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetQuoteAtTick","nodeType":"FunctionDefinition","parameters":{"id":16197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16190,"mutability":"mutable","name":"tick","nodeType":"VariableDeclaration","scope":16221,"src":"949:10:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":16189,"name":"int24","nodeType":"ElementaryTypeName","src":"949:5:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":16192,"mutability":"mutable","name":"baseAmount","nodeType":"VariableDeclaration","scope":16221,"src":"969:18:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":16191,"name":"uint128","nodeType":"ElementaryTypeName","src":"969:7:100","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":16194,"mutability":"mutable","name":"baseToken","nodeType":"VariableDeclaration","scope":16221,"src":"997:17:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16193,"name":"address","nodeType":"ElementaryTypeName","src":"997:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16196,"mutability":"mutable","name":"quoteToken","nodeType":"VariableDeclaration","scope":16221,"src":"1024:18:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16195,"name":"address","nodeType":"ElementaryTypeName","src":"1024:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"939:109:100"},"returnParameters":{"id":16200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16199,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16221,"src":"1070:7:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16198,"name":"uint256","nodeType":"ElementaryTypeName","src":"1070:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1069:9:100"},"scope":16294,"src":"904:338:100","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":16245,"nodeType":"Block","src":"1381:132:100","statements":[{"expression":{"id":16235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16230,"name":"secondsAgo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16226,"src":"1391:10:100","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16233,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16223,"src":"1449:4:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16231,"name":"OracleLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14139,"src":"1404:13:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleLibrary_$14139_$","typeString":"type(library OracleLibrary)"}},"id":16232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getOldestObservationSecondsAgo","nodeType":"MemberAccess","referencedDeclaration":13849,"src":"1404:44:100","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint32_$","typeString":"function (address) view returns (uint32)"}},"id":16234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1404:50:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1391:63:100","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":16236,"nodeType":"ExpressionStatement","src":"1391:63:100"},{"expression":{"id":16243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16237,"name":"currentTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16228,"src":"1464:16:100","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":16240,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1490:5:100","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":16241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"1490:15:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16239,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1483:6:100","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":16238,"name":"uint32","nodeType":"ElementaryTypeName","src":"1483:6:100","typeDescriptions":{}}},"id":16242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1483:23:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1464:42:100","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":16244,"nodeType":"ExpressionStatement","src":"1464:42:100"}]},"functionSelector":"e6c4fbe0","id":16246,"implemented":true,"kind":"function","modifiers":[],"name":"getOldestObservationSecondsAgo","nodeType":"FunctionDefinition","parameters":{"id":16224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16223,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":16246,"src":"1297:12:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16222,"name":"address","nodeType":"ElementaryTypeName","src":"1297:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1287:28:100"},"returnParameters":{"id":16229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16226,"mutability":"mutable","name":"secondsAgo","nodeType":"VariableDeclaration","scope":16246,"src":"1337:17:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":16225,"name":"uint32","nodeType":"ElementaryTypeName","src":"1337:6:100","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":16228,"mutability":"mutable","name":"currentTimestamp","nodeType":"VariableDeclaration","scope":16246,"src":"1356:23:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":16227,"name":"uint32","nodeType":"ElementaryTypeName","src":"1356:6:100","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1336:44:100"},"scope":16294,"src":"1248:265:100","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":16260,"nodeType":"Block","src":"1612:76:100","statements":[{"expression":{"arguments":[{"id":16257,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16248,"src":"1676:4:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16255,"name":"OracleLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14139,"src":"1629:13:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleLibrary_$14139_$","typeString":"type(library OracleLibrary)"}},"id":16256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getBlockStartingTickAndLiquidity","nodeType":"MemberAccess","referencedDeclaration":13992,"src":"1629:46:100","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_int24_$_t_uint128_$","typeString":"function (address) view returns (int24,uint128)"}},"id":16258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1629:52:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int24_$_t_uint128_$","typeString":"tuple(int24,uint128)"}},"functionReturnParameters":16254,"id":16259,"nodeType":"Return","src":"1622:59:100"}]},"functionSelector":"333b19a8","id":16261,"implemented":true,"kind":"function","modifiers":[],"name":"getBlockStartingTickAndLiquidity","nodeType":"FunctionDefinition","parameters":{"id":16249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16248,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":16261,"src":"1561:12:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16247,"name":"address","nodeType":"ElementaryTypeName","src":"1561:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1560:14:100"},"returnParameters":{"id":16254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16251,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16261,"src":"1596:5:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":16250,"name":"int24","nodeType":"ElementaryTypeName","src":"1596:5:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":16253,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16261,"src":"1603:7:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":16252,"name":"uint128","nodeType":"ElementaryTypeName","src":"1603:7:100","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1595:16:100"},"scope":16294,"src":"1519:169:100","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":16274,"nodeType":"Block","src":"1856:81:100","statements":[{"expression":{"arguments":[{"id":16271,"name":"observations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16264,"src":"1917:12:100","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WeightedTickData_$13997_memory_ptr_$dyn_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_WeightedTickData_$13997_memory_ptr_$dyn_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData memory[] memory"}],"expression":{"id":16269,"name":"OracleLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14139,"src":"1873:13:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleLibrary_$14139_$","typeString":"type(library OracleLibrary)"}},"id":16270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getWeightedArithmeticMeanTick","nodeType":"MemberAccess","referencedDeclaration":14076,"src":"1873:43:100","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_WeightedTickData_$13997_memory_ptr_$dyn_memory_ptr_$returns$_t_int24_$","typeString":"function (struct OracleLibrary.WeightedTickData memory[] memory) pure returns (int24)"}},"id":16272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1873:57:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"functionReturnParameters":16268,"id":16273,"nodeType":"Return","src":"1866:64:100"}]},"functionSelector":"ab34b0fc","id":16275,"implemented":true,"kind":"function","modifiers":[],"name":"getWeightedArithmeticMeanTick","nodeType":"FunctionDefinition","parameters":{"id":16265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16264,"mutability":"mutable","name":"observations","nodeType":"VariableDeclaration","scope":16275,"src":"1742:52:100","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WeightedTickData_$13997_memory_ptr_$dyn_memory_ptr","typeString":"struct OracleLibrary.WeightedTickData[]"},"typeName":{"baseType":{"id":16262,"name":"OracleLibrary.WeightedTickData","nodeType":"UserDefinedTypeName","referencedDeclaration":13997,"src":"1742:30:100","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedTickData_$13997_storage_ptr","typeString":"struct OracleLibrary.WeightedTickData"}},"id":16263,"nodeType":"ArrayTypeName","src":"1742:32:100","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WeightedTickData_$13997_storage_$dyn_storage_ptr","typeString":"struct OracleLibrary.WeightedTickData[]"}},"visibility":"internal"}],"src":"1732:68:100"},"returnParameters":{"id":16268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16267,"mutability":"mutable","name":"arithmeticMeanWeightedTick","nodeType":"VariableDeclaration","scope":16275,"src":"1822:32:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":16266,"name":"int24","nodeType":"ElementaryTypeName","src":"1822:5:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1821:34:100"},"scope":16294,"src":"1694:243:100","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":16292,"nodeType":"Block","src":"2058:68:100","statements":[{"expression":{"arguments":[{"id":16288,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16278,"src":"2105:6:100","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"id":16289,"name":"ticks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16281,"src":"2113:5:100","typeDescriptions":{"typeIdentifier":"t_array$_t_int24_$dyn_memory_ptr","typeString":"int24[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_array$_t_int24_$dyn_memory_ptr","typeString":"int24[] memory"}],"expression":{"id":16286,"name":"OracleLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14139,"src":"2075:13:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleLibrary_$14139_$","typeString":"type(library OracleLibrary)"}},"id":16287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getChainedPrice","nodeType":"MemberAccess","referencedDeclaration":14138,"src":"2075:29:100","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_int24_$dyn_memory_ptr_$returns$_t_int256_$","typeString":"function (address[] memory,int24[] memory) pure returns (int256)"}},"id":16290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2075:44:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":16285,"id":16291,"nodeType":"Return","src":"2068:51:100"}]},"functionSelector":"7059b38a","id":16293,"implemented":true,"kind":"function","modifiers":[],"name":"getChainedPrice","nodeType":"FunctionDefinition","parameters":{"id":16282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16278,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":16293,"src":"1968:23:100","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":16276,"name":"address","nodeType":"ElementaryTypeName","src":"1968:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16277,"nodeType":"ArrayTypeName","src":"1968:9:100","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":16281,"mutability":"mutable","name":"ticks","nodeType":"VariableDeclaration","scope":16293,"src":"1993:20:100","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int24_$dyn_memory_ptr","typeString":"int24[]"},"typeName":{"baseType":{"id":16279,"name":"int24","nodeType":"ElementaryTypeName","src":"1993:5:100","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":16280,"nodeType":"ArrayTypeName","src":"1993:7:100","typeDescriptions":{"typeIdentifier":"t_array$_t_int24_$dyn_storage_ptr","typeString":"int24[]"}},"visibility":"internal"}],"src":"1967:47:100"},"returnParameters":{"id":16285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16284,"mutability":"mutable","name":"syntheticTick","nodeType":"VariableDeclaration","scope":16293,"src":"2036:20:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":16283,"name":"int256","nodeType":"ElementaryTypeName","src":"2036:6:100","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2035:22:100"},"scope":16294,"src":"1943:183:100","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":16295,"src":"126:2002:100"}],"src":"39:2090:100"},"id":100},"contracts/test/PathTest.sol":{"ast":{"absolutePath":"contracts/test/PathTest.sol","exportedSymbols":{"BytesLib":[12063],"Path":[14272],"PathTest":[16378]},"id":16379,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":16296,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"39:23:101"},{"absolutePath":"contracts/libraries/Path.sol","file":"../libraries/Path.sol","id":16297,"nodeType":"ImportDirective","scope":16379,"sourceUnit":14273,"src":"64:31:101","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":16378,"linearizedBaseContracts":[16378],"name":"PathTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":16309,"nodeType":"Block","src":"193:51:101","statements":[{"expression":{"arguments":[{"id":16306,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16299,"src":"232:4:101","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16304,"name":"Path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14272,"src":"210:4:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Path_$14272_$","typeString":"type(library Path)"}},"id":16305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hasMultiplePools","nodeType":"MemberAccess","referencedDeclaration":14186,"src":"210:21:101","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory) pure returns (bool)"}},"id":16307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"210:27:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":16303,"id":16308,"nodeType":"Return","src":"203:34:101"}]},"functionSelector":"9dc1c391","id":16310,"implemented":true,"kind":"function","modifiers":[],"name":"hasMultiplePools","nodeType":"FunctionDefinition","parameters":{"id":16300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16299,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":16310,"src":"147:17:101","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16298,"name":"bytes","nodeType":"ElementaryTypeName","src":"147:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"146:19:101"},"returnParameters":{"id":16303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16302,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16310,"src":"187:4:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16301,"name":"bool","nodeType":"ElementaryTypeName","src":"187:4:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"186:6:101"},"scope":16378,"src":"121:123:101","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":16326,"nodeType":"Block","src":"359:50:101","statements":[{"expression":{"arguments":[{"id":16323,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16312,"src":"397:4:101","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16321,"name":"Path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14272,"src":"376:4:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Path_$14272_$","typeString":"type(library Path)"}},"id":16322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decodeFirstPool","nodeType":"MemberAccess","referencedDeclaration":14238,"src":"376:20:101","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$_t_address_$_t_uint24_$","typeString":"function (bytes memory) pure returns (address,address,uint24)"}},"id":16324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"376:26:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint24_$","typeString":"tuple(address,address,uint24)"}},"functionReturnParameters":16320,"id":16325,"nodeType":"Return","src":"369:33:101"}]},"functionSelector":"eadc682a","id":16327,"implemented":true,"kind":"function","modifiers":[],"name":"decodeFirstPool","nodeType":"FunctionDefinition","parameters":{"id":16313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16312,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":16327,"src":"275:17:101","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16311,"name":"bytes","nodeType":"ElementaryTypeName","src":"275:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"274:19:101"},"returnParameters":{"id":16320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16315,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":16327,"src":"315:14:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16314,"name":"address","nodeType":"ElementaryTypeName","src":"315:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16317,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":16327,"src":"331:14:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16316,"name":"address","nodeType":"ElementaryTypeName","src":"331:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16319,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":16327,"src":"347:10:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":16318,"name":"uint24","nodeType":"ElementaryTypeName","src":"347:6:101","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"314:44:101"},"scope":16378,"src":"250:159:101","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":16339,"nodeType":"Block","src":"491:47:101","statements":[{"expression":{"arguments":[{"id":16336,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16329,"src":"526:4:101","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16334,"name":"Path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14272,"src":"508:4:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Path_$14272_$","typeString":"type(library Path)"}},"id":16335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getFirstPool","nodeType":"MemberAccess","referencedDeclaration":14253,"src":"508:17:101","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":16337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"508:23:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":16333,"id":16338,"nodeType":"Return","src":"501:30:101"}]},"functionSelector":"7db6e246","id":16340,"implemented":true,"kind":"function","modifiers":[],"name":"getFirstPool","nodeType":"FunctionDefinition","parameters":{"id":16330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16329,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":16340,"src":"437:17:101","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16328,"name":"bytes","nodeType":"ElementaryTypeName","src":"437:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"436:19:101"},"returnParameters":{"id":16333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16332,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16340,"src":"477:12:101","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16331,"name":"bytes","nodeType":"ElementaryTypeName","src":"477:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"476:14:101"},"scope":16378,"src":"415:123:101","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":16352,"nodeType":"Block","src":"617:44:101","statements":[{"expression":{"arguments":[{"id":16349,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16342,"src":"649:4:101","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16347,"name":"Path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14272,"src":"634:4:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Path_$14272_$","typeString":"type(library Path)"}},"id":16348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"skipToken","nodeType":"MemberAccess","referencedDeclaration":14271,"src":"634:14:101","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":16350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"634:20:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":16346,"id":16351,"nodeType":"Return","src":"627:27:101"}]},"functionSelector":"bf8b627b","id":16353,"implemented":true,"kind":"function","modifiers":[],"name":"skipToken","nodeType":"FunctionDefinition","parameters":{"id":16343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16342,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":16353,"src":"563:17:101","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16341,"name":"bytes","nodeType":"ElementaryTypeName","src":"563:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"562:19:101"},"returnParameters":{"id":16346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16345,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16353,"src":"603:12:101","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16344,"name":"bytes","nodeType":"ElementaryTypeName","src":"603:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"602:14:101"},"scope":16378,"src":"544:117:101","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":16376,"nodeType":"Block","src":"770:120:101","statements":[{"assignments":[16361],"declarations":[{"constant":false,"id":16361,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":16376,"src":"780:17:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16360,"name":"uint256","nodeType":"ElementaryTypeName","src":"780:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16364,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16362,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"800:7:101","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"800:9:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"780:29:101"},{"expression":{"arguments":[{"id":16368,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16355,"src":"840:4:101","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16365,"name":"Path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14272,"src":"819:4:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Path_$14272_$","typeString":"type(library Path)"}},"id":16367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decodeFirstPool","nodeType":"MemberAccess","referencedDeclaration":14238,"src":"819:20:101","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$_t_address_$_t_uint24_$","typeString":"function (bytes memory) pure returns (address,address,uint24)"}},"id":16369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"819:26:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint24_$","typeString":"tuple(address,address,uint24)"}},"id":16370,"nodeType":"ExpressionStatement","src":"819:26:101"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16371,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16361,"src":"862:9:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":16372,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"874:7:101","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"874:9:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"862:21:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16359,"id":16375,"nodeType":"Return","src":"855:28:101"}]},"functionSelector":"d7c9ca0c","id":16377,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfDecodeFirstPool","nodeType":"FunctionDefinition","parameters":{"id":16356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16355,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","scope":16377,"src":"721:17:101","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16354,"name":"bytes","nodeType":"ElementaryTypeName","src":"721:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"720:19:101"},"returnParameters":{"id":16359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16358,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16377,"src":"761:7:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16357,"name":"uint256","nodeType":"ElementaryTypeName","src":"761:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"760:9:101"},"scope":16378,"src":"684:206:101","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":16379,"src":"97:795:101"}],"src":"39:854:101"},"id":101},"contracts/test/PeripheryImmutableStateTest.sol":{"ast":{"absolutePath":"contracts/test/PeripheryImmutableStateTest.sol","exportedSymbols":{"IPeripheryImmutableState":[9751],"PeripheryImmutableState":[8400],"PeripheryImmutableStateTest":[16396]},"id":16397,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16380,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"45:23:102"},{"absolutePath":"contracts/base/PeripheryImmutableState.sol","file":"../base/PeripheryImmutableState.sol","id":16381,"nodeType":"ImportDirective","scope":16397,"sourceUnit":8401,"src":"70:45:102","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":16382,"name":"PeripheryImmutableState","nodeType":"UserDefinedTypeName","referencedDeclaration":8400,"src":"157:23:102","typeDescriptions":{"typeIdentifier":"t_contract$_PeripheryImmutableState_$8400","typeString":"contract PeripheryImmutableState"}},"id":16383,"nodeType":"InheritanceSpecifier","src":"157:23:102"}],"contractDependencies":[8400,9751],"contractKind":"contract","fullyImplemented":true,"id":16396,"linearizedBaseContracts":[16396,8400,9751],"name":"PeripheryImmutableStateTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":16394,"nodeType":"Block","src":"273:2:102","statements":[]},"id":16395,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":16390,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16385,"src":"256:8:102","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16391,"name":"_SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16387,"src":"266:5:102","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":16392,"modifierName":{"id":16389,"name":"PeripheryImmutableState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8400,"src":"232:23:102","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PeripheryImmutableState_$8400_$","typeString":"type(contract PeripheryImmutableState)"}},"nodeType":"ModifierInvocation","src":"232:40:102"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":16388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16385,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","scope":16395,"src":"199:16:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16384,"name":"address","nodeType":"ElementaryTypeName","src":"199:7:102","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16387,"mutability":"mutable","name":"_SAMB","nodeType":"VariableDeclaration","scope":16395,"src":"217:13:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16386,"name":"address","nodeType":"ElementaryTypeName","src":"217:7:102","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"198:33:102"},"returnParameters":{"id":16393,"nodeType":"ParameterList","parameters":[],"src":"273:0:102"},"scope":16396,"src":"187:88:102","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":16397,"src":"117:160:102"}],"src":"45:233:102"},"id":102},"contracts/test/PoolAddressTest.sol":{"ast":{"absolutePath":"contracts/test/PoolAddressTest.sol","exportedSymbols":{"PoolAddress":[14364],"PoolAddressTest":[16470]},"id":16471,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":16398,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"39:23:103"},{"absolutePath":"contracts/libraries/PoolAddress.sol","file":"../libraries/PoolAddress.sol","id":16399,"nodeType":"ImportDirective","scope":16471,"sourceUnit":14365,"src":"64:38:103","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":16470,"linearizedBaseContracts":[16470],"name":"PoolAddressTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":16407,"nodeType":"Block","src":"198:55:103","statements":[{"expression":{"expression":{"id":16404,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14364,"src":"215:11:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$14364_$","typeString":"type(library PoolAddress)"}},"id":16405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"POOL_INIT_CODE_HASH","nodeType":"MemberAccess","referencedDeclaration":14278,"src":"215:31:103","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":16403,"id":16406,"nodeType":"Return","src":"208:38:103"}]},"functionSelector":"dc6fd8ab","id":16408,"implemented":true,"kind":"function","modifiers":[],"name":"POOL_INIT_CODE_HASH","nodeType":"FunctionDefinition","parameters":{"id":16400,"nodeType":"ParameterList","parameters":[],"src":"163:2:103"},"returnParameters":{"id":16403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16402,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16408,"src":"189:7:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16401,"name":"bytes32","nodeType":"ElementaryTypeName","src":"189:7:103","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"188:9:103"},"scope":16470,"src":"135:118:103","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":16432,"nodeType":"Block","src":"414:124:103","statements":[{"expression":{"arguments":[{"id":16423,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16410,"src":"458:7:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":16426,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16412,"src":"496:6:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16427,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16414,"src":"512:6:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16428,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16416,"src":"525:3:103","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":16424,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14364,"src":"467:11:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$14364_$","typeString":"type(library PoolAddress)"}},"id":16425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PoolKey","nodeType":"MemberAccess","referencedDeclaration":14285,"src":"467:19:103","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolKey_$14285_storage_ptr_$","typeString":"type(struct PoolAddress.PoolKey storage pointer)"}},"id":16429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee"],"nodeType":"FunctionCall","src":"467:63:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":16421,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14364,"src":"431:11:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$14364_$","typeString":"type(library PoolAddress)"}},"id":16422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":14363,"src":"431:26:103","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$14285_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":16430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"431:100:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":16420,"id":16431,"nodeType":"Return","src":"424:107:103"}]},"functionSelector":"8716c5ff","id":16433,"implemented":true,"kind":"function","modifiers":[],"name":"computeAddress","nodeType":"FunctionDefinition","parameters":{"id":16417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16410,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":16433,"src":"292:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16409,"name":"address","nodeType":"ElementaryTypeName","src":"292:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16412,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":16433,"src":"317:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16411,"name":"address","nodeType":"ElementaryTypeName","src":"317:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16414,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":16433,"src":"341:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16413,"name":"address","nodeType":"ElementaryTypeName","src":"341:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16416,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":16433,"src":"365:10:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":16415,"name":"uint24","nodeType":"ElementaryTypeName","src":"365:6:103","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"282:99:103"},"returnParameters":{"id":16420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16419,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16433,"src":"405:7:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16418,"name":"address","nodeType":"ElementaryTypeName","src":"405:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"404:9:103"},"scope":16470,"src":"259:279:103","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":16468,"nodeType":"Block","src":"711:194:103","statements":[{"assignments":[16447],"declarations":[{"constant":false,"id":16447,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":16468,"src":"721:17:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16446,"name":"uint256","nodeType":"ElementaryTypeName","src":"721:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16450,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16448,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"741:7:103","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"741:9:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"721:29:103"},{"expression":{"arguments":[{"id":16454,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16435,"src":"787:7:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":16457,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16437,"src":"825:6:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16458,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16439,"src":"841:6:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16459,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16441,"src":"854:3:103","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":16455,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14364,"src":"796:11:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$14364_$","typeString":"type(library PoolAddress)"}},"id":16456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PoolKey","nodeType":"MemberAccess","referencedDeclaration":14285,"src":"796:19:103","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolKey_$14285_storage_ptr_$","typeString":"type(struct PoolAddress.PoolKey storage pointer)"}},"id":16460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["token0","token1","fee"],"nodeType":"FunctionCall","src":"796:63:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolKey_$14285_memory_ptr","typeString":"struct PoolAddress.PoolKey memory"}],"expression":{"id":16451,"name":"PoolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14364,"src":"760:11:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolAddress_$14364_$","typeString":"type(library PoolAddress)"}},"id":16453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":14363,"src":"760:26:103","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_struct$_PoolKey_$14285_memory_ptr_$returns$_t_address_$","typeString":"function (address,struct PoolAddress.PoolKey memory) pure returns (address)"}},"id":16461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"760:100:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16462,"nodeType":"ExpressionStatement","src":"760:100:103"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16463,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16447,"src":"877:9:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":16464,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"889:7:103","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"889:9:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"877:21:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16445,"id":16467,"nodeType":"Return","src":"870:28:103"}]},"functionSelector":"cce34ec6","id":16469,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfComputeAddress","nodeType":"FunctionDefinition","parameters":{"id":16442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16435,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":16469,"src":"589:15:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16434,"name":"address","nodeType":"ElementaryTypeName","src":"589:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16437,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","scope":16469,"src":"614:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16436,"name":"address","nodeType":"ElementaryTypeName","src":"614:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16439,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","scope":16469,"src":"638:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16438,"name":"address","nodeType":"ElementaryTypeName","src":"638:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16441,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":16469,"src":"662:10:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":16440,"name":"uint24","nodeType":"ElementaryTypeName","src":"662:6:103","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"579:99:103"},"returnParameters":{"id":16445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16444,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16469,"src":"702:7:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16443,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"701:9:103"},"scope":16470,"src":"544:361:103","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":16471,"src":"104:803:103"}],"src":"39:869:103"},"id":103},"contracts/test/PoolTicksCounterTest.sol":{"ast":{"absolutePath":"contracts/test/PoolTicksCounterTest.sol","exportedSymbols":{"IAstraCLPool":[110],"IAstraCLPoolActions":[248],"IAstraCLPoolDerivedState":[279],"IAstraCLPoolEvents":[398],"IAstraCLPoolImmutables":[438],"IAstraCLPoolOwnerActions":[464],"IAstraCLPoolState":[572],"PoolTicksCounter":[14672],"PoolTicksCounterTest":[16496]},"id":16497,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","file":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","id":16472,"nodeType":"ImportDirective","scope":16497,"sourceUnit":111,"src":"98:69:104","symbolAliases":[],"unitAlias":""},{"id":16473,"literals":["solidity",">=","0.6",".0"],"nodeType":"PragmaDirective","src":"169:24:104"},{"absolutePath":"contracts/libraries/PoolTicksCounter.sol","file":"../libraries/PoolTicksCounter.sol","id":16474,"nodeType":"ImportDirective","scope":16497,"sourceUnit":14673,"src":"195:43:104","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":16496,"linearizedBaseContracts":[16496],"name":"PoolTicksCounterTest","nodeType":"ContractDefinition","nodes":[{"id":16477,"libraryName":{"id":16475,"name":"PoolTicksCounter","nodeType":"UserDefinedTypeName","referencedDeclaration":14672,"src":"282:16:104","typeDescriptions":{"typeIdentifier":"t_contract$_PoolTicksCounter_$14672","typeString":"library PoolTicksCounter"}},"nodeType":"UsingForDirective","src":"276:40:104","typeName":{"id":16476,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"303:12:104","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}}},{"body":{"id":16494,"nodeType":"Block","src":"499:80:104","statements":[{"expression":{"arguments":[{"id":16490,"name":"tickBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16481,"src":"550:10:104","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},{"id":16491,"name":"tickAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16483,"src":"562:9:104","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int24","typeString":"int24"},{"typeIdentifier":"t_int24","typeString":"int24"}],"expression":{"id":16488,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16479,"src":"516:4:104","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":16489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"countInitializedTicksCrossed","nodeType":"MemberAccess","referencedDeclaration":14642,"src":"516:33:104","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IAstraCLPool_$110_$_t_int24_$_t_int24_$returns$_t_uint32_$bound_to$_t_contract$_IAstraCLPool_$110_$","typeString":"function (contract IAstraCLPool,int24,int24) view returns (uint32)"}},"id":16492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"516:56:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":16487,"id":16493,"nodeType":"Return","src":"509:63:104"}]},"functionSelector":"4c5b941c","id":16495,"implemented":true,"kind":"function","modifiers":[],"name":"countInitializedTicksCrossed","nodeType":"FunctionDefinition","parameters":{"id":16484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16479,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":16495,"src":"369:17:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":16478,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"369:12:104","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"},{"constant":false,"id":16481,"mutability":"mutable","name":"tickBefore","nodeType":"VariableDeclaration","scope":16495,"src":"396:16:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":16480,"name":"int24","nodeType":"ElementaryTypeName","src":"396:5:104","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":16483,"mutability":"mutable","name":"tickAfter","nodeType":"VariableDeclaration","scope":16495,"src":"422:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":16482,"name":"int24","nodeType":"ElementaryTypeName","src":"422:5:104","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"359:84:104"},"returnParameters":{"id":16487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16486,"mutability":"mutable","name":"initializedTicksCrossed","nodeType":"VariableDeclaration","scope":16495,"src":"467:30:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":16485,"name":"uint32","nodeType":"ElementaryTypeName","src":"467:6:104","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"466:32:104"},"scope":16496,"src":"322:257:104","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":16497,"src":"240:341:104"}],"src":"98:484:104"},"id":104},"contracts/test/PositionValueTest.sol":{"ast":{"absolutePath":"contracts/test/PositionValueTest.sol","exportedSymbols":{"FixedPoint128":[858],"FixedPoint96":[868],"FullMath":[1041],"IAstraCLPool":[110],"IAstraCLPoolActions":[248],"IAstraCLPoolDerivedState":[279],"IAstraCLPoolEvents":[398],"IAstraCLPoolImmutables":[438],"IAstraCLPoolOwnerActions":[464],"IAstraCLPoolState":[572],"IERC165":[3068],"IERC721":[5243],"IERC721Enumerable":[5274],"IERC721Metadata":[5301],"IERC721Permit":[9511],"INonfungiblePositionManager":[9720],"IPeripheryImmutableState":[9751],"IPeripheryPayments":[9777],"IPoolInitializer":[9829],"LiquidityAmounts":[12612],"LiquidityMath":[1093],"LowGasSafeMath":[1223],"PoolAddress":[14364],"PositionKey":[14697],"PositionValue":[15041],"PositionValueTest":[16648],"SafeCast":[1293],"Tick":[1745],"TickMath":[2536]},"id":16649,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":16498,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"39:23:105"},{"absolutePath":"contracts/libraries/PositionValue.sol","file":"../libraries/PositionValue.sol","id":16499,"nodeType":"ImportDirective","scope":16649,"sourceUnit":15042,"src":"64:40:105","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/INonfungiblePositionManager.sol","file":"../interfaces/INonfungiblePositionManager.sol","id":16500,"nodeType":"ImportDirective","scope":16649,"sourceUnit":9721,"src":"105:55:105","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":16648,"linearizedBaseContracts":[16648],"name":"PositionValueTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":16520,"nodeType":"Block","src":"369:71:105","statements":[{"expression":{"arguments":[{"id":16515,"name":"nft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16502,"src":"406:3:105","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},{"id":16516,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16504,"src":"411:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16517,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16506,"src":"420:12:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":16513,"name":"PositionValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15041,"src":"386:13:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PositionValue_$15041_$","typeString":"type(library PositionValue)"}},"id":16514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"total","nodeType":"MemberAccess","referencedDeclaration":14750,"src":"386:19:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_INonfungiblePositionManager_$9720_$_t_uint256_$_t_uint160_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract INonfungiblePositionManager,uint256,uint160) view returns (uint256,uint256)"}},"id":16518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"386:47:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":16512,"id":16519,"nodeType":"Return","src":"379:54:105"}]},"functionSelector":"5b6dc092","id":16521,"implemented":true,"kind":"function","modifiers":[],"name":"total","nodeType":"FunctionDefinition","parameters":{"id":16507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16502,"mutability":"mutable","name":"nft","nodeType":"VariableDeclaration","scope":16521,"src":"219:31:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":16501,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":9720,"src":"219:27:105","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":16504,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":16521,"src":"260:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16503,"name":"uint256","nodeType":"ElementaryTypeName","src":"260:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16506,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":16521,"src":"285:20:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":16505,"name":"uint160","nodeType":"ElementaryTypeName","src":"285:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"209:102:105"},"returnParameters":{"id":16512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16509,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":16521,"src":"335:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16508,"name":"uint256","nodeType":"ElementaryTypeName","src":"335:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16511,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":16521,"src":"352:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16510,"name":"uint256","nodeType":"ElementaryTypeName","src":"352:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"334:34:105"},"scope":16648,"src":"195:245:105","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":16541,"nodeType":"Block","src":"624:75:105","statements":[{"expression":{"arguments":[{"id":16536,"name":"nft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16523,"src":"665:3:105","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},{"id":16537,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16525,"src":"670:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16538,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16527,"src":"679:12:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":16534,"name":"PositionValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15041,"src":"641:13:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PositionValue_$15041_$","typeString":"type(library PositionValue)"}},"id":16535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":14790,"src":"641:23:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_INonfungiblePositionManager_$9720_$_t_uint256_$_t_uint160_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract INonfungiblePositionManager,uint256,uint160) view returns (uint256,uint256)"}},"id":16539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"641:51:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":16533,"id":16540,"nodeType":"Return","src":"634:58:105"}]},"functionSelector":"22635397","id":16542,"implemented":true,"kind":"function","modifiers":[],"name":"principal","nodeType":"FunctionDefinition","parameters":{"id":16528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16523,"mutability":"mutable","name":"nft","nodeType":"VariableDeclaration","scope":16542,"src":"474:31:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":16522,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":9720,"src":"474:27:105","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":16525,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":16542,"src":"515:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16524,"name":"uint256","nodeType":"ElementaryTypeName","src":"515:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16527,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":16542,"src":"540:20:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":16526,"name":"uint160","nodeType":"ElementaryTypeName","src":"540:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"464:102:105"},"returnParameters":{"id":16533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16530,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":16542,"src":"590:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16529,"name":"uint256","nodeType":"ElementaryTypeName","src":"590:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16532,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":16542,"src":"607:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16531,"name":"uint256","nodeType":"ElementaryTypeName","src":"607:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"589:34:105"},"scope":16648,"src":"446:253:105","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":16559,"nodeType":"Block","src":"848:56:105","statements":[{"expression":{"arguments":[{"id":16555,"name":"nft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16544,"src":"884:3:105","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},{"id":16556,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16546,"src":"889:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16553,"name":"PositionValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15041,"src":"865:13:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PositionValue_$15041_$","typeString":"type(library PositionValue)"}},"id":16554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fees","nodeType":"MemberAccess","referencedDeclaration":14865,"src":"865:18:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_INonfungiblePositionManager_$9720_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract INonfungiblePositionManager,uint256) view returns (uint256,uint256)"}},"id":16557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"865:32:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":16552,"id":16558,"nodeType":"Return","src":"858:39:105"}]},"functionSelector":"263a5362","id":16560,"implemented":true,"kind":"function","modifiers":[],"name":"fees","nodeType":"FunctionDefinition","parameters":{"id":16547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16544,"mutability":"mutable","name":"nft","nodeType":"VariableDeclaration","scope":16560,"src":"728:31:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":16543,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":9720,"src":"728:27:105","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":16546,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":16560,"src":"769:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16545,"name":"uint256","nodeType":"ElementaryTypeName","src":"769:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"718:72:105"},"returnParameters":{"id":16552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16549,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","scope":16560,"src":"814:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16548,"name":"uint256","nodeType":"ElementaryTypeName","src":"814:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16551,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","scope":16560,"src":"831:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16550,"name":"uint256","nodeType":"ElementaryTypeName","src":"831:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"813:34:105"},"scope":16648,"src":"705:199:105","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":16589,"nodeType":"Block","src":"1062:141:105","statements":[{"assignments":[16572],"declarations":[{"constant":false,"id":16572,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":16589,"src":"1072:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16571,"name":"uint256","nodeType":"ElementaryTypeName","src":"1072:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16575,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16573,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1092:7:105","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1092:9:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1072:29:105"},{"expression":{"arguments":[{"id":16579,"name":"nft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16562,"src":"1131:3:105","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},{"id":16580,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16564,"src":"1136:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16581,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16566,"src":"1145:12:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":16576,"name":"PositionValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15041,"src":"1111:13:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PositionValue_$15041_$","typeString":"type(library PositionValue)"}},"id":16578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"total","nodeType":"MemberAccess","referencedDeclaration":14750,"src":"1111:19:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_INonfungiblePositionManager_$9720_$_t_uint256_$_t_uint160_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract INonfungiblePositionManager,uint256,uint160) view returns (uint256,uint256)"}},"id":16582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1111:47:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":16583,"nodeType":"ExpressionStatement","src":"1111:47:105"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16584,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16572,"src":"1175:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":16585,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1187:7:105","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1187:9:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1175:21:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16570,"id":16588,"nodeType":"Return","src":"1168:28:105"}]},"functionSelector":"90594f91","id":16590,"implemented":true,"kind":"function","modifiers":[],"name":"totalGas","nodeType":"FunctionDefinition","parameters":{"id":16567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16562,"mutability":"mutable","name":"nft","nodeType":"VariableDeclaration","scope":16590,"src":"937:31:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":16561,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":9720,"src":"937:27:105","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":16564,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":16590,"src":"978:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16563,"name":"uint256","nodeType":"ElementaryTypeName","src":"978:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16566,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":16590,"src":"1003:20:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":16565,"name":"uint160","nodeType":"ElementaryTypeName","src":"1003:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"927:102:105"},"returnParameters":{"id":16570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16569,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16590,"src":"1053:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16568,"name":"uint256","nodeType":"ElementaryTypeName","src":"1053:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1052:9:105"},"scope":16648,"src":"910:293:105","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":16619,"nodeType":"Block","src":"1365:145:105","statements":[{"assignments":[16602],"declarations":[{"constant":false,"id":16602,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":16619,"src":"1375:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16601,"name":"uint256","nodeType":"ElementaryTypeName","src":"1375:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16605,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16603,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1395:7:105","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1395:9:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1375:29:105"},{"expression":{"arguments":[{"id":16609,"name":"nft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16592,"src":"1438:3:105","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},{"id":16610,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16594,"src":"1443:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16611,"name":"sqrtRatioX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16596,"src":"1452:12:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"id":16606,"name":"PositionValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15041,"src":"1414:13:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PositionValue_$15041_$","typeString":"type(library PositionValue)"}},"id":16608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":14790,"src":"1414:23:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_INonfungiblePositionManager_$9720_$_t_uint256_$_t_uint160_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract INonfungiblePositionManager,uint256,uint160) view returns (uint256,uint256)"}},"id":16612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1414:51:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":16613,"nodeType":"ExpressionStatement","src":"1414:51:105"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16614,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16602,"src":"1482:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":16615,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1494:7:105","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1494:9:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1482:21:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16600,"id":16618,"nodeType":"Return","src":"1475:28:105"}]},"functionSelector":"ee4e9ba3","id":16620,"implemented":true,"kind":"function","modifiers":[],"name":"principalGas","nodeType":"FunctionDefinition","parameters":{"id":16597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16592,"mutability":"mutable","name":"nft","nodeType":"VariableDeclaration","scope":16620,"src":"1240:31:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":16591,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":9720,"src":"1240:27:105","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":16594,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":16620,"src":"1281:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16593,"name":"uint256","nodeType":"ElementaryTypeName","src":"1281:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16596,"mutability":"mutable","name":"sqrtRatioX96","nodeType":"VariableDeclaration","scope":16620,"src":"1306:20:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":16595,"name":"uint160","nodeType":"ElementaryTypeName","src":"1306:7:105","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1230:102:105"},"returnParameters":{"id":16600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16599,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16620,"src":"1356:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16598,"name":"uint256","nodeType":"ElementaryTypeName","src":"1356:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1355:9:105"},"scope":16648,"src":"1209:301:105","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":16646,"nodeType":"Block","src":"1615:126:105","statements":[{"assignments":[16630],"declarations":[{"constant":false,"id":16630,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":16646,"src":"1625:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16629,"name":"uint256","nodeType":"ElementaryTypeName","src":"1625:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16633,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16631,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1645:7:105","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1645:9:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1625:29:105"},{"expression":{"arguments":[{"id":16637,"name":"nft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16622,"src":"1683:3:105","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},{"id":16638,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16624,"src":"1688:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16634,"name":"PositionValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15041,"src":"1664:13:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PositionValue_$15041_$","typeString":"type(library PositionValue)"}},"id":16636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fees","nodeType":"MemberAccess","referencedDeclaration":14865,"src":"1664:18:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_INonfungiblePositionManager_$9720_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract INonfungiblePositionManager,uint256) view returns (uint256,uint256)"}},"id":16639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1664:32:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":16640,"nodeType":"ExpressionStatement","src":"1664:32:105"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16641,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16630,"src":"1713:9:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":16642,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1725:7:105","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1725:9:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1713:21:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16628,"id":16645,"nodeType":"Return","src":"1706:28:105"}]},"functionSelector":"3803770c","id":16647,"implemented":true,"kind":"function","modifiers":[],"name":"feesGas","nodeType":"FunctionDefinition","parameters":{"id":16625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16622,"mutability":"mutable","name":"nft","nodeType":"VariableDeclaration","scope":16647,"src":"1533:31:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"},"typeName":{"id":16621,"name":"INonfungiblePositionManager","nodeType":"UserDefinedTypeName","referencedDeclaration":9720,"src":"1533:27:105","typeDescriptions":{"typeIdentifier":"t_contract$_INonfungiblePositionManager_$9720","typeString":"contract INonfungiblePositionManager"}},"visibility":"internal"},{"constant":false,"id":16624,"mutability":"mutable","name":"tokenId","nodeType":"VariableDeclaration","scope":16647,"src":"1566:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16623,"name":"uint256","nodeType":"ElementaryTypeName","src":"1566:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1532:50:105"},"returnParameters":{"id":16628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16627,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16647,"src":"1606:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16626,"name":"uint256","nodeType":"ElementaryTypeName","src":"1606:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1605:9:105"},"scope":16648,"src":"1516:225:105","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":16649,"src":"162:1581:105"}],"src":"39:1705:105"},"id":105},"contracts/test/SelfPermitTest.sol":{"ast":{"absolutePath":"contracts/test/SelfPermitTest.sol","exportedSymbols":{"IERC20":[4183],"IERC20Permit":[2999],"IERC20PermitAllowed":[10444],"ISelfPermit":[10045],"SelfPermit":[9070],"SelfPermitTest":[16655]},"id":16656,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":16650,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"39:23:106"},{"absolutePath":"contracts/base/SelfPermit.sol","file":"../base/SelfPermit.sol","id":16651,"nodeType":"ImportDirective","scope":16656,"sourceUnit":9071,"src":"64:32:106","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":16653,"name":"SelfPermit","nodeType":"UserDefinedTypeName","referencedDeclaration":9070,"src":"170:10:106","typeDescriptions":{"typeIdentifier":"t_contract$_SelfPermit_$9070","typeString":"contract SelfPermit"}},"id":16654,"nodeType":"InheritanceSpecifier","src":"170:10:106"}],"contractDependencies":[9070,10045],"contractKind":"contract","documentation":{"id":16652,"nodeType":"StructuredDocumentation","src":"98:45:106","text":"@dev Same as SelfPermit but not abstract"},"fullyImplemented":true,"id":16655,"linearizedBaseContracts":[16655,9070,10045],"name":"SelfPermitTest","nodeType":"ContractDefinition","nodes":[],"scope":16656,"src":"143:40:106"}],"src":"39:145:106"},"id":106},"contracts/test/TestCallbackValidation.sol":{"ast":{"absolutePath":"contracts/test/TestCallbackValidation.sol","exportedSymbols":{"CallbackValidation":[12125],"IAstraCLPool":[110],"IAstraCLPoolActions":[248],"IAstraCLPoolDerivedState":[279],"IAstraCLPoolEvents":[398],"IAstraCLPoolImmutables":[438],"IAstraCLPoolOwnerActions":[464],"IAstraCLPoolState":[572],"PoolAddress":[14364],"TestCallbackValidation":[16681]},"id":16682,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":16657,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"39:23:107"},{"absolutePath":"contracts/libraries/CallbackValidation.sol","file":"../libraries/CallbackValidation.sol","id":16658,"nodeType":"ImportDirective","scope":16682,"sourceUnit":12126,"src":"64:45:107","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":16681,"linearizedBaseContracts":[16681],"name":"TestCallbackValidation","nodeType":"ContractDefinition","nodes":[{"body":{"id":16679,"nodeType":"Block","src":"314:87:107","statements":[{"expression":{"arguments":[{"id":16673,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16660,"src":"365:7:107","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16674,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16662,"src":"374:6:107","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16675,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16664,"src":"382:6:107","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16676,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16666,"src":"390:3:107","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":16671,"name":"CallbackValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12125,"src":"331:18:107","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CallbackValidation_$12125_$","typeString":"type(library CallbackValidation)"}},"id":16672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"verifyCallback","nodeType":"MemberAccess","referencedDeclaration":12093,"src":"331:33:107","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint24_$returns$_t_contract$_IAstraCLPool_$110_$","typeString":"function (address,address,address,uint24) view returns (contract IAstraCLPool)"}},"id":16677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"331:63:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"functionReturnParameters":16670,"id":16678,"nodeType":"Return","src":"324:70:107"}]},"functionSelector":"8bdb1925","id":16680,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallback","nodeType":"FunctionDefinition","parameters":{"id":16667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16660,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":16680,"src":"182:15:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16659,"name":"address","nodeType":"ElementaryTypeName","src":"182:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16662,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":16680,"src":"207:14:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16661,"name":"address","nodeType":"ElementaryTypeName","src":"207:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16664,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":16680,"src":"231:14:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16663,"name":"address","nodeType":"ElementaryTypeName","src":"231:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16666,"mutability":"mutable","name":"fee","nodeType":"VariableDeclaration","scope":16680,"src":"255:10:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":16665,"name":"uint24","nodeType":"ElementaryTypeName","src":"255:6:107","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"172:99:107"},"returnParameters":{"id":16670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16669,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":16680,"src":"295:17:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"},"typeName":{"id":16668,"name":"IAstraCLPool","nodeType":"UserDefinedTypeName","referencedDeclaration":110,"src":"295:12:107","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"visibility":"internal"}],"src":"294:19:107"},"scope":16681,"src":"149:252:107","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":16682,"src":"111:292:107"}],"src":"39:365:107"},"id":107},"contracts/test/TestERC20.sol":{"ast":{"absolutePath":"contracts/test/TestERC20.sol","exportedSymbols":{"Context":[5638],"Counters":[5688],"ECDSA":[2668],"EIP712":[2817],"ERC20":[4105],"ERC20Permit":[2963],"IERC20":[4183],"IERC20Permit":[2999],"SafeMath":[3423],"TestERC20":[16706]},"id":16707,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":16683,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"39:23:108"},{"absolutePath":"@openzeppelin/contracts/drafts/ERC20Permit.sol","file":"@openzeppelin/contracts/drafts/ERC20Permit.sol","id":16684,"nodeType":"ImportDirective","scope":16707,"sourceUnit":2964,"src":"64:56:108","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":16685,"name":"ERC20Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":2963,"src":"144:11:108","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Permit_$2963","typeString":"contract ERC20Permit"}},"id":16686,"nodeType":"InheritanceSpecifier","src":"144:11:108"}],"contractDependencies":[2817,2963,2999,4105,4183,5638],"contractKind":"contract","fullyImplemented":true,"id":16706,"linearizedBaseContracts":[16706,2963,2817,2999,4105,4183,5638],"name":"TestERC20","nodeType":"ContractDefinition","nodes":[{"body":{"id":16704,"nodeType":"Block","src":"250:48:108","statements":[{"expression":{"arguments":[{"expression":{"id":16699,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"266:3:108","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"266:10:108","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":16701,"name":"amountToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16688,"src":"278:12:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16698,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3981,"src":"260:5:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":16702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"260:31:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16703,"nodeType":"ExpressionStatement","src":"260:31:108"}]},"id":16705,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"54657374204552433230","id":16691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"202:12:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_59dbbb5a111c0b89d8aaed45107e7abbc3d86a3266b13d6715a938843248b158","typeString":"literal_string \"Test ERC20\""},"value":"Test ERC20"},{"hexValue":"54455354","id":16692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"216:6:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_852daa74cc3c31fe64542bb9b8764cfb91cc30f9acf9389071ffb44a9eefde46","typeString":"literal_string \"TEST\""},"value":"TEST"}],"id":16693,"modifierName":{"id":16690,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4105,"src":"196:5:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$4105_$","typeString":"type(contract ERC20)"}},"nodeType":"ModifierInvocation","src":"196:27:108"},{"arguments":[{"hexValue":"54657374204552433230","id":16695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"236:12:108","typeDescriptions":{"typeIdentifier":"t_stringliteral_59dbbb5a111c0b89d8aaed45107e7abbc3d86a3266b13d6715a938843248b158","typeString":"literal_string \"Test ERC20\""},"value":"Test ERC20"}],"id":16696,"modifierName":{"id":16694,"name":"ERC20Permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2963,"src":"224:11:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20Permit_$2963_$","typeString":"type(contract ERC20Permit)"}},"nodeType":"ModifierInvocation","src":"224:25:108"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":16689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16688,"mutability":"mutable","name":"amountToMint","nodeType":"VariableDeclaration","scope":16705,"src":"174:20:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16687,"name":"uint256","nodeType":"ElementaryTypeName","src":"174:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"173:22:108"},"returnParameters":{"id":16697,"nodeType":"ParameterList","parameters":[],"src":"250:0:108"},"scope":16706,"src":"162:136:108","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":16707,"src":"122:178:108"}],"src":"39:262:108"},"id":108},"contracts/test/TestERC20Metadata.sol":{"ast":{"absolutePath":"contracts/test/TestERC20Metadata.sol","exportedSymbols":{"Context":[5638],"Counters":[5688],"ECDSA":[2668],"EIP712":[2817],"ERC20":[4105],"ERC20Permit":[2963],"IERC20":[4183],"IERC20Permit":[2999],"SafeMath":[3423],"TestERC20Metadata":[16735]},"id":16736,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":16708,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"39:23:109"},{"absolutePath":"@openzeppelin/contracts/drafts/ERC20Permit.sol","file":"@openzeppelin/contracts/drafts/ERC20Permit.sol","id":16709,"nodeType":"ImportDirective","scope":16736,"sourceUnit":2964,"src":"64:56:109","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":16710,"name":"ERC20Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":2963,"src":"152:11:109","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Permit_$2963","typeString":"contract ERC20Permit"}},"id":16711,"nodeType":"InheritanceSpecifier","src":"152:11:109"}],"contractDependencies":[2817,2963,2999,4105,4183,5638],"contractKind":"contract","fullyImplemented":true,"id":16735,"linearizedBaseContracts":[16735,2963,2817,2999,4105,4183,5638],"name":"TestERC20Metadata","nodeType":"ContractDefinition","nodes":[{"body":{"id":16733,"nodeType":"Block","src":"284:48:109","statements":[{"expression":{"arguments":[{"expression":{"id":16728,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"300:3:109","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"300:10:109","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":16730,"name":"amountToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16713,"src":"312:12:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16727,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3981,"src":"294:5:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":16731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"294:31:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16732,"nodeType":"ExpressionStatement","src":"294:31:109"}]},"id":16734,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":16720,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16715,"src":"252:4:109","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":16721,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16717,"src":"258:6:109","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":16722,"modifierName":{"id":16719,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4105,"src":"246:5:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$4105_$","typeString":"type(contract ERC20)"}},"nodeType":"ModifierInvocation","src":"246:19:109"},{"arguments":[{"id":16724,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16715,"src":"278:4:109","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":16725,"modifierName":{"id":16723,"name":"ERC20Permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2963,"src":"266:11:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20Permit_$2963_$","typeString":"type(contract ERC20Permit)"}},"nodeType":"ModifierInvocation","src":"266:17:109"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":16718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16713,"mutability":"mutable","name":"amountToMint","nodeType":"VariableDeclaration","scope":16734,"src":"182:20:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16712,"name":"uint256","nodeType":"ElementaryTypeName","src":"182:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16715,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":16734,"src":"204:18:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16714,"name":"string","nodeType":"ElementaryTypeName","src":"204:6:109","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":16717,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":16734,"src":"224:20:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16716,"name":"string","nodeType":"ElementaryTypeName","src":"224:6:109","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"181:64:109"},"returnParameters":{"id":16726,"nodeType":"ParameterList","parameters":[],"src":"284:0:109"},"scope":16735,"src":"170:162:109","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":16736,"src":"122:212:109"}],"src":"39:296:109"},"id":109},"contracts/test/TestERC20PermitAllowed.sol":{"ast":{"absolutePath":"contracts/test/TestERC20PermitAllowed.sol","exportedSymbols":{"Context":[5638],"Counters":[5688],"ECDSA":[2668],"EIP712":[2817],"ERC20":[4105],"ERC20Permit":[2963],"IERC20":[4183],"IERC20Permit":[2999],"IERC20PermitAllowed":[10444],"SafeMath":[3423],"TestERC20":[16706],"TestERC20PermitAllowed":[16801]},"id":16802,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":16737,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"39:23:110"},{"absolutePath":"contracts/test/TestERC20.sol","file":"./TestERC20.sol","id":16738,"nodeType":"ImportDirective","scope":16802,"sourceUnit":16707,"src":"64:25:110","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/external/IERC20PermitAllowed.sol","file":"../interfaces/external/IERC20PermitAllowed.sol","id":16739,"nodeType":"ImportDirective","scope":16802,"sourceUnit":10445,"src":"90:56:110","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":16740,"name":"TestERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":16706,"src":"266:9:110","typeDescriptions":{"typeIdentifier":"t_contract$_TestERC20_$16706","typeString":"contract TestERC20"}},"id":16741,"nodeType":"InheritanceSpecifier","src":"266:9:110"},{"baseName":{"id":16742,"name":"IERC20PermitAllowed","nodeType":"UserDefinedTypeName","referencedDeclaration":10444,"src":"277:19:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitAllowed_$10444","typeString":"contract IERC20PermitAllowed"}},"id":16743,"nodeType":"InheritanceSpecifier","src":"277:19:110"}],"contractDependencies":[2817,2963,2999,4105,4183,5638,10444,16706],"contractKind":"contract","fullyImplemented":true,"id":16801,"linearizedBaseContracts":[16801,10444,16706,2963,2817,2999,4105,4183,5638],"name":"TestERC20PermitAllowed","nodeType":"ContractDefinition","nodes":[{"body":{"id":16751,"nodeType":"Block","src":"361:2:110","statements":[]},"id":16752,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":16748,"name":"amountToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16745,"src":"347:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":16749,"modifierName":{"id":16747,"name":"TestERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16706,"src":"337:9:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TestERC20_$16706_$","typeString":"type(contract TestERC20)"}},"nodeType":"ModifierInvocation","src":"337:23:110"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":16746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16745,"mutability":"mutable","name":"amountToMint","nodeType":"VariableDeclaration","scope":16752,"src":"315:20:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16744,"name":"uint256","nodeType":"ElementaryTypeName","src":"315:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"314:22:110"},"returnParameters":{"id":16750,"nodeType":"ParameterList","parameters":[],"src":"361:0:110"},"scope":16801,"src":"303:60:110","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[10443],"body":{"id":16799,"nodeType":"Block","src":"582:184:110","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":16775,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16754,"src":"612:6:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16773,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"600:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_TestERC20PermitAllowed_$16801","typeString":"contract TestERC20PermitAllowed"}},"id":16774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":2951,"src":"600:11:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":16776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"600:19:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":16777,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16758,"src":"623:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"600:28:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5465737445524332305065726d6974416c6c6f7765643a3a7065726d69743a2077726f6e67206e6f6e6365","id":16779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"630:45:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_16a746fb8402a3aea63c2ae4b24e2f7ae56cdfb3d221dff262ecc07012a6f967","typeString":"literal_string \"TestERC20PermitAllowed::permit: wrong nonce\""},"value":"TestERC20PermitAllowed::permit: wrong nonce"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_16a746fb8402a3aea63c2ae4b24e2f7ae56cdfb3d221dff262ecc07012a6f967","typeString":"literal_string \"TestERC20PermitAllowed::permit: wrong nonce\""}],"id":16772,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"592:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"592:84:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16781,"nodeType":"ExpressionStatement","src":"592:84:110"},{"expression":{"arguments":[{"id":16783,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16754,"src":"693:6:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16784,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16756,"src":"701:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"condition":{"id":16785,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16762,"src":"710:7:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":16791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"740:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":16792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"710:31:110","trueExpression":{"expression":{"arguments":[{"id":16788,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"725:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16787,"name":"uint256","nodeType":"ElementaryTypeName","src":"725:7:110","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":16786,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"720:4:110","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":16789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"720:13:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":16790,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"720:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16793,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"743:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16794,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16764,"src":"751:1:110","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":16795,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16766,"src":"754:1:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":16796,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16768,"src":"757:1:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":16782,"name":"permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2935,"src":"686:6:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32)"}},"id":16797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"686:73:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16798,"nodeType":"ExpressionStatement","src":"686:73:110"}]},"functionSelector":"8fcbaf0c","id":16800,"implemented":true,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","overrides":{"id":16770,"nodeType":"OverrideSpecifier","overrides":[],"src":"573:8:110"},"parameters":{"id":16769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16754,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":16800,"src":"394:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16753,"name":"address","nodeType":"ElementaryTypeName","src":"394:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16756,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":16800,"src":"418:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16755,"name":"address","nodeType":"ElementaryTypeName","src":"418:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16758,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":16800,"src":"443:13:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16757,"name":"uint256","nodeType":"ElementaryTypeName","src":"443:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16760,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":16800,"src":"466:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16759,"name":"uint256","nodeType":"ElementaryTypeName","src":"466:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16762,"mutability":"mutable","name":"allowed","nodeType":"VariableDeclaration","scope":16800,"src":"490:12:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16761,"name":"bool","nodeType":"ElementaryTypeName","src":"490:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":16764,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":16800,"src":"512:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16763,"name":"uint8","nodeType":"ElementaryTypeName","src":"512:5:110","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":16766,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":16800,"src":"529:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16765,"name":"bytes32","nodeType":"ElementaryTypeName","src":"529:7:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16768,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":16800,"src":"548:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16767,"name":"bytes32","nodeType":"ElementaryTypeName","src":"548:7:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"384:179:110"},"returnParameters":{"id":16771,"nodeType":"ParameterList","parameters":[],"src":"582:0:110"},"scope":16801,"src":"369:397:110","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":16802,"src":"231:537:110"}],"src":"39:730:110"},"id":110},"contracts/test/TestMulticall.sol":{"ast":{"absolutePath":"contracts/test/TestMulticall.sol","exportedSymbols":{"IMulticall":[9526],"Multicall":[8369],"TestMulticall":[16860]},"id":16861,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":16803,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"39:23:111"},{"id":16804,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"63:19:111"},{"absolutePath":"contracts/base/Multicall.sol","file":"../base/Multicall.sol","id":16805,"nodeType":"ImportDirective","scope":16861,"sourceUnit":8370,"src":"84:31:111","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":16806,"name":"Multicall","nodeType":"UserDefinedTypeName","referencedDeclaration":8369,"src":"143:9:111","typeDescriptions":{"typeIdentifier":"t_contract$_Multicall_$8369","typeString":"contract Multicall"}},"id":16807,"nodeType":"InheritanceSpecifier","src":"143:9:111"}],"contractDependencies":[8369,9526],"contractKind":"contract","fullyImplemented":true,"id":16860,"linearizedBaseContracts":[16860,8369,9526],"name":"TestMulticall","nodeType":"ContractDefinition","nodes":[{"body":{"id":16816,"nodeType":"Block","src":"232:30:111","statements":[{"expression":{"arguments":[{"id":16813,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16809,"src":"249:5:111","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":16812,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"242:6:111","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":16814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"242:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16815,"nodeType":"ExpressionStatement","src":"242:13:111"}]},"functionSelector":"34621235","id":16817,"implemented":true,"kind":"function","modifiers":[],"name":"functionThatRevertsWithError","nodeType":"FunctionDefinition","parameters":{"id":16810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16809,"mutability":"mutable","name":"error","nodeType":"VariableDeclaration","scope":16817,"src":"197:19:111","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16808,"name":"string","nodeType":"ElementaryTypeName","src":"197:6:111","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"196:21:111"},"returnParameters":{"id":16811,"nodeType":"ParameterList","parameters":[],"src":"232:0:111"},"scope":16860,"src":"159:103:111","stateMutability":"pure","virtual":false,"visibility":"external"},{"canonicalName":"TestMulticall.Tuple","id":16822,"members":[{"constant":false,"id":16819,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":16822,"src":"291:9:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16818,"name":"uint256","nodeType":"ElementaryTypeName","src":"291:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16821,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":16822,"src":"310:9:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16820,"name":"uint256","nodeType":"ElementaryTypeName","src":"310:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Tuple","nodeType":"StructDefinition","scope":16860,"src":"268:58:111","visibility":"public"},{"body":{"id":16838,"nodeType":"Block","src":"431:44:111","statements":[{"expression":{"id":16836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16831,"name":"tuple","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16829,"src":"441:5:111","typeDescriptions":{"typeIdentifier":"t_struct$_Tuple_$16822_memory_ptr","typeString":"struct TestMulticall.Tuple memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16833,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16824,"src":"459:1:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16834,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16826,"src":"465:1:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16832,"name":"Tuple","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16822,"src":"449:5:111","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Tuple_$16822_storage_ptr_$","typeString":"type(struct TestMulticall.Tuple storage pointer)"}},"id":16835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["b","a"],"nodeType":"FunctionCall","src":"449:19:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Tuple_$16822_memory_ptr","typeString":"struct TestMulticall.Tuple memory"}},"src":"441:27:111","typeDescriptions":{"typeIdentifier":"t_struct$_Tuple_$16822_memory_ptr","typeString":"struct TestMulticall.Tuple memory"}},"id":16837,"nodeType":"ExpressionStatement","src":"441:27:111"}]},"functionSelector":"3b16a6a3","id":16839,"implemented":true,"kind":"function","modifiers":[],"name":"functionThatReturnsTuple","nodeType":"FunctionDefinition","parameters":{"id":16827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16824,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":16839,"src":"366:9:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16823,"name":"uint256","nodeType":"ElementaryTypeName","src":"366:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16826,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":16839,"src":"377:9:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16825,"name":"uint256","nodeType":"ElementaryTypeName","src":"377:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"365:22:111"},"returnParameters":{"id":16830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16829,"mutability":"mutable","name":"tuple","nodeType":"VariableDeclaration","scope":16839,"src":"411:18:111","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Tuple_$16822_memory_ptr","typeString":"struct TestMulticall.Tuple"},"typeName":{"id":16828,"name":"Tuple","nodeType":"UserDefinedTypeName","referencedDeclaration":16822,"src":"411:5:111","typeDescriptions":{"typeIdentifier":"t_struct$_Tuple_$16822_storage_ptr","typeString":"struct TestMulticall.Tuple"}},"visibility":"internal"}],"src":"410:20:111"},"scope":16860,"src":"332:143:111","stateMutability":"pure","virtual":false,"visibility":"external"},{"constant":false,"functionSelector":"295b4e17","id":16841,"mutability":"mutable","name":"paid","nodeType":"VariableDeclaration","scope":16860,"src":"481:19:111","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16840,"name":"uint256","nodeType":"ElementaryTypeName","src":"481:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":16849,"nodeType":"Block","src":"540:34:111","statements":[{"expression":{"id":16847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16844,"name":"paid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16841,"src":"550:4:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":16845,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"558:3:111","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"558:9:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"550:17:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16848,"nodeType":"ExpressionStatement","src":"550:17:111"}]},"functionSelector":"f3e22297","id":16850,"implemented":true,"kind":"function","modifiers":[],"name":"pays","nodeType":"FunctionDefinition","parameters":{"id":16842,"nodeType":"ParameterList","parameters":[],"src":"520:2:111"},"returnParameters":{"id":16843,"nodeType":"ParameterList","parameters":[],"src":"540:0:111"},"scope":16860,"src":"507:67:111","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":16858,"nodeType":"Block","src":"636:34:111","statements":[{"expression":{"expression":{"id":16855,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"653:3:111","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"653:10:111","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":16854,"id":16857,"nodeType":"Return","src":"646:17:111"}]},"functionSelector":"5170a9d0","id":16859,"implemented":true,"kind":"function","modifiers":[],"name":"returnSender","nodeType":"FunctionDefinition","parameters":{"id":16851,"nodeType":"ParameterList","parameters":[],"src":"601:2:111"},"returnParameters":{"id":16854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16853,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16859,"src":"627:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16852,"name":"address","nodeType":"ElementaryTypeName","src":"627:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"626:9:111"},"scope":16860,"src":"580:90:111","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":16861,"src":"117:555:111"}],"src":"39:634:111"},"id":111},"contracts/test/TestPositionNFTOwner.sol":{"ast":{"absolutePath":"contracts/test/TestPositionNFTOwner.sol","exportedSymbols":{"IERC1271":[10420],"TestPositionNFTOwner":[16920]},"id":16921,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":16862,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"39:23:112"},{"absolutePath":"contracts/interfaces/external/IERC1271.sol","file":"../interfaces/external/IERC1271.sol","id":16863,"nodeType":"ImportDirective","scope":16921,"sourceUnit":10421,"src":"64:45:112","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":16864,"name":"IERC1271","nodeType":"UserDefinedTypeName","referencedDeclaration":10420,"src":"144:8:112","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1271_$10420","typeString":"contract IERC1271"}},"id":16865,"nodeType":"InheritanceSpecifier","src":"144:8:112"}],"contractDependencies":[10420],"contractKind":"contract","fullyImplemented":true,"id":16920,"linearizedBaseContracts":[16920,10420],"name":"TestPositionNFTOwner","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"8da5cb5b","id":16867,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":16920,"src":"159:20:112","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16866,"name":"address","nodeType":"ElementaryTypeName","src":"159:7:112","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"body":{"id":16876,"nodeType":"Block","src":"229:31:112","statements":[{"expression":{"id":16874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16872,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16867,"src":"239:5:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16873,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16869,"src":"247:6:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"239:14:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16875,"nodeType":"ExpressionStatement","src":"239:14:112"}]},"functionSelector":"13af4035","id":16877,"implemented":true,"kind":"function","modifiers":[],"name":"setOwner","nodeType":"FunctionDefinition","parameters":{"id":16870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16869,"mutability":"mutable","name":"_owner","nodeType":"VariableDeclaration","scope":16877,"src":"204:14:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16868,"name":"address","nodeType":"ElementaryTypeName","src":"204:7:112","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"203:16:112"},"returnParameters":{"id":16871,"nodeType":"ParameterList","parameters":[],"src":"229:0:112"},"scope":16920,"src":"186:74:112","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10419],"body":{"id":16918,"nodeType":"Block","src":"381:380:112","statements":[{"assignments":[16888],"declarations":[{"constant":false,"id":16888,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":16918,"src":"391:9:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16887,"name":"bytes32","nodeType":"ElementaryTypeName","src":"391:7:112","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":16889,"nodeType":"VariableDeclarationStatement","src":"391:9:112"},{"assignments":[16891],"declarations":[{"constant":false,"id":16891,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":16918,"src":"410:9:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16890,"name":"bytes32","nodeType":"ElementaryTypeName","src":"410:7:112","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":16892,"nodeType":"VariableDeclarationStatement","src":"410:9:112"},{"assignments":[16894],"declarations":[{"constant":false,"id":16894,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":16918,"src":"429:7:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16893,"name":"uint8","nodeType":"ElementaryTypeName","src":"429:5:112","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":16895,"nodeType":"VariableDeclarationStatement","src":"429:7:112"},{"AST":{"nodeType":"YulBlock","src":"455:155:112","statements":[{"nodeType":"YulAssignment","src":"469:32:112","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"484:9:112"},{"kind":"number","nodeType":"YulLiteral","src":"495:4:112","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"480:3:112"},"nodeType":"YulFunctionCall","src":"480:20:112"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"474:5:112"},"nodeType":"YulFunctionCall","src":"474:27:112"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"469:1:112"}]},{"nodeType":"YulAssignment","src":"514:32:112","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"529:9:112"},{"kind":"number","nodeType":"YulLiteral","src":"540:4:112","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"525:3:112"},"nodeType":"YulFunctionCall","src":"525:20:112"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"519:5:112"},"nodeType":"YulFunctionCall","src":"519:27:112"},"variableNames":[{"name":"s","nodeType":"YulIdentifier","src":"514:1:112"}]},{"nodeType":"YulAssignment","src":"559:41:112","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"569:1:112","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"582:9:112"},{"kind":"number","nodeType":"YulLiteral","src":"593:4:112","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"578:3:112"},"nodeType":"YulFunctionCall","src":"578:20:112"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"572:5:112"},"nodeType":"YulFunctionCall","src":"572:27:112"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"564:4:112"},"nodeType":"YulFunctionCall","src":"564:36:112"},"variableNames":[{"name":"v","nodeType":"YulIdentifier","src":"559:1:112"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":16888,"isOffset":false,"isSlot":false,"src":"469:1:112","valueSize":1},{"declaration":16891,"isOffset":false,"isSlot":false,"src":"514:1:112","valueSize":1},{"declaration":16881,"isOffset":false,"isSlot":false,"src":"484:9:112","valueSize":1},{"declaration":16881,"isOffset":false,"isSlot":false,"src":"529:9:112","valueSize":1},{"declaration":16881,"isOffset":false,"isSlot":false,"src":"582:9:112","valueSize":1},{"declaration":16894,"isOffset":false,"isSlot":false,"src":"559:1:112","valueSize":1}],"id":16896,"nodeType":"InlineAssembly","src":"446:164:112"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":16898,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16879,"src":"633:4:112","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":16899,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16894,"src":"639:1:112","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":16900,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16888,"src":"642:1:112","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":16901,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16891,"src":"645:1:112","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":16897,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"623:9:112","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":16902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"623:24:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":16903,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16867,"src":"651:5:112","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"623:33:112","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":16916,"nodeType":"Block","src":"714:41:112","statements":[{"expression":{"arguments":[{"hexValue":"30","id":16913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"742:1:112","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":16912,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"735:6:112","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":16911,"name":"bytes4","nodeType":"ElementaryTypeName","src":"735:6:112","typeDescriptions":{}}},"id":16914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"735:9:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":16886,"id":16915,"nodeType":"Return","src":"728:16:112"}]},"id":16917,"nodeType":"IfStatement","src":"619:136:112","trueBody":{"id":16910,"nodeType":"Block","src":"658:50:112","statements":[{"expression":{"arguments":[{"hexValue":"30783136323662613765","id":16907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"686:10:112","typeDescriptions":{"typeIdentifier":"t_rational_371636862_by_1","typeString":"int_const 371636862"},"value":"0x1626ba7e"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_371636862_by_1","typeString":"int_const 371636862"}],"id":16906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"679:6:112","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":16905,"name":"bytes4","nodeType":"ElementaryTypeName","src":"679:6:112","typeDescriptions":{}}},"id":16908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"679:18:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":16886,"id":16909,"nodeType":"Return","src":"672:25:112"}]}}]},"functionSelector":"1626ba7e","id":16919,"implemented":true,"kind":"function","modifiers":[],"name":"isValidSignature","nodeType":"FunctionDefinition","overrides":{"id":16883,"nodeType":"OverrideSpecifier","overrides":[],"src":"344:8:112"},"parameters":{"id":16882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16879,"mutability":"mutable","name":"hash","nodeType":"VariableDeclaration","scope":16919,"src":"292:12:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16878,"name":"bytes32","nodeType":"ElementaryTypeName","src":"292:7:112","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16881,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":16919,"src":"306:22:112","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16880,"name":"bytes","nodeType":"ElementaryTypeName","src":"306:5:112","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"291:38:112"},"returnParameters":{"id":16886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16885,"mutability":"mutable","name":"magicValue","nodeType":"VariableDeclaration","scope":16919,"src":"362:17:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":16884,"name":"bytes4","nodeType":"ElementaryTypeName","src":"362:6:112","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"361:19:112"},"scope":16920,"src":"266:495:112","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":16921,"src":"111:652:112"}],"src":"39:725:112"},"id":112},"contracts/test/TestUniswapV3Callee.sol":{"ast":{"absolutePath":"contracts/test/TestUniswapV3Callee.sol","exportedSymbols":{"IAstraCLPool":[110],"IAstraCLPoolActions":[248],"IAstraCLPoolDerivedState":[279],"IAstraCLPoolEvents":[398],"IAstraCLPoolImmutables":[438],"IAstraCLPoolOwnerActions":[464],"IAstraCLPoolState":[572],"IAstraCLSwapCallback":[152],"IERC20":[4183],"SafeCast":[1293],"TestAstraCLCallee":[17119]},"id":17120,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":16922,"literals":["solidity","=","0.7",".6"],"nodeType":"PragmaDirective","src":"39:23:113"},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol","file":"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol","id":16923,"nodeType":"ImportDirective","scope":17120,"sourceUnit":153,"src":"117:86:113","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol","file":"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol","id":16924,"nodeType":"ImportDirective","scope":17120,"sourceUnit":1294,"src":"257:64:113","symbolAliases":[],"unitAlias":""},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","file":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","id":16925,"nodeType":"ImportDirective","scope":17120,"sourceUnit":111,"src":"375:69:113","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":16926,"nodeType":"ImportDirective","scope":17120,"sourceUnit":4184,"src":"445:56:113","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":16927,"name":"IAstraCLSwapCallback","nodeType":"UserDefinedTypeName","referencedDeclaration":152,"src":"533:20:113","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLSwapCallback_$152","typeString":"contract IAstraCLSwapCallback"}},"id":16928,"nodeType":"InheritanceSpecifier","src":"533:20:113"}],"contractDependencies":[152],"contractKind":"contract","fullyImplemented":true,"id":17119,"linearizedBaseContracts":[17119,152],"name":"TestAstraCLCallee","nodeType":"ContractDefinition","nodes":[{"id":16931,"libraryName":{"id":16929,"name":"SafeCast","nodeType":"UserDefinedTypeName","referencedDeclaration":1293,"src":"566:8:113","typeDescriptions":{"typeIdentifier":"t_contract$_SafeCast_$1293","typeString":"library SafeCast"}},"nodeType":"UsingForDirective","src":"560:27:113","typeName":{"id":16930,"name":"uint256","nodeType":"ElementaryTypeName","src":"579:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"body":{"id":16959,"nodeType":"Block","src":"705:122:113","statements":[{"expression":{"arguments":[{"id":16946,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16937,"src":"739:9:113","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":16947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"750:4:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16948,"name":"amount0In","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16935,"src":"756:9:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":1292,"src":"756:18:113","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":16950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"756:20:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":16951,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16939,"src":"778:17:113","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"expression":{"id":16954,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"808:3:113","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"808:10:113","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":16952,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"797:3:113","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16953,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"797:10:113","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"797:22:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":16943,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16933,"src":"728:4:113","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16942,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"715:12:113","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":16944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"715:18:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":16945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":229,"src":"715:23:113","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bool_$_t_int256_$_t_uint160_$_t_bytes_memory_ptr_$returns$_t_int256_$_t_int256_$","typeString":"function (address,bool,int256,uint160,bytes memory) external returns (int256,int256)"}},"id":16957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"715:105:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":16958,"nodeType":"ExpressionStatement","src":"715:105:113"}]},"functionSelector":"6dfc0ddb","id":16960,"implemented":true,"kind":"function","modifiers":[],"name":"swapExact0For1","nodeType":"FunctionDefinition","parameters":{"id":16940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16933,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":16960,"src":"617:12:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16932,"name":"address","nodeType":"ElementaryTypeName","src":"617:7:113","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16935,"mutability":"mutable","name":"amount0In","nodeType":"VariableDeclaration","scope":16960,"src":"631:17:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16934,"name":"uint256","nodeType":"ElementaryTypeName","src":"631:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16937,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16960,"src":"650:17:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16936,"name":"address","nodeType":"ElementaryTypeName","src":"650:7:113","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16939,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":16960,"src":"669:25:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":16938,"name":"uint160","nodeType":"ElementaryTypeName","src":"669:7:113","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"616:79:113"},"returnParameters":{"id":16941,"nodeType":"ParameterList","parameters":[],"src":"705:0:113"},"scope":17119,"src":"593:234:113","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16989,"nodeType":"Block","src":"946:124:113","statements":[{"expression":{"arguments":[{"id":16975,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16966,"src":"980:9:113","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":16976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"991:4:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":16980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"997:22:113","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16977,"name":"amount1Out","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16964,"src":"998:10:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":1292,"src":"998:19:113","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":16979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"998:21:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":16981,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16968,"src":"1021:17:113","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"expression":{"id":16984,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1051:3:113","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1051:10:113","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":16982,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1040:3:113","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16983,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1040:10:113","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1040:22:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":16972,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16962,"src":"969:4:113","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16971,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"956:12:113","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":16973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"956:18:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":16974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":229,"src":"956:23:113","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bool_$_t_int256_$_t_uint160_$_t_bytes_memory_ptr_$returns$_t_int256_$_t_int256_$","typeString":"function (address,bool,int256,uint160,bytes memory) external returns (int256,int256)"}},"id":16987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"956:107:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":16988,"nodeType":"ExpressionStatement","src":"956:107:113"}]},"functionSelector":"bac7bf78","id":16990,"implemented":true,"kind":"function","modifiers":[],"name":"swap0ForExact1","nodeType":"FunctionDefinition","parameters":{"id":16969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16962,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":16990,"src":"857:12:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16961,"name":"address","nodeType":"ElementaryTypeName","src":"857:7:113","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16964,"mutability":"mutable","name":"amount1Out","nodeType":"VariableDeclaration","scope":16990,"src":"871:18:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16963,"name":"uint256","nodeType":"ElementaryTypeName","src":"871:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16966,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16990,"src":"891:17:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16965,"name":"address","nodeType":"ElementaryTypeName","src":"891:7:113","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16968,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":16990,"src":"910:25:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":16967,"name":"uint160","nodeType":"ElementaryTypeName","src":"910:7:113","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"856:80:113"},"returnParameters":{"id":16970,"nodeType":"ParameterList","parameters":[],"src":"946:0:113"},"scope":17119,"src":"833:237:113","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":17018,"nodeType":"Block","src":"1188:123:113","statements":[{"expression":{"arguments":[{"id":17005,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16996,"src":"1222:9:113","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":17006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1233:5:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17007,"name":"amount1In","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16994,"src":"1240:9:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":1292,"src":"1240:18:113","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":17009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1240:20:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":17010,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16998,"src":"1262:17:113","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"expression":{"id":17013,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1292:3:113","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1292:10:113","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":17011,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1281:3:113","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17012,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1281:10:113","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1281:22:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":17002,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16992,"src":"1211:4:113","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17001,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"1198:12:113","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":17003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1198:18:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":17004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":229,"src":"1198:23:113","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bool_$_t_int256_$_t_uint160_$_t_bytes_memory_ptr_$returns$_t_int256_$_t_int256_$","typeString":"function (address,bool,int256,uint160,bytes memory) external returns (int256,int256)"}},"id":17016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1198:106:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":17017,"nodeType":"ExpressionStatement","src":"1198:106:113"}]},"functionSelector":"e2be9109","id":17019,"implemented":true,"kind":"function","modifiers":[],"name":"swapExact1For0","nodeType":"FunctionDefinition","parameters":{"id":16999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16992,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":17019,"src":"1100:12:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16991,"name":"address","nodeType":"ElementaryTypeName","src":"1100:7:113","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16994,"mutability":"mutable","name":"amount1In","nodeType":"VariableDeclaration","scope":17019,"src":"1114:17:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16993,"name":"uint256","nodeType":"ElementaryTypeName","src":"1114:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16996,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17019,"src":"1133:17:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16995,"name":"address","nodeType":"ElementaryTypeName","src":"1133:7:113","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16998,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":17019,"src":"1152:25:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":16997,"name":"uint160","nodeType":"ElementaryTypeName","src":"1152:7:113","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1099:79:113"},"returnParameters":{"id":17000,"nodeType":"ParameterList","parameters":[],"src":"1188:0:113"},"scope":17119,"src":"1076:235:113","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":17048,"nodeType":"Block","src":"1430:125:113","statements":[{"expression":{"arguments":[{"id":17034,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17025,"src":"1464:9:113","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":17035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1475:5:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":17039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1482:22:113","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17036,"name":"amount0Out","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17023,"src":"1483:10:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":1292,"src":"1483:19:113","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":17038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1483:21:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":17040,"name":"sqrtPriceLimitX96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17027,"src":"1506:17:113","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"expression":{"id":17043,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1536:3:113","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1536:10:113","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":17041,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1525:3:113","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17042,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1525:10:113","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1525:22:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":17031,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17021,"src":"1453:4:113","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17030,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"1440:12:113","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":17032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1440:18:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":17033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":229,"src":"1440:23:113","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bool_$_t_int256_$_t_uint160_$_t_bytes_memory_ptr_$returns$_t_int256_$_t_int256_$","typeString":"function (address,bool,int256,uint160,bytes memory) external returns (int256,int256)"}},"id":17046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1440:108:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"id":17047,"nodeType":"ExpressionStatement","src":"1440:108:113"}]},"functionSelector":"f603482c","id":17049,"implemented":true,"kind":"function","modifiers":[],"name":"swap1ForExact0","nodeType":"FunctionDefinition","parameters":{"id":17028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17021,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":17049,"src":"1341:12:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17020,"name":"address","nodeType":"ElementaryTypeName","src":"1341:7:113","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17023,"mutability":"mutable","name":"amount0Out","nodeType":"VariableDeclaration","scope":17049,"src":"1355:18:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17022,"name":"uint256","nodeType":"ElementaryTypeName","src":"1355:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17025,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17049,"src":"1375:17:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17024,"name":"address","nodeType":"ElementaryTypeName","src":"1375:7:113","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17027,"mutability":"mutable","name":"sqrtPriceLimitX96","nodeType":"VariableDeclaration","scope":17049,"src":"1394:25:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":17026,"name":"uint160","nodeType":"ElementaryTypeName","src":"1394:7:113","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1340:80:113"},"returnParameters":{"id":17029,"nodeType":"ParameterList","parameters":[],"src":"1430:0:113"},"scope":17119,"src":"1317:238:113","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[151],"body":{"id":17117,"nodeType":"Block","src":"1671:381:113","statements":[{"assignments":[17060],"declarations":[{"constant":false,"id":17060,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":17117,"src":"1681:14:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17059,"name":"address","nodeType":"ElementaryTypeName","src":"1681:7:113","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17068,"initialValue":{"arguments":[{"id":17063,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17055,"src":"1709:4:113","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":17065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1716:7:113","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17064,"name":"address","nodeType":"ElementaryTypeName","src":"1716:7:113","typeDescriptions":{}}}],"id":17066,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1715:9:113","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":17061,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1698:3:113","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17062,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1698:10:113","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":17067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1698:27:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"1681:44:113"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":17071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17069,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17051,"src":"1740:12:113","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":17070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1755:1:113","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1740:16:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17115,"nodeType":"Block","src":"1886:160:113","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":17094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17092,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17053,"src":"1907:12:113","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":17093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1922:1:113","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1907:16:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":17091,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1900:6:113","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":17095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1900:24:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17096,"nodeType":"ExpressionStatement","src":"1900:24:113"},{"expression":{"arguments":[{"id":17106,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17060,"src":"1993:6:113","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":17107,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2001:3:113","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2001:10:113","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":17111,"name":"amount1Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17053,"src":"2021:12:113","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":17110,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2013:7:113","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17109,"name":"uint256","nodeType":"ElementaryTypeName","src":"2013:7:113","typeDescriptions":{}}},"id":17112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2013:21:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"id":17099,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1958:3:113","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1958:10:113","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":17098,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"1945:12:113","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":17101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1945:24:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":17102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":419,"src":"1945:31:113","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":17103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1945:33:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17097,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4183,"src":"1938:6:113","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$4183_$","typeString":"type(contract IERC20)"}},"id":17104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1938:41:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4183","typeString":"contract IERC20"}},"id":17105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":4164,"src":"1938:54:113","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":17113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1938:97:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17114,"nodeType":"ExpressionStatement","src":"1938:97:113"}]},"id":17116,"nodeType":"IfStatement","src":"1736:310:113","trueBody":{"id":17090,"nodeType":"Block","src":"1758:122:113","statements":[{"expression":{"arguments":[{"id":17081,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17060,"src":"1827:6:113","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":17082,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1835:3:113","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1835:10:113","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":17086,"name":"amount0Delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17051,"src":"1855:12:113","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":17085,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1847:7:113","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17084,"name":"uint256","nodeType":"ElementaryTypeName","src":"1847:7:113","typeDescriptions":{}}},"id":17087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1847:21:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"id":17074,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1792:3:113","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1792:10:113","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":17073,"name":"IAstraCLPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"1779:12:113","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraCLPool_$110_$","typeString":"type(contract IAstraCLPool)"}},"id":17076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1779:24:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCLPool_$110","typeString":"contract IAstraCLPool"}},"id":17077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":413,"src":"1779:31:113","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":17078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1779:33:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17072,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4183,"src":"1772:6:113","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$4183_$","typeString":"type(contract IERC20)"}},"id":17079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1772:41:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4183","typeString":"contract IERC20"}},"id":17080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":4164,"src":"1772:54:113","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":17088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1772:97:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17089,"nodeType":"ExpressionStatement","src":"1772:97:113"}]}}]},"functionSelector":"11c17848","id":17118,"implemented":true,"kind":"function","modifiers":[],"name":"astraCLSwapCallback","nodeType":"FunctionDefinition","overrides":{"id":17057,"nodeType":"OverrideSpecifier","overrides":[],"src":"1662:8:113"},"parameters":{"id":17056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17051,"mutability":"mutable","name":"amount0Delta","nodeType":"VariableDeclaration","scope":17118,"src":"1590:19:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":17050,"name":"int256","nodeType":"ElementaryTypeName","src":"1590:6:113","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":17053,"mutability":"mutable","name":"amount1Delta","nodeType":"VariableDeclaration","scope":17118,"src":"1611:19:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":17052,"name":"int256","nodeType":"ElementaryTypeName","src":"1611:6:113","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":17055,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":17118,"src":"1632:19:113","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":17054,"name":"bytes","nodeType":"ElementaryTypeName","src":"1632:5:113","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1589:63:113"},"returnParameters":{"id":17058,"nodeType":"ParameterList","parameters":[],"src":"1671:0:113"},"scope":17119,"src":"1561:491:113","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":17120,"src":"503:1551:113"}],"src":"39:2016:113"},"id":113},"contracts/test/TickLensTest.sol":{"ast":{"absolutePath":"contracts/test/TickLensTest.sol","exportedSymbols":{"IAstraCLPool":[110],"IAstraCLPoolActions":[248],"IAstraCLPoolDerivedState":[279],"IAstraCLPoolEvents":[398],"IAstraCLPoolImmutables":[438],"IAstraCLPoolOwnerActions":[464],"IAstraCLPoolState":[572],"ITickLens":[10164],"TickLens":[11801],"TickLensTest":[17153]},"id":17154,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17121,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:114"},{"id":17122,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"70:19:114"},{"absolutePath":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","file":"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol","id":17123,"nodeType":"ImportDirective","scope":17154,"sourceUnit":111,"src":"144:69:114","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/lens/TickLens.sol","file":"../lens/TickLens.sol","id":17124,"nodeType":"ImportDirective","scope":17154,"sourceUnit":11802,"src":"214:30:114","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17126,"name":"TickLens","nodeType":"UserDefinedTypeName","referencedDeclaration":11801,"src":"301:8:114","typeDescriptions":{"typeIdentifier":"t_contract$_TickLens_$11801","typeString":"contract TickLens"}},"id":17127,"nodeType":"InheritanceSpecifier","src":"301:8:114"}],"contractDependencies":[10164,11801],"contractKind":"contract","documentation":{"id":17125,"nodeType":"StructuredDocumentation","src":"246:30:114","text":"@title Tick Lens contract"},"fullyImplemented":true,"id":17153,"linearizedBaseContracts":[17153,11801,10164],"name":"TickLensTest","nodeType":"ContractDefinition","nodes":[{"body":{"id":17151,"nodeType":"Block","src":"430:140:114","statements":[{"assignments":[17137],"declarations":[{"constant":false,"id":17137,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","scope":17151,"src":"440:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17136,"name":"uint256","nodeType":"ElementaryTypeName","src":"440:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17140,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":17138,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"460:7:114","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":17139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"460:9:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"440:29:114"},{"expression":{"arguments":[{"id":17142,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17129,"src":"503:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17143,"name":"tickBitmapIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17131,"src":"509:15:114","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int16","typeString":"int16"}],"id":17141,"name":"getPopulatedTicksInWord","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11800,"src":"479:23:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_int16_$returns$_t_array$_t_struct$_PopulatedTick_$10152_memory_ptr_$dyn_memory_ptr_$","typeString":"function (address,int16) view returns (struct ITickLens.PopulatedTick memory[] memory)"}},"id":17144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"479:46:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PopulatedTick_$10152_memory_ptr_$dyn_memory_ptr","typeString":"struct ITickLens.PopulatedTick memory[] memory"}},"id":17145,"nodeType":"ExpressionStatement","src":"479:46:114"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17146,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17137,"src":"542:9:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":17147,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"554:7:114","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":17148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"554:9:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"542:21:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17135,"id":17150,"nodeType":"Return","src":"535:28:114"}]},"functionSelector":"f0c2e7bc","id":17152,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetPopulatedTicksInWord","nodeType":"FunctionDefinition","parameters":{"id":17132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17129,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":17152,"src":"361:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17128,"name":"address","nodeType":"ElementaryTypeName","src":"361:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17131,"mutability":"mutable","name":"tickBitmapIndex","nodeType":"VariableDeclaration","scope":17152,"src":"375:21:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":17130,"name":"int16","nodeType":"ElementaryTypeName","src":"375:5:114","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"360:37:114"},"returnParameters":{"id":17135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17134,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17152,"src":"421:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17133,"name":"uint256","nodeType":"ElementaryTypeName","src":"421:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"420:9:114"},"scope":17153,"src":"316:254:114","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":17154,"src":"276:296:114"}],"src":"45:528:114"},"id":114}},"contracts":{"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol":{"IAstraCLFactory":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint24","name":"fee","type":"uint24"},{"indexed":true,"internalType":"int24","name":"tickSpacing","type":"int24"}],"name":"FeeAmountEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":true,"internalType":"uint24","name":"fee","type":"uint24"},{"indexed":false,"internalType":"int24","name":"tickSpacing","type":"int24"},{"indexed":false,"internalType":"address","name":"pool","type":"address"}],"name":"PoolCreated","type":"event"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"}],"name":"createPool","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"}],"name":"enableFeeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint24","name":"fee","type":"uint24"}],"name":"feeAmountTickSpacing","outputs":[{"internalType":"int24","name":"","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"}],"name":"getPool","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"createPool(address,address,uint24)":"a1671295","enableFeeAmount(uint24,int24)":"8a7c195f","feeAmountTickSpacing(uint24)":"22afcccb","getPool(address,address,uint24)":"1698ee82","owner()":"8da5cb5b","setOwner(address)":"13af4035"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"FeeAmountEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"createPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"enableFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"feeAmountTickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"FeeAmountEnabled(uint24,int24)\":{\"params\":{\"fee\":\"The enabled fee, denominated in hundredths of a bip\",\"tickSpacing\":\"The minimum number of ticks between initialized ticks for pools created with the given fee\"}},\"OwnerChanged(address,address)\":{\"params\":{\"newOwner\":\"The owner after the owner was changed\",\"oldOwner\":\"The owner before the owner was changed\"}},\"PoolCreated(address,address,uint24,int24,address)\":{\"params\":{\"fee\":\"The fee collected upon every swap in the pool, denominated in hundredths of a bip\",\"pool\":\"The address of the created pool\",\"tickSpacing\":\"The minimum number of ticks between initialized ticks\",\"token0\":\"The first token of the pool by address sort order\",\"token1\":\"The second token of the pool by address sort order\"}}},\"kind\":\"dev\",\"methods\":{\"createPool(address,address,uint24)\":{\"details\":\"tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments are invalid.\",\"params\":{\"fee\":\"The desired fee for the pool\",\"tokenA\":\"One of the two tokens in the desired pool\",\"tokenB\":\"The other of the two tokens in the desired pool\"},\"returns\":{\"pool\":\"The address of the newly created pool\"}},\"enableFeeAmount(uint24,int24)\":{\"details\":\"Fee amounts may never be removed once enabled\",\"params\":{\"fee\":\"The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)\",\"tickSpacing\":\"The spacing between ticks to be enforced for all pools created with the given fee amount\"}},\"feeAmountTickSpacing(uint24)\":{\"details\":\"A fee amount can never be removed, so this value should be hard coded or cached in the calling context\",\"params\":{\"fee\":\"The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee\"},\"returns\":{\"_0\":\"The tick spacing\"}},\"getPool(address,address,uint24)\":{\"details\":\"tokenA and tokenB may be passed in either token0/token1 or token1/token0 order\",\"params\":{\"fee\":\"The fee collected upon every swap in the pool, denominated in hundredths of a bip\",\"tokenA\":\"The contract address of either token0 or token1\",\"tokenB\":\"The contract address of the other token\"},\"returns\":{\"pool\":\"The pool address\"}},\"owner()\":{\"details\":\"Can be changed by the current owner via setOwner\",\"returns\":{\"_0\":\"The address of the factory owner\"}},\"setOwner(address)\":{\"details\":\"Must be called by the current owner\",\"params\":{\"_owner\":\"The new owner of the factory\"}}},\"title\":\"The interface for the Astra CL Factory\",\"version\":1},\"userdoc\":{\"events\":{\"FeeAmountEnabled(uint24,int24)\":{\"notice\":\"Emitted when a new fee amount is enabled for pool creation via the factory\"},\"OwnerChanged(address,address)\":{\"notice\":\"Emitted when the owner of the factory is changed\"},\"PoolCreated(address,address,uint24,int24,address)\":{\"notice\":\"Emitted when a pool is created\"}},\"kind\":\"user\",\"methods\":{\"createPool(address,address,uint24)\":{\"notice\":\"Creates a pool for the given two tokens and fee\"},\"enableFeeAmount(uint24,int24)\":{\"notice\":\"Enables a fee amount with the given tickSpacing\"},\"feeAmountTickSpacing(uint24)\":{\"notice\":\"Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled\"},\"getPool(address,address,uint24)\":{\"notice\":\"Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist\"},\"owner()\":{\"notice\":\"Returns the current owner of the factory\"},\"setOwner(address)\":{\"notice\":\"Updates the owner of the factory\"}},\"notice\":\"The Astra CL Factory facilitates creation of Astra CL pools and control over the protocol fees\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol\":\"IAstraCLFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol\":{\"keccak256\":\"0x380f33c6cac2893f4e290a3c1a63f9f0bb9d42aff4a74c9b0fe9eebceb5721c3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4cfd26554cf5fd3f7391e73ba4559fb1df2b8f3028c7f27d694b698250371c6c\",\"dweb:/ipfs/QmepfyejMAZbpJETuMC9naUwXLVihfXLXvCQsyMwYq1hy6\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol":{"IAstraCLPool":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount0","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"amount1","type":"uint128"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint128","name":"amount0","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"amount1","type":"uint128"}],"name":"CollectProtocol","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paid0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paid1","type":"uint256"}],"name":"Flash","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"observationCardinalityNextOld","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"observationCardinalityNextNew","type":"uint16"}],"name":"IncreaseObservationCardinalityNext","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"indexed":false,"internalType":"int24","name":"tick","type":"int24"}],"name":"Initialize","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"feeProtocol0Old","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol1Old","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol0New","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol1New","type":"uint8"}],"name":"SetFeeProtocol","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"int256","name":"amount0","type":"int256"},{"indexed":false,"internalType":"int256","name":"amount1","type":"int256"},{"indexed":false,"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"int24","name":"tick","type":"int24"}],"name":"Swap","type":"event"},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"name":"collect","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"name":"collectProtocol","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeGrowthGlobal0X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeGrowthGlobal1X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"flash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"}],"name":"increaseObservationCardinalityNext","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidity","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLiquidityPerTick","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"observations","outputs":[{"internalType":"uint32","name":"blockTimestamp","type":"uint32"},{"internalType":"int56","name":"tickCumulative","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityCumulativeX128","type":"uint160"},{"internalType":"bool","name":"initialized","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32[]","name":"secondsAgos","type":"uint32[]"}],"name":"observe","outputs":[{"internalType":"int56[]","name":"tickCumulatives","type":"int56[]"},{"internalType":"uint160[]","name":"secondsPerLiquidityCumulativeX128s","type":"uint160[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"positions","outputs":[{"internalType":"uint128","name":"_liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFees","outputs":[{"internalType":"uint128","name":"token0","type":"uint128"},{"internalType":"uint128","name":"token1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"feeProtocol0","type":"uint8"},{"internalType":"uint8","name":"feeProtocol1","type":"uint8"}],"name":"setFeeProtocol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"slot0","outputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint16","name":"observationIndex","type":"uint16"},{"internalType":"uint16","name":"observationCardinality","type":"uint16"},{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"},{"internalType":"uint8","name":"feeProtocol","type":"uint8"},{"internalType":"bool","name":"unlocked","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"}],"name":"snapshotCumulativesInside","outputs":[{"internalType":"int56","name":"tickCumulativeInside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityInsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsInside","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[{"internalType":"int256","name":"amount0","type":"int256"},{"internalType":"int256","name":"amount1","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int16","name":"wordPosition","type":"int16"}],"name":"tickBitmap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tickSpacing","outputs":[{"internalType":"int24","name":"","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"}],"name":"ticks","outputs":[{"internalType":"uint128","name":"liquidityGross","type":"uint128"},{"internalType":"int128","name":"liquidityNet","type":"int128"},{"internalType":"uint256","name":"feeGrowthOutside0X128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthOutside1X128","type":"uint256"},{"internalType":"int56","name":"tickCumulativeOutside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityOutsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsOutside","type":"uint32"},{"internalType":"bool","name":"initialized","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"burn(int24,int24,uint128)":"a34123a7","collect(address,int24,int24,uint128,uint128)":"4f1eb3d8","collectProtocol(address,uint128,uint128)":"85b66729","factory()":"c45a0155","fee()":"ddca3f43","feeGrowthGlobal0X128()":"f3058399","feeGrowthGlobal1X128()":"46141319","flash(address,uint256,uint256,bytes)":"490e6cbc","increaseObservationCardinalityNext(uint16)":"32148f67","initialize(uint160)":"f637731d","liquidity()":"1a686502","maxLiquidityPerTick()":"70cf754a","mint(address,int24,int24,uint128,bytes)":"3c8a7d8d","observations(uint256)":"252c09d7","observe(uint32[])":"883bdbfd","positions(bytes32)":"514ea4bf","protocolFees()":"1ad8b03b","setFeeProtocol(uint8,uint8)":"8206a4d1","slot0()":"3850c7bd","snapshotCumulativesInside(int24,int24)":"a38807f2","swap(address,bool,int256,uint160,bytes)":"128acb08","tickBitmap(int16)":"5339c296","tickSpacing()":"d0c93a7c","ticks(int24)":"f30dba93","token0()":"0dfe1681","token1()":"d21220a7"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"CollectProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid1\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextOld\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextNew\",\"type\":\"uint16\"}],\"name\":\"IncreaseObservationCardinalityNext\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0New\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1New\",\"type\":\"uint8\"}],\"name\":\"SetFeeProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collectProtocol\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal0X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal1X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"}],\"name\":\"increaseObservationCardinalityNext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxLiquidityPerTick\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"observations\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"blockTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"int56\",\"name\":\"tickCumulative\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityCumulativeX128\",\"type\":\"uint160\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"secondsAgos\",\"type\":\"uint32[]\"}],\"name\":\"observe\",\"outputs\":[{\"internalType\":\"int56[]\",\"name\":\"tickCumulatives\",\"type\":\"int56[]\"},{\"internalType\":\"uint160[]\",\"name\":\"secondsPerLiquidityCumulativeX128s\",\"type\":\"uint160[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"_liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"token0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"token1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slot0\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"snapshotCumulativesInside\",\"outputs\":[{\"internalType\":\"int56\",\"name\":\"tickCumulativeInside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityInsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsInside\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int16\",\"name\":\"wordPosition\",\"type\":\"int16\"}],\"name\":\"tickBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"ticks\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidityGross\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside1X128\",\"type\":\"uint256\"},{\"internalType\":\"int56\",\"name\":\"tickCumulativeOutside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityOutsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsOutside\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The pool interface is broken up into many smaller pieces\",\"kind\":\"dev\",\"methods\":{\"burn(int24,int24,uint128)\":{\"details\":\"Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0Fees must be collected separately via a call to #collect\",\"params\":{\"amount\":\"How much liquidity to burn\",\"tickLower\":\"The lower tick of the position for which to burn liquidity\",\"tickUpper\":\"The upper tick of the position for which to burn liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 sent to the recipient\",\"amount1\":\"The amount of token1 sent to the recipient\"}},\"collect(address,int24,int24,uint128,uint128)\":{\"details\":\"Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity. Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\",\"params\":{\"amount0Requested\":\"How much token0 should be withdrawn from the fees owed\",\"amount1Requested\":\"How much token1 should be withdrawn from the fees owed\",\"recipient\":\"The address which should receive the fees collected\",\"tickLower\":\"The lower tick of the position for which to collect fees\",\"tickUpper\":\"The upper tick of the position for which to collect fees\"},\"returns\":{\"amount0\":\"The amount of fees collected in token0\",\"amount1\":\"The amount of fees collected in token1\"}},\"collectProtocol(address,uint128,uint128)\":{\"params\":{\"amount0Requested\":\"The maximum amount of token0 to send, can be 0 to collect fees in only token1\",\"amount1Requested\":\"The maximum amount of token1 to send, can be 0 to collect fees in only token0\",\"recipient\":\"The address to which collected protocol fees should be sent\"},\"returns\":{\"amount0\":\"The protocol fee collected in token0\",\"amount1\":\"The protocol fee collected in token1\"}},\"factory()\":{\"returns\":{\"_0\":\"The contract address\"}},\"fee()\":{\"returns\":{\"_0\":\"The fee\"}},\"feeGrowthGlobal0X128()\":{\"details\":\"This value can overflow the uint256\"},\"feeGrowthGlobal1X128()\":{\"details\":\"This value can overflow the uint256\"},\"flash(address,uint256,uint256,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IAstraCLFlashCallback.sol#astraCLFlashCallbackCan be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling with 0 amount{0,1} and sending the donation amount(s) from the callback\",\"params\":{\"amount0\":\"The amount of token0 to send\",\"amount1\":\"The amount of token1 to send\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address which will receive the token0 and token1 amounts\"}},\"increaseObservationCardinalityNext(uint16)\":{\"details\":\"This method is no-op if the pool already has an observationCardinalityNext greater than or equal to the input observationCardinalityNext.\",\"params\":{\"observationCardinalityNext\":\"The desired minimum number of observations for the pool to store\"}},\"initialize(uint160)\":{\"details\":\"Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\",\"params\":{\"sqrtPriceX96\":\"the initial sqrt price of the pool as a Q64.96\"}},\"liquidity()\":{\"details\":\"This value has no relationship to the total liquidity across all ticks\"},\"maxLiquidityPerTick()\":{\"details\":\"This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\",\"returns\":{\"_0\":\"The max amount of liquidity per tick\"}},\"mint(address,int24,int24,uint128,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IAstraCLMintCallback.sol#astraCLMintCallback in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends on tickLower, tickUpper, the amount of liquidity, and the current price.\",\"params\":{\"amount\":\"The amount of liquidity to mint\",\"data\":\"Any data that should be passed through to the callback\",\"recipient\":\"The address for which the liquidity will be created\",\"tickLower\":\"The lower tick of the position in which to add liquidity\",\"tickUpper\":\"The upper tick of the position in which to add liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\",\"amount1\":\"The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\"}},\"observations(uint256)\":{\"details\":\"You most likely want to use #observe() instead of this method to get an observation as of some amount of time ago, rather than at a specific index in the array.\",\"params\":{\"index\":\"The element of the observations array to fetch\"},\"returns\":{\"blockTimestamp\":\"The timestamp of the observation, Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp, Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp, Returns initialized whether the observation has been initialized and the values are safe to use\"}},\"observe(uint32[])\":{\"details\":\"To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick, you must call it with secondsAgos = [3600, 0].The time weighted average tick represents the geometric time weighted average price of the pool, in log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\",\"params\":{\"secondsAgos\":\"From how long ago each cumulative tick and liquidity value should be returned\"},\"returns\":{\"secondsPerLiquidityCumulativeX128s\":\"Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block timestamp\",\"tickCumulatives\":\"Cumulative tick values as of each `secondsAgos` from the current block timestamp\"}},\"positions(bytes32)\":{\"params\":{\"key\":\"The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\"},\"returns\":{\"_liquidity\":\"The amount of liquidity in the position, Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke, Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke, Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke, Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\"}},\"protocolFees()\":{\"details\":\"Protocol fees will never exceed uint128 max in either token\"},\"setFeeProtocol(uint8,uint8)\":{\"params\":{\"feeProtocol0\":\"new protocol fee for token0 of the pool\",\"feeProtocol1\":\"new protocol fee for token1 of the pool\"}},\"slot0()\":{\"returns\":{\"sqrtPriceX96\":\"The current price of the pool as a sqrt(token1/token0) Q64.96 value tick The current tick of the pool, i.e. according to the last tick transition that was run. This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick boundary. observationIndex The index of the last oracle observation that was written, observationCardinality The current maximum number of observations stored in the pool, observationCardinalityNext The next maximum number of observations, to be updated when the observation. feeProtocol The protocol fee for both tokens of the pool. Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0 is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee. unlocked Whether the pool is currently locked to reentrancy\"}},\"snapshotCumulativesInside(int24,int24)\":{\"details\":\"Snapshots must only be compared to other snapshots, taken over a period for which a position existed. I.e., snapshots cannot be compared if a position is not held for the entire period between when the first snapshot is taken and the second snapshot is taken.\",\"params\":{\"tickLower\":\"The lower tick of the range\",\"tickUpper\":\"The upper tick of the range\"},\"returns\":{\"secondsInside\":\"The snapshot of seconds per liquidity for the range\",\"secondsPerLiquidityInsideX128\":\"The snapshot of seconds per liquidity for the range\",\"tickCumulativeInside\":\"The snapshot of the tick accumulator for the range\"}},\"swap(address,bool,int256,uint160,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IAstraCLSwapCallback.sol#astraCLSwapCallback\",\"params\":{\"amountSpecified\":\"The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address to receive the output of the swap\",\"sqrtPriceLimitX96\":\"The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap\",\"zeroForOne\":\"The direction of the swap, true for token0 to token1, false for token1 to token0\"},\"returns\":{\"amount0\":\"The delta of the balance of token0 of the pool, exact when negative, minimum when positive\",\"amount1\":\"The delta of the balance of token1 of the pool, exact when negative, minimum when positive\"}},\"tickSpacing()\":{\"details\":\"Ticks can only be used at multiples of this value, minimum of 1 and always positive e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ... This value is an int24 to avoid casting even though it is always positive.\",\"returns\":{\"_0\":\"The tick spacing\"}},\"ticks(int24)\":{\"params\":{\"tick\":\"The tick to look up\"},\"returns\":{\"liquidityGross\":\"the total amount of position liquidity that uses the pool either as tick lower or tick upper, liquidityNet how much liquidity changes when the pool price crosses the tick, feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0, feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1, tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick, secondsOutside the seconds spent on the other side of the tick from the current tick, initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false. Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0. In addition, these values are only relative and must be used only in comparison to previous snapshots for a specific position.\"}},\"token0()\":{\"returns\":{\"_0\":\"The token contract address\"}},\"token1()\":{\"returns\":{\"_0\":\"The token contract address\"}}},\"title\":\"The interface for a Astra CL Pool\",\"version\":1},\"userdoc\":{\"events\":{\"Burn(address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when a position's liquidity is removed\"},\"Collect(address,address,int24,int24,uint128,uint128)\":{\"notice\":\"Emitted when fees are collected by the owner of a position\"},\"CollectProtocol(address,address,uint128,uint128)\":{\"notice\":\"Emitted when the collected protocol fees are withdrawn by the factory owner\"},\"Flash(address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted by the pool for any flashes of token0/token1\"},\"IncreaseObservationCardinalityNext(uint16,uint16)\":{\"notice\":\"Emitted by the pool for increases to the number of observations that can be stored\"},\"Initialize(uint160,int24)\":{\"notice\":\"Emitted exactly once by a pool when #initialize is first called on the pool\"},\"Mint(address,address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when liquidity is minted for a given position\"},\"SetFeeProtocol(uint8,uint8,uint8,uint8)\":{\"notice\":\"Emitted when the protocol fee is changed by the pool\"},\"Swap(address,address,int256,int256,uint160,uint128,int24)\":{\"notice\":\"Emitted by the pool for any swaps between token0 and token1\"}},\"kind\":\"user\",\"methods\":{\"burn(int24,int24,uint128)\":{\"notice\":\"Burn liquidity from the sender and account tokens owed for the liquidity to the position\"},\"collect(address,int24,int24,uint128,uint128)\":{\"notice\":\"Collects tokens owed to a position\"},\"collectProtocol(address,uint128,uint128)\":{\"notice\":\"Collect the protocol fee accrued to the pool\"},\"factory()\":{\"notice\":\"The contract that deployed the pool, which must adhere to the IAstraCLFactory interface\"},\"fee()\":{\"notice\":\"The pool's fee in hundredths of a bip, i.e. 1e-6\"},\"feeGrowthGlobal0X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\"},\"feeGrowthGlobal1X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\"},\"flash(address,uint256,uint256,bytes)\":{\"notice\":\"Receive token0 and/or token1 and pay it back, plus a fee, in the callback\"},\"increaseObservationCardinalityNext(uint16)\":{\"notice\":\"Increase the maximum number of price and liquidity observations that this pool will store\"},\"initialize(uint160)\":{\"notice\":\"Sets the initial price for the pool\"},\"liquidity()\":{\"notice\":\"The currently in range liquidity available to the pool\"},\"maxLiquidityPerTick()\":{\"notice\":\"The maximum amount of position liquidity that can use any tick in the range\"},\"mint(address,int24,int24,uint128,bytes)\":{\"notice\":\"Adds liquidity for the given recipient/tickLower/tickUpper position\"},\"observations(uint256)\":{\"notice\":\"Returns data about a specific observation index\"},\"observe(uint32[])\":{\"notice\":\"Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\"},\"positions(bytes32)\":{\"notice\":\"Returns the information about a position by the position's key\"},\"protocolFees()\":{\"notice\":\"The amounts of token0 and token1 that are owed to the protocol\"},\"setFeeProtocol(uint8,uint8)\":{\"notice\":\"Set the denominator of the protocol's % share of the fees\"},\"slot0()\":{\"notice\":\"The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas when accessed externally.\"},\"snapshotCumulativesInside(int24,int24)\":{\"notice\":\"Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\"},\"swap(address,bool,int256,uint160,bytes)\":{\"notice\":\"Swap token0 for token1, or token1 for token0\"},\"tickBitmap(int16)\":{\"notice\":\"Returns 256 packed tick initialized boolean values. See TickBitmap for more information\"},\"tickSpacing()\":{\"notice\":\"The pool tick spacing\"},\"ticks(int24)\":{\"notice\":\"Look up information about a specific tick in the pool\"},\"token0()\":{\"notice\":\"The first of the two tokens of the pool, sorted by address\"},\"token1()\":{\"notice\":\"The second of the two tokens of the pool, sorted by address\"}},\"notice\":\"An Astra pool facilitates swapping and automated market making between any two assets that strictly conform to the ERC20 specification\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":\"IAstraCLPool\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLFlashCallback.sol":{"IAstraCLFlashCallback":{"abi":[{"inputs":[{"internalType":"uint256","name":"fee0","type":"uint256"},{"internalType":"uint256","name":"fee1","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"astraCLFlashCallback","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"astraCLFlashCallback(uint256,uint256,bytes)":"e5a389c1"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"astraCLFlashCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"astraCLFlashCallback(uint256,uint256,bytes)\":{\"details\":\"In the implementation you must repay the pool the tokens sent by flash plus the computed fee amounts. The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory.\",\"params\":{\"data\":\"Any data passed through by the caller via the IAstraCLPoolActions#flash call\",\"fee0\":\"The fee amount in token0 due to the pool by the end of the flash\",\"fee1\":\"The fee amount in token1 due to the pool by the end of the flash\"}}},\"title\":\"Callback for IAstraCLPoolActions#flash\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"astraCLFlashCallback(uint256,uint256,bytes)\":{\"notice\":\"Called to `msg.sender` after transferring to the recipient from IAstraCLPool#flash.\"}},\"notice\":\"Any contract that calls IAstraCLPoolActions#flash must implement this interface\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLFlashCallback.sol\":\"IAstraCLFlashCallback\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLFlashCallback.sol\":{\"keccak256\":\"0x17e70337e67710e3105f166a258117fe635afb40d7f71a9634538123fe722891\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4973f62f9324c8def8ea2c4ac5b8746f2cbf518c47fb0f0c37816c67d3ee545b\",\"dweb:/ipfs/Qme7JGeJ7MJxFbUC6WFweHuYC8JR7VjoPSZy7VGkSXehSA\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol":{"IAstraCLMintCallback":{"abi":[{"inputs":[{"internalType":"uint256","name":"amount0Owed","type":"uint256"},{"internalType":"uint256","name":"amount1Owed","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"astraCLMintCallback","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"astraCLMintCallback(uint256,uint256,bytes)":"4cb42d2d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Owed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Owed\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"astraCLMintCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"astraCLMintCallback(uint256,uint256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the minted liquidity. The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory.\",\"params\":{\"amount0Owed\":\"The amount of token0 due to the pool for the minted liquidity\",\"amount1Owed\":\"The amount of token1 due to the pool for the minted liquidity\",\"data\":\"Any data passed through by the caller via the IAstraCLPoolActions#mint call\"}}},\"title\":\"Callback for IAstraCLPoolActions#mint\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"astraCLMintCallback(uint256,uint256,bytes)\":{\"notice\":\"Called to `msg.sender` after minting liquidity to a position from IAstraCLPool#mint.\"}},\"notice\":\"Any contract that calls IAstraCLPoolActions#mint must implement this interface\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol\":\"IAstraCLMintCallback\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol\":{\"keccak256\":\"0x85fb78c4f58adb7d5f6e37a1657cd94a050815c7e1ddbbcf8364062cb38b515c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4bce55c098b04edf1f75fedeba5ff323eac20e546ff7f8041d13aba9a3c7188e\",\"dweb:/ipfs/QmXFrKKyPhyvLdyyWRcafSMF6zD3tRjkPcVuPzZ7NU69E4\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol":{"IAstraCLSwapCallback":{"abi":[{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"astraCLSwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"astraCLSwapCallback(int256,int256,bytes)":"11c17848"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"astraCLSwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IAstraCLPoolActions#swap call\"}}},\"title\":\"Callback for IAstraCLPoolActions#swap\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IAstraCLPool#swap.\"}},\"notice\":\"Any contract that calls IAstraCLPoolActions#swap must implement this interface\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol\":\"IAstraCLSwapCallback\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol\":{\"keccak256\":\"0xaa82f63f0c930e51d6aaae0d59e7bf3ef5b32371ac0549f6e07bfcab5b4dcb16\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://73419af0b4f35f02c3b89d387d6ac46041637a7133e249de617103b7567bf4c4\",\"dweb:/ipfs/QmTfwEX1dCoUUUMaMFzDnqDcFXihHQnEG1fbkBFpidRs8o\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol":{"IAstraCLPoolActions":{"abi":[{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"name":"collect","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"flash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"}],"name":"increaseObservationCardinalityNext","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[{"internalType":"int256","name":"amount0","type":"int256"},{"internalType":"int256","name":"amount1","type":"int256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"burn(int24,int24,uint128)":"a34123a7","collect(address,int24,int24,uint128,uint128)":"4f1eb3d8","flash(address,uint256,uint256,bytes)":"490e6cbc","increaseObservationCardinalityNext(uint16)":"32148f67","initialize(uint160)":"f637731d","mint(address,int24,int24,uint128,bytes)":"3c8a7d8d","swap(address,bool,int256,uint160,bytes)":"128acb08"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"}],\"name\":\"increaseObservationCardinalityNext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"burn(int24,int24,uint128)\":{\"details\":\"Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0Fees must be collected separately via a call to #collect\",\"params\":{\"amount\":\"How much liquidity to burn\",\"tickLower\":\"The lower tick of the position for which to burn liquidity\",\"tickUpper\":\"The upper tick of the position for which to burn liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 sent to the recipient\",\"amount1\":\"The amount of token1 sent to the recipient\"}},\"collect(address,int24,int24,uint128,uint128)\":{\"details\":\"Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity. Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\",\"params\":{\"amount0Requested\":\"How much token0 should be withdrawn from the fees owed\",\"amount1Requested\":\"How much token1 should be withdrawn from the fees owed\",\"recipient\":\"The address which should receive the fees collected\",\"tickLower\":\"The lower tick of the position for which to collect fees\",\"tickUpper\":\"The upper tick of the position for which to collect fees\"},\"returns\":{\"amount0\":\"The amount of fees collected in token0\",\"amount1\":\"The amount of fees collected in token1\"}},\"flash(address,uint256,uint256,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IAstraCLFlashCallback.sol#astraCLFlashCallbackCan be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling with 0 amount{0,1} and sending the donation amount(s) from the callback\",\"params\":{\"amount0\":\"The amount of token0 to send\",\"amount1\":\"The amount of token1 to send\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address which will receive the token0 and token1 amounts\"}},\"increaseObservationCardinalityNext(uint16)\":{\"details\":\"This method is no-op if the pool already has an observationCardinalityNext greater than or equal to the input observationCardinalityNext.\",\"params\":{\"observationCardinalityNext\":\"The desired minimum number of observations for the pool to store\"}},\"initialize(uint160)\":{\"details\":\"Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\",\"params\":{\"sqrtPriceX96\":\"the initial sqrt price of the pool as a Q64.96\"}},\"mint(address,int24,int24,uint128,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IAstraCLMintCallback.sol#astraCLMintCallback in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends on tickLower, tickUpper, the amount of liquidity, and the current price.\",\"params\":{\"amount\":\"The amount of liquidity to mint\",\"data\":\"Any data that should be passed through to the callback\",\"recipient\":\"The address for which the liquidity will be created\",\"tickLower\":\"The lower tick of the position in which to add liquidity\",\"tickUpper\":\"The upper tick of the position in which to add liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\",\"amount1\":\"The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\"}},\"swap(address,bool,int256,uint160,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IAstraCLSwapCallback.sol#astraCLSwapCallback\",\"params\":{\"amountSpecified\":\"The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address to receive the output of the swap\",\"sqrtPriceLimitX96\":\"The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap\",\"zeroForOne\":\"The direction of the swap, true for token0 to token1, false for token1 to token0\"},\"returns\":{\"amount0\":\"The delta of the balance of token0 of the pool, exact when negative, minimum when positive\",\"amount1\":\"The delta of the balance of token1 of the pool, exact when negative, minimum when positive\"}}},\"title\":\"Permissionless pool actions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(int24,int24,uint128)\":{\"notice\":\"Burn liquidity from the sender and account tokens owed for the liquidity to the position\"},\"collect(address,int24,int24,uint128,uint128)\":{\"notice\":\"Collects tokens owed to a position\"},\"flash(address,uint256,uint256,bytes)\":{\"notice\":\"Receive token0 and/or token1 and pay it back, plus a fee, in the callback\"},\"increaseObservationCardinalityNext(uint16)\":{\"notice\":\"Increase the maximum number of price and liquidity observations that this pool will store\"},\"initialize(uint160)\":{\"notice\":\"Sets the initial price for the pool\"},\"mint(address,int24,int24,uint128,bytes)\":{\"notice\":\"Adds liquidity for the given recipient/tickLower/tickUpper position\"},\"swap(address,bool,int256,uint160,bytes)\":{\"notice\":\"Swap token0 for token1, or token1 for token0\"}},\"notice\":\"Contains pool methods that can be called by anyone\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":\"IAstraCLPoolActions\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol":{"IAstraCLPoolDerivedState":{"abi":[{"inputs":[{"internalType":"uint32[]","name":"secondsAgos","type":"uint32[]"}],"name":"observe","outputs":[{"internalType":"int56[]","name":"tickCumulatives","type":"int56[]"},{"internalType":"uint160[]","name":"secondsPerLiquidityCumulativeX128s","type":"uint160[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"}],"name":"snapshotCumulativesInside","outputs":[{"internalType":"int56","name":"tickCumulativeInside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityInsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsInside","type":"uint32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"observe(uint32[])":"883bdbfd","snapshotCumulativesInside(int24,int24)":"a38807f2"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"secondsAgos\",\"type\":\"uint32[]\"}],\"name\":\"observe\",\"outputs\":[{\"internalType\":\"int56[]\",\"name\":\"tickCumulatives\",\"type\":\"int56[]\"},{\"internalType\":\"uint160[]\",\"name\":\"secondsPerLiquidityCumulativeX128s\",\"type\":\"uint160[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"snapshotCumulativesInside\",\"outputs\":[{\"internalType\":\"int56\",\"name\":\"tickCumulativeInside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityInsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsInside\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"observe(uint32[])\":{\"details\":\"To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick, you must call it with secondsAgos = [3600, 0].The time weighted average tick represents the geometric time weighted average price of the pool, in log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\",\"params\":{\"secondsAgos\":\"From how long ago each cumulative tick and liquidity value should be returned\"},\"returns\":{\"secondsPerLiquidityCumulativeX128s\":\"Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block timestamp\",\"tickCumulatives\":\"Cumulative tick values as of each `secondsAgos` from the current block timestamp\"}},\"snapshotCumulativesInside(int24,int24)\":{\"details\":\"Snapshots must only be compared to other snapshots, taken over a period for which a position existed. I.e., snapshots cannot be compared if a position is not held for the entire period between when the first snapshot is taken and the second snapshot is taken.\",\"params\":{\"tickLower\":\"The lower tick of the range\",\"tickUpper\":\"The upper tick of the range\"},\"returns\":{\"secondsInside\":\"The snapshot of seconds per liquidity for the range\",\"secondsPerLiquidityInsideX128\":\"The snapshot of seconds per liquidity for the range\",\"tickCumulativeInside\":\"The snapshot of the tick accumulator for the range\"}}},\"title\":\"Pool state that is not stored\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"observe(uint32[])\":{\"notice\":\"Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\"},\"snapshotCumulativesInside(int24,int24)\":{\"notice\":\"Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\"}},\"notice\":\"Contains view functions to provide information about the pool that is computed rather than stored on the blockchain. The functions here may have variable gas costs.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":\"IAstraCLPoolDerivedState\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol":{"IAstraCLPoolEvents":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount0","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"amount1","type":"uint128"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint128","name":"amount0","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"amount1","type":"uint128"}],"name":"CollectProtocol","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paid0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paid1","type":"uint256"}],"name":"Flash","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"observationCardinalityNextOld","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"observationCardinalityNextNew","type":"uint16"}],"name":"IncreaseObservationCardinalityNext","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"indexed":false,"internalType":"int24","name":"tick","type":"int24"}],"name":"Initialize","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"feeProtocol0Old","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol1Old","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol0New","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol1New","type":"uint8"}],"name":"SetFeeProtocol","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"int256","name":"amount0","type":"int256"},{"indexed":false,"internalType":"int256","name":"amount1","type":"int256"},{"indexed":false,"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"int24","name":"tick","type":"int24"}],"name":"Swap","type":"event"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"CollectProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid1\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextOld\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextNew\",\"type\":\"uint16\"}],\"name\":\"IncreaseObservationCardinalityNext\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0New\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1New\",\"type\":\"uint8\"}],\"name\":\"SetFeeProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Swap\",\"type\":\"event\"}],\"devdoc\":{\"events\":{\"Burn(address,int24,int24,uint128,uint256,uint256)\":{\"details\":\"Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\",\"params\":{\"amount\":\"The amount of liquidity to remove\",\"amount0\":\"The amount of token0 withdrawn\",\"amount1\":\"The amount of token1 withdrawn\",\"owner\":\"The owner of the position for which liquidity is removed\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"Collect(address,address,int24,int24,uint128,uint128)\":{\"details\":\"Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\",\"params\":{\"amount0\":\"The amount of token0 fees collected\",\"amount1\":\"The amount of token1 fees collected\",\"owner\":\"The owner of the position for which fees are collected\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"CollectProtocol(address,address,uint128,uint128)\":{\"params\":{\"amount0\":\"The amount of token1 protocol fees that is withdrawn\",\"recipient\":\"The address that receives the collected protocol fees\",\"sender\":\"The address that collects the protocol fees\"}},\"Flash(address,address,uint256,uint256,uint256,uint256)\":{\"params\":{\"amount0\":\"The amount of token0 that was flashed\",\"amount1\":\"The amount of token1 that was flashed\",\"paid0\":\"The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\",\"paid1\":\"The amount of token1 paid for the flash, which can exceed the amount1 plus the fee\",\"recipient\":\"The address that received the tokens from flash\",\"sender\":\"The address that initiated the swap call, and that received the callback\"}},\"IncreaseObservationCardinalityNext(uint16,uint16)\":{\"details\":\"observationCardinalityNext is not the observation cardinality until an observation is written at the index just before a mint/swap/burn.\",\"params\":{\"observationCardinalityNextNew\":\"The updated value of the next observation cardinality\",\"observationCardinalityNextOld\":\"The previous value of the next observation cardinality\"}},\"Initialize(uint160,int24)\":{\"details\":\"Mint/Burn/Swap cannot be emitted by the pool before Initialize\",\"params\":{\"sqrtPriceX96\":\"The initial sqrt price of the pool, as a Q64.96\",\"tick\":\"The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool\"}},\"Mint(address,address,int24,int24,uint128,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of liquidity minted to the position range\",\"amount0\":\"How much token0 was required for the minted liquidity\",\"amount1\":\"How much token1 was required for the minted liquidity\",\"owner\":\"The owner of the position and recipient of any minted liquidity\",\"sender\":\"The address that minted the liquidity\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"SetFeeProtocol(uint8,uint8,uint8,uint8)\":{\"params\":{\"feeProtocol0New\":\"The updated value of the token0 protocol fee\",\"feeProtocol0Old\":\"The previous value of the token0 protocol fee\",\"feeProtocol1New\":\"The updated value of the token1 protocol fee\",\"feeProtocol1Old\":\"The previous value of the token1 protocol fee\"}},\"Swap(address,address,int256,int256,uint160,uint128,int24)\":{\"params\":{\"amount0\":\"The delta of the token0 balance of the pool\",\"amount1\":\"The delta of the token1 balance of the pool\",\"liquidity\":\"The liquidity of the pool after the swap\",\"recipient\":\"The address that received the output of the swap\",\"sender\":\"The address that initiated the swap call, and that received the callback\",\"sqrtPriceX96\":\"The sqrt(price) of the pool after the swap, as a Q64.96\",\"tick\":\"The log base 1.0001 of price of the pool after the swap\"}}},\"kind\":\"dev\",\"methods\":{},\"title\":\"Events emitted by a pool\",\"version\":1},\"userdoc\":{\"events\":{\"Burn(address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when a position's liquidity is removed\"},\"Collect(address,address,int24,int24,uint128,uint128)\":{\"notice\":\"Emitted when fees are collected by the owner of a position\"},\"CollectProtocol(address,address,uint128,uint128)\":{\"notice\":\"Emitted when the collected protocol fees are withdrawn by the factory owner\"},\"Flash(address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted by the pool for any flashes of token0/token1\"},\"IncreaseObservationCardinalityNext(uint16,uint16)\":{\"notice\":\"Emitted by the pool for increases to the number of observations that can be stored\"},\"Initialize(uint160,int24)\":{\"notice\":\"Emitted exactly once by a pool when #initialize is first called on the pool\"},\"Mint(address,address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when liquidity is minted for a given position\"},\"SetFeeProtocol(uint8,uint8,uint8,uint8)\":{\"notice\":\"Emitted when the protocol fee is changed by the pool\"},\"Swap(address,address,int256,int256,uint160,uint128,int24)\":{\"notice\":\"Emitted by the pool for any swaps between token0 and token1\"}},\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains all events emitted by the pool\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":\"IAstraCLPoolEvents\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol":{"IAstraCLPoolImmutables":{"abi":[{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLiquidityPerTick","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tickSpacing","outputs":[{"internalType":"int24","name":"","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"factory()":"c45a0155","fee()":"ddca3f43","maxLiquidityPerTick()":"70cf754a","tickSpacing()":"d0c93a7c","token0()":"0dfe1681","token1()":"d21220a7"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxLiquidityPerTick\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"factory()\":{\"returns\":{\"_0\":\"The contract address\"}},\"fee()\":{\"returns\":{\"_0\":\"The fee\"}},\"maxLiquidityPerTick()\":{\"details\":\"This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\",\"returns\":{\"_0\":\"The max amount of liquidity per tick\"}},\"tickSpacing()\":{\"details\":\"Ticks can only be used at multiples of this value, minimum of 1 and always positive e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ... This value is an int24 to avoid casting even though it is always positive.\",\"returns\":{\"_0\":\"The tick spacing\"}},\"token0()\":{\"returns\":{\"_0\":\"The token contract address\"}},\"token1()\":{\"returns\":{\"_0\":\"The token contract address\"}}},\"title\":\"Pool state that never changes\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"factory()\":{\"notice\":\"The contract that deployed the pool, which must adhere to the IAstraCLFactory interface\"},\"fee()\":{\"notice\":\"The pool's fee in hundredths of a bip, i.e. 1e-6\"},\"maxLiquidityPerTick()\":{\"notice\":\"The maximum amount of position liquidity that can use any tick in the range\"},\"tickSpacing()\":{\"notice\":\"The pool tick spacing\"},\"token0()\":{\"notice\":\"The first of the two tokens of the pool, sorted by address\"},\"token1()\":{\"notice\":\"The second of the two tokens of the pool, sorted by address\"}},\"notice\":\"These parameters are fixed for a pool forever, i.e., the methods will always return the same values\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":\"IAstraCLPoolImmutables\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol":{"IAstraCLPoolOwnerActions":{"abi":[{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"name":"collectProtocol","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"feeProtocol0","type":"uint8"},{"internalType":"uint8","name":"feeProtocol1","type":"uint8"}],"name":"setFeeProtocol","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"collectProtocol(address,uint128,uint128)":"85b66729","setFeeProtocol(uint8,uint8)":"8206a4d1"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collectProtocol\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"collectProtocol(address,uint128,uint128)\":{\"params\":{\"amount0Requested\":\"The maximum amount of token0 to send, can be 0 to collect fees in only token1\",\"amount1Requested\":\"The maximum amount of token1 to send, can be 0 to collect fees in only token0\",\"recipient\":\"The address to which collected protocol fees should be sent\"},\"returns\":{\"amount0\":\"The protocol fee collected in token0\",\"amount1\":\"The protocol fee collected in token1\"}},\"setFeeProtocol(uint8,uint8)\":{\"params\":{\"feeProtocol0\":\"new protocol fee for token0 of the pool\",\"feeProtocol1\":\"new protocol fee for token1 of the pool\"}}},\"title\":\"Permissioned pool actions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"collectProtocol(address,uint128,uint128)\":{\"notice\":\"Collect the protocol fee accrued to the pool\"},\"setFeeProtocol(uint8,uint8)\":{\"notice\":\"Set the denominator of the protocol's % share of the fees\"}},\"notice\":\"Contains pool methods that may only be called by the factory owner\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":\"IAstraCLPoolOwnerActions\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol":{"IAstraCLPoolState":{"abi":[{"inputs":[],"name":"feeGrowthGlobal0X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeGrowthGlobal1X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidity","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"observations","outputs":[{"internalType":"uint32","name":"blockTimestamp","type":"uint32"},{"internalType":"int56","name":"tickCumulative","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityCumulativeX128","type":"uint160"},{"internalType":"bool","name":"initialized","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"positions","outputs":[{"internalType":"uint128","name":"_liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFees","outputs":[{"internalType":"uint128","name":"token0","type":"uint128"},{"internalType":"uint128","name":"token1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"slot0","outputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint16","name":"observationIndex","type":"uint16"},{"internalType":"uint16","name":"observationCardinality","type":"uint16"},{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"},{"internalType":"uint8","name":"feeProtocol","type":"uint8"},{"internalType":"bool","name":"unlocked","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int16","name":"wordPosition","type":"int16"}],"name":"tickBitmap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"}],"name":"ticks","outputs":[{"internalType":"uint128","name":"liquidityGross","type":"uint128"},{"internalType":"int128","name":"liquidityNet","type":"int128"},{"internalType":"uint256","name":"feeGrowthOutside0X128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthOutside1X128","type":"uint256"},{"internalType":"int56","name":"tickCumulativeOutside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityOutsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsOutside","type":"uint32"},{"internalType":"bool","name":"initialized","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"feeGrowthGlobal0X128()":"f3058399","feeGrowthGlobal1X128()":"46141319","liquidity()":"1a686502","observations(uint256)":"252c09d7","positions(bytes32)":"514ea4bf","protocolFees()":"1ad8b03b","slot0()":"3850c7bd","tickBitmap(int16)":"5339c296","ticks(int24)":"f30dba93"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"feeGrowthGlobal0X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal1X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"observations\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"blockTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"int56\",\"name\":\"tickCumulative\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityCumulativeX128\",\"type\":\"uint160\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"_liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"token0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"token1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slot0\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int16\",\"name\":\"wordPosition\",\"type\":\"int16\"}],\"name\":\"tickBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"ticks\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidityGross\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside1X128\",\"type\":\"uint256\"},{\"internalType\":\"int56\",\"name\":\"tickCumulativeOutside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityOutsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsOutside\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"feeGrowthGlobal0X128()\":{\"details\":\"This value can overflow the uint256\"},\"feeGrowthGlobal1X128()\":{\"details\":\"This value can overflow the uint256\"},\"liquidity()\":{\"details\":\"This value has no relationship to the total liquidity across all ticks\"},\"observations(uint256)\":{\"details\":\"You most likely want to use #observe() instead of this method to get an observation as of some amount of time ago, rather than at a specific index in the array.\",\"params\":{\"index\":\"The element of the observations array to fetch\"},\"returns\":{\"blockTimestamp\":\"The timestamp of the observation, Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp, Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp, Returns initialized whether the observation has been initialized and the values are safe to use\"}},\"positions(bytes32)\":{\"params\":{\"key\":\"The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\"},\"returns\":{\"_liquidity\":\"The amount of liquidity in the position, Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke, Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke, Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke, Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\"}},\"protocolFees()\":{\"details\":\"Protocol fees will never exceed uint128 max in either token\"},\"slot0()\":{\"returns\":{\"sqrtPriceX96\":\"The current price of the pool as a sqrt(token1/token0) Q64.96 value tick The current tick of the pool, i.e. according to the last tick transition that was run. This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick boundary. observationIndex The index of the last oracle observation that was written, observationCardinality The current maximum number of observations stored in the pool, observationCardinalityNext The next maximum number of observations, to be updated when the observation. feeProtocol The protocol fee for both tokens of the pool. Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0 is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee. unlocked Whether the pool is currently locked to reentrancy\"}},\"ticks(int24)\":{\"params\":{\"tick\":\"The tick to look up\"},\"returns\":{\"liquidityGross\":\"the total amount of position liquidity that uses the pool either as tick lower or tick upper, liquidityNet how much liquidity changes when the pool price crosses the tick, feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0, feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1, tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick, secondsOutside the seconds spent on the other side of the tick from the current tick, initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false. Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0. In addition, these values are only relative and must be used only in comparison to previous snapshots for a specific position.\"}}},\"title\":\"Pool state that can change\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"feeGrowthGlobal0X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\"},\"feeGrowthGlobal1X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\"},\"liquidity()\":{\"notice\":\"The currently in range liquidity available to the pool\"},\"observations(uint256)\":{\"notice\":\"Returns data about a specific observation index\"},\"positions(bytes32)\":{\"notice\":\"Returns the information about a position by the position's key\"},\"protocolFees()\":{\"notice\":\"The amounts of token0 and token1 that are owed to the protocol\"},\"slot0()\":{\"notice\":\"The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas when accessed externally.\"},\"tickBitmap(int16)\":{\"notice\":\"Returns 256 packed tick initialized boolean values. See TickBitmap for more information\"},\"ticks(int24)\":{\"notice\":\"Look up information about a specific tick in the pool\"}},\"notice\":\"These methods compose the pool's state, and can change with any frequency including multiple times per transaction\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":\"IAstraCLPoolState\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/libraries/BitMath.sol":{"BitMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"187:2602:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"187:2602:11:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"This library provides functionality for computing bit properties of an unsigned integer\",\"kind\":\"dev\",\"methods\":{},\"title\":\"BitMath\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/libraries/BitMath.sol\":\"BitMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/BitMath.sol\":{\"keccak256\":\"0x82e425066110aac05ed8a9fc90f9ee85142b6f434769447e49d4438a8d9fcd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://77a97078bc992c18c59cb61e07fa4632c8a26b6babf00f3b16eabb5dcaa953b4\",\"dweb:/ipfs/QmTj15ufLWk6AxedSVXBcLp5cYf2DCJAeDi94cVemCkm54\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol":{"FixedPoint128":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"211:99:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"211:99:12:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"FixedPoint128\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol\":\"FixedPoint128\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol\":{\"keccak256\":\"0x2d1f4f73ae0d8f0a210b8d30084659b57c56ac8f2f96011fca36f00a6d417178\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2ba88933f16cd2df398e19c6ad227268f83c03081b70d243c97116d2ed9bc241\",\"dweb:/ipfs/QmTUGxdh8snzEM9VrTSS47StCg9VVWvvLJtJeNnMTFY4xb\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol":{"FixedPoint96":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"245:134:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"245:134:13:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Used in SqrtPriceMath.sol\",\"kind\":\"dev\",\"methods\":{},\"title\":\"FixedPoint96\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol\":\"FixedPoint96\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/libraries/FullMath.sol":{"FullMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"362:4702:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"362:4702:14:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Handles \\\"phantom overflow\\\" i.e., allows multiplication and division where an intermediate value overflows 256 bits\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Contains 512-bit math functions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/libraries/FullMath.sol\":\"FullMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x5340256039418f5d03512a44173d3dcf1da277a73a461e06fb5668f49cfc46f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75dee99795d1125875233a7f1d356935099cc97b4085c0e451060d77db85d144\",\"dweb:/ipfs/QmTGqyrxVLQd8TBaarqSQDiYvq1QFutCdmTyXk6JpxzKTN\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/libraries/LiquidityMath.sol":{"LiquidityMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"109:512:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"109:512:15:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Math library for liquidity\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/libraries/LiquidityMath.sol\":\"LiquidityMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/LiquidityMath.sol\":{\"keccak256\":\"0xd53041349718d5bce4a89e87cd911879d41ba42ba3fab0614e5e8b742f352b88\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ea7529b99ab4fc1d3e6c5a31990fb688f0a2d6cc302c0419e0cf5a2d6c563781\",\"dweb:/ipfs/QmVaphRSNpfChHZKzutQ9WprwCo2WE1euvThRfHcwsnHhj\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol":{"LowGasSafeMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"249:1446:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"249:1446:16:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Optimized overflow and underflow safe math operations\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains methods for doing math operations that revert on overflow or underflow for minimal gas cost\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol\":\"LowGasSafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0x86715eb960f18e01ac94e3bba4614ed51a887fa3c5bd1c43bf80aa98e019cf2d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfc1d5d58e59015086b0e65a6c3a2ddad312e2350480510f6c0c8167f3d71a37\",\"dweb:/ipfs/QmQndULYjFsHKHjMAKLMfc12vWbVB5FawtioHtvwcWRJZp\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol":{"SafeCast":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"165:884:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"165:884:17:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Safe casting methods\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains methods for safely casting between types\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0xd4c1c1b67f946b077d7c52a158113763a89a210fc2927b8491055a962ecd18c0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5344400c74320ca8dbe19241db7ff49babbd6c875c1b561c79d6e4315a9fb5f9\",\"dweb:/ipfs/QmRKCNTbkovxK1WvejXZr3iAHhGN97ZT1yWGsWCJFkrT5X\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/libraries/Tick.sol":{"Tick":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"284:9423:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"284:9423:18:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Tick\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains functions for managing tick processes and relevant calculations\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/libraries/Tick.sol\":\"Tick\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/LiquidityMath.sol\":{\"keccak256\":\"0xd53041349718d5bce4a89e87cd911879d41ba42ba3fab0614e5e8b742f352b88\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ea7529b99ab4fc1d3e6c5a31990fb688f0a2d6cc302c0419e0cf5a2d6c563781\",\"dweb:/ipfs/QmVaphRSNpfChHZKzutQ9WprwCo2WE1euvThRfHcwsnHhj\"]},\"@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0x86715eb960f18e01ac94e3bba4614ed51a887fa3c5bd1c43bf80aa98e019cf2d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfc1d5d58e59015086b0e65a6c3a2ddad312e2350480510f6c0c8167f3d71a37\",\"dweb:/ipfs/QmQndULYjFsHKHjMAKLMfc12vWbVB5FawtioHtvwcWRJZp\"]},\"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0xd4c1c1b67f946b077d7c52a158113763a89a210fc2927b8491055a962ecd18c0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5344400c74320ca8dbe19241db7ff49babbd6c875c1b561c79d6e4315a9fb5f9\",\"dweb:/ipfs/QmRKCNTbkovxK1WvejXZr3iAHhGN97ZT1yWGsWCJFkrT5X\"]},\"@airdao/astra-cl-core/contracts/libraries/Tick.sol\":{\"keccak256\":\"0x473bf9fd987161de1ecf215190db4c94b50eb12ea9ebafecbc7acef1bcd79dee\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e3e948f35862db5adeaffdb1f7072b51bc570041920e6593da61262eb0ac4817\",\"dweb:/ipfs/QmUDYpKSzSaFyDiC8AQx3RTzex3bu1W1g53itPyEJZkC1L\"]},\"@airdao/astra-cl-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0xe22d07f1ebf9c8468c81cb6905bfc8f8a54fa2f9b4a50742202a47cdbcb5af80\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d4773ca5008d2a2f496370695942c8ba3d6e1d487adbf5cda1149da12e3a6268\",\"dweb:/ipfs/QmcPYTLpEWfU8e3KAYBfHH7uYR4tGAkvnWrWS1CG8EkyLC\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/libraries/TickBitmap.sol":{"TickBitmap":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"331:3750:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"331:3750:19:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"The mapping uses int16 for keys since ticks are represented as int24 and there are 256 (2^8) values per word.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Packed tick initialized state library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Stores a packed mapping of tick index to its initialized state\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/libraries/TickBitmap.sol\":\"TickBitmap\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/BitMath.sol\":{\"keccak256\":\"0x82e425066110aac05ed8a9fc90f9ee85142b6f434769447e49d4438a8d9fcd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://77a97078bc992c18c59cb61e07fa4632c8a26b6babf00f3b16eabb5dcaa953b4\",\"dweb:/ipfs/QmTj15ufLWk6AxedSVXBcLp5cYf2DCJAeDi94cVemCkm54\"]},\"@airdao/astra-cl-core/contracts/libraries/TickBitmap.sol\":{\"keccak256\":\"0x47b7551bec8cd09091ae50a34c1ed576e317e404fbc1901593283b1cbd3be7c7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://486b70ed46a9389da18f93654d069024941ce8373b1b8fb30e5051cf2f014a1d\",\"dweb:/ipfs/QmecffKV1nSbd2LfobgR7eqJQSuL5ER5ApAgNbe4sWVFBG\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/libraries/TickMath.sol":{"TickMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"313:8387:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"313:8387:20:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"MAX_SQRT_RATIO\":{\"details\":\"The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK)\"},\"MAX_TICK\":{\"details\":\"The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128\"},\"MIN_SQRT_RATIO\":{\"details\":\"The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK)\"},\"MIN_TICK\":{\"details\":\"The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128\"}},\"title\":\"Math library for computing sqrt prices from ticks and vice versa\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Computes sqrt price for ticks of size 1.0001, i.e. sqrt(1.0001^tick) as fixed point Q64.96 numbers. Supports prices between 2**-128 and 2**128\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/libraries/TickMath.sol\":\"TickMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0xe22d07f1ebf9c8468c81cb6905bfc8f8a54fa2f9b4a50742202a47cdbcb5af80\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d4773ca5008d2a2f496370695942c8ba3d6e1d487adbf5cda1149da12e3a6268\",\"dweb:/ipfs/QmcPYTLpEWfU8e3KAYBfHH7uYR4tGAkvnWrWS1CG8EkyLC\"]}},\"version\":1}"}},"@airdao/astra-cl-core/contracts/libraries/UnsafeMath.sol":{"UnsafeMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"244:415:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"244:415:21:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Math functions that do not check inputs or outputs\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains methods that perform common math functions but do not do any overflow or underflow checks\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@airdao/astra-cl-core/contracts/libraries/UnsafeMath.sol\":\"UnsafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/UnsafeMath.sol\":{\"keccak256\":\"0x5f36d7d16348d8c37fe64fda932018d6e5e8acecd054f0f97d32db62d20c6c88\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4bd4e817ea3d2c26bb2be7e58db3eaa403119562c18d4c09cc92fb31aa231496\",\"dweb:/ipfs/QmbpjgL8Hf1mhmUyf9hpuPk4noGAggCdTqaRBFKqNF3AQw\"]}},\"version\":1}"}},"@openzeppelin/contracts/cryptography/ECDSA.sol":{"ECDSA":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"264:3633:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"264:3633:22:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/cryptography/ECDSA.sol\":\"ECDSA\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/cryptography/ECDSA.sol\":{\"keccak256\":\"0xc80ce3fcc5e444a2c5bdb902fe4d4f4ecba04e9b416425697d00ae95c1955f82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a84a791d3dfe88a0dcc5b3b825e8375d0ed60c96067b5beb9e2f7dabb0afb0e6\",\"dweb:/ipfs/QmPWUkNDWJkNgEZp1WuAMKkd2XvkuZBcx8HTTTauaj837Y\"]}},\"version\":1}"}},"@openzeppelin/contracts/drafts/EIP712.sol":{"EIP712":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data. The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible, thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in their contracts using a combination of `abi.encode` and `keccak256`. This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA ({_hashTypedDataV4}). The implementation of the domain separator was designed to be as efficient as possible while still properly updating the chain id to protect against replay attacks on an eventual fork of the chain. NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the domain separator and parameter caches. The meaning of `name` and `version` is specified in https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]: - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol. - `version`: the current major version of the signing domain. NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart contract upgrade].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/drafts/EIP712.sol\":\"EIP712\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/drafts/EIP712.sol\":{\"keccak256\":\"0xe4bc5cda2bfee483ff10334881c9ea5cc4df7faa7b18a5a4b8f02fc51cf8adca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f0314cb3b722c5d221eeef6f5c050d4fd339bf7f2bf41c9304a62ff95bf33a\",\"dweb:/ipfs/QmVSBgT22SEY2mAkd8qNjsqTq8tciugToxbRzwPSSADPuJ\"]}},\"version\":1}"}},"@openzeppelin/contracts/drafts/ERC20Permit.sol":{"ERC20Permit":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\\\"1\\\"`. It's a good idea to use the same `name` that is defined as the ERC20 token name.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/drafts/ERC20Permit.sol\":\"ERC20Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/cryptography/ECDSA.sol\":{\"keccak256\":\"0xc80ce3fcc5e444a2c5bdb902fe4d4f4ecba04e9b416425697d00ae95c1955f82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a84a791d3dfe88a0dcc5b3b825e8375d0ed60c96067b5beb9e2f7dabb0afb0e6\",\"dweb:/ipfs/QmPWUkNDWJkNgEZp1WuAMKkd2XvkuZBcx8HTTTauaj837Y\"]},\"@openzeppelin/contracts/drafts/EIP712.sol\":{\"keccak256\":\"0xe4bc5cda2bfee483ff10334881c9ea5cc4df7faa7b18a5a4b8f02fc51cf8adca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f0314cb3b722c5d221eeef6f5c050d4fd339bf7f2bf41c9304a62ff95bf33a\",\"dweb:/ipfs/QmVSBgT22SEY2mAkd8qNjsqTq8tciugToxbRzwPSSADPuJ\"]},\"@openzeppelin/contracts/drafts/ERC20Permit.sol\":{\"keccak256\":\"0x680c4b732f003b048d6a3cf227398d2f7f620eca779ab379662430adb6b19dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb8490d82756117d1ace222668f78756a1982deef7f4483d070fc37a1aeeb85c\",\"dweb:/ipfs/QmWv8kZ4y2joQ8iSe7Xc6ceULqns8TemtvW2j2KRsdryzD\"]},\"@openzeppelin/contracts/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x36b5ca4eabe888b39b10973621ca0dcc9b1508f8d06db9ddf045d7aa7c867d4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccbd79e8d556aa7011babb0e5d1e55a966add74853e7ba0274ff184bd96ef002\",\"dweb:/ipfs/QmV28ozNRUFDiDUMvCwcFmLTQPG6nfvgeKr4cmbHWoegtH\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0x2424442932373c51391b31409f9620d1e1396c37f41ab9d82c51d69bebdd1ab5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dcdf37ee59c10644338fbdfb3b7692125ff42003b34990eff8b04beedd89846f\",\"dweb:/ipfs/QmTMAvXQ4DoZbUSS3oBkNr2SddRPCTrE7DZNXrFArHnk8x\"]}},\"version\":1}"}},"@openzeppelin/contracts/drafts/IERC20Permit.sol":{"IERC20Permit":{"abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over `owner`'s tokens, given `owner`'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/drafts/IERC20Permit.sol\":\"IERC20Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]}},\"version\":1}"}},"@openzeppelin/contracts/introspection/ERC165.sol":{"ERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts may inherit from this and call {_registerInterface} to declare their support of an interface.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. Time complexity O(1), guaranteed to always use less than 30 000 gas.\"}},\"stateVariables\":{\"_supportedInterfaces\":{\"details\":\"Mapping of interface ids to whether or not it's supported.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0x234cdf2c3efd5f0dc17d32fe65d33c21674ca17de1e945eb60ac1076d7152d96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd196df6ec4549923b4581fcb4be3d05237b5221067410d0bc34cb76d4174441\",\"dweb:/ipfs/Qmf2vFVgbfpD4FvAhQXkprg9sKSX3TXKRdbQTSjJVEmzWj\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]}},\"version\":1}"}},"@openzeppelin/contracts/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]}},\"version\":1}"}},"@openzeppelin/contracts/math/SafeMath.sol":{"SafeMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"622:6594:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"622:6594:28:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]}},\"version\":1}"}},"@openzeppelin/contracts/math/SignedSafeMath.sol":{"SignedSafeMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"163:2495:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"163:2495:29:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Signed math operations with safety checks that revert on error.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SignedSafeMath\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/math/SignedSafeMath.sol\":\"SignedSafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/math/SignedSafeMath.sol\":{\"keccak256\":\"0xba085261d44cf28d2583f7c8cdb2f0a6a495ff1a640f86d995ea9d36b42b0046\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://03481543f67d854c94f73b006609ccd0e11a2461837296bf9d27b14b4bde7de6\",\"dweb:/ipfs/QmVt8ZoWv6jPdtoo5zikqrj7ijDvKoQ4BWYiufctStkXd3\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ERC20":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60806040523480156200001157600080fd5b5060405162000e6e38038062000e6e833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405250508251620001b491506003906020850190620001e0565b508051620001ca906004906020840190620001e0565b50506005805460ff19166012179055506200028c565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000218576000855562000263565b82601f106200023357805160ff191683800117855562000263565b8280016001018555821562000263579182015b828111156200026357825182559160200191906001019062000246565b506200027192915062000275565b5090565b5b8082111562000271576000815560010162000276565b610bd2806200029c6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a0610405565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561040b565b6101fd6104ac565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104b5565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610510565b6100d6610538565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105b7565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561062c565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610640565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103fc6103f5610678565b848461067c565b50600192915050565b60025490565b60006104188484846107c3565b6104a284610424610678565b61049d85604051806060016040528060288152602001610b306028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061046f610678565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610993565b61067c565b5060019392505050565b60055460ff1690565b60006103fc6104c2610678565b8461049d85600160006104d3610678565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610a44565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b60006103fc6105c4610678565b8461049d85604051806060016040528060258152602001610ba160259139600160006105ee610678565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610993565b60006103fc610639610678565b84846107c3565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff83166106e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610b7d6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610754576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610ae86022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831661082f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610b586025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821661089b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610ac56023913960400191505060405180910390fd5b6108a6838383610abf565b6108f081604051806060016040528060268152602001610b0a6026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610993565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461092c9082610a44565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610a3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a015781810151838201526020016109e9565b50505050905090810190601f168015610a2e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610ab857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xE6E CODESIZE SUB DUP1 PUSH3 0xE6E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP DUP3 MLOAD PUSH3 0x1B4 SWAP2 POP PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x1E0 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1CA SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x1E0 JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP PUSH3 0x28C JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x218 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x263 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x233 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x263 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x263 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x263 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x246 JUMP JUMPDEST POP PUSH3 0x271 SWAP3 SWAP2 POP PUSH3 0x275 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x271 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x276 JUMP JUMPDEST PUSH2 0xBD2 DUP1 PUSH3 0x29C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F9 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x27F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1F5 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x334 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x405 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x40B JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x4AC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4B5 JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x510 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x538 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5B7 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x62C JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x640 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3C1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x3F5 PUSH2 0x678 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x67C JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x418 DUP5 DUP5 DUP5 PUSH2 0x7C3 JUMP JUMPDEST PUSH2 0x4A2 DUP5 PUSH2 0x424 PUSH2 0x678 JUMP JUMPDEST PUSH2 0x49D DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB30 PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x46F PUSH2 0x678 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x993 JUMP JUMPDEST PUSH2 0x67C JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x4C2 PUSH2 0x678 JUMP JUMPDEST DUP5 PUSH2 0x49D DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x4D3 PUSH2 0x678 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0xA44 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x5C4 PUSH2 0x678 JUMP JUMPDEST DUP5 PUSH2 0x49D DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBA1 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x5EE PUSH2 0x678 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x993 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x639 PUSH2 0x678 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x7C3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x6E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB7D PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x754 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAE8 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x82F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB58 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x89B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAC5 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x8A6 DUP4 DUP4 DUP4 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x8F0 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB0A PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x993 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x92C SWAP1 DUP3 PUSH2 0xA44 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xA3C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA01 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x9E9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xA2E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xAB8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA164736F PUSH13 0x6343000706000A000000000000 ","sourceMap":"1313:9467:30:-:0;;;1950:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1950:138:30;;;;;;;;;;-1:-1:-1;1950:138:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1950:138:30;;;;;;;;;;-1:-1:-1;1950:138:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1950:138:30;;-1:-1:-1;;2017:13:30;;;;-1:-1:-1;2017:5:30;;:13;;;;;:::i;:::-;-1:-1:-1;2040:17:30;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2067:9:30;:14;;-1:-1:-1;;2067:14:30;2079:2;2067:14;;;-1:-1:-1;1313:9467:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1313:9467:30;;;-1:-1:-1;1313:9467:30;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a0610405565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561040b565b6101fd6104ac565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104b5565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610510565b6100d6610538565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105b7565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561062c565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610640565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103fc6103f5610678565b848461067c565b50600192915050565b60025490565b60006104188484846107c3565b6104a284610424610678565b61049d85604051806060016040528060288152602001610b306028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061046f610678565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610993565b61067c565b5060019392505050565b60055460ff1690565b60006103fc6104c2610678565b8461049d85600160006104d3610678565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610a44565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b60006103fc6105c4610678565b8461049d85604051806060016040528060258152602001610ba160259139600160006105ee610678565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610993565b60006103fc610639610678565b84846107c3565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff83166106e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610b7d6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610754576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610ae86022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831661082f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610b586025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821661089b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610ac56023913960400191505060405180910390fd5b6108a6838383610abf565b6108f081604051806060016040528060268152602001610b0a6026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610993565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461092c9082610a44565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610a3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a015781810151838201526020016109e9565b50505050905090810190601f168015610a2e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610ab857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F9 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x27F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1F5 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x334 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x405 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x40B JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x4AC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4B5 JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x510 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x538 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5B7 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x62C JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x640 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3C1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x3F5 PUSH2 0x678 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x67C JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x418 DUP5 DUP5 DUP5 PUSH2 0x7C3 JUMP JUMPDEST PUSH2 0x4A2 DUP5 PUSH2 0x424 PUSH2 0x678 JUMP JUMPDEST PUSH2 0x49D DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB30 PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x46F PUSH2 0x678 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x993 JUMP JUMPDEST PUSH2 0x67C JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x4C2 PUSH2 0x678 JUMP JUMPDEST DUP5 PUSH2 0x49D DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x4D3 PUSH2 0x678 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0xA44 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x5C4 PUSH2 0x678 JUMP JUMPDEST DUP5 PUSH2 0x49D DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBA1 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x5EE PUSH2 0x678 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x993 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FC PUSH2 0x639 PUSH2 0x678 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x7C3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x6E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB7D PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x754 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAE8 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x82F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB58 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x89B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAC5 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x8A6 DUP4 DUP4 DUP4 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x8F0 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB0A PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x993 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x92C SWAP1 DUP3 PUSH2 0xA44 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xA3C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA01 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x9E9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xA2E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xAB8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA164736F PUSH13 0x6343000706000A000000000000 ","sourceMap":"1313:9467:30:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2153:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4229:166;;;;;;;;;;;;;;;;-1:-1:-1;4229:166:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3220:106;;;:::i;:::-;;;;;;;;;;;;;;;;4862:317;;;;;;;;;;;;;;;;-1:-1:-1;4862:317:30;;;;;;;;;;;;;;;;;;:::i;3071:89::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5574:215;;;;;;;;;;;;;;;;-1:-1:-1;5574:215:30;;;;;;;;;:::i;3384:125::-;;;;;;;;;;;;;;;;-1:-1:-1;3384:125:30;;;;:::i;2355:93::-;;;:::i;6276:266::-;;;;;;;;;;;;;;;;-1:-1:-1;6276:266:30;;;;;;;;;:::i;3712:172::-;;;;;;;;;;;;;;;;-1:-1:-1;3712:172:30;;;;;;;;;:::i;3942:149::-;;;;;;;;;;;;;;;;-1:-1:-1;3942:149:30;;;;;;;;;;;:::i;2153:89::-;2230:5;2223:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2198:13;;2223:12;;2230:5;;2223:12;;2230:5;2223:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2153:89;:::o;4229:166::-;4312:4;4328:39;4337:12;:10;:12::i;:::-;4351:7;4360:6;4328:8;:39::i;:::-;-1:-1:-1;4384:4:30;4229:166;;;;:::o;3220:106::-;3307:12;;3220:106;:::o;4862:317::-;4968:4;4984:36;4994:6;5002:9;5013:6;4984:9;:36::i;:::-;5030:121;5039:6;5047:12;:10;:12::i;:::-;5061:89;5099:6;5061:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;5081:12;:10;:12::i;:::-;5061:33;;;;;;;;;;;;;-1:-1:-1;5061:33:30;;;:89;:37;:89::i;:::-;5030:8;:121::i;:::-;-1:-1:-1;5168:4:30;4862:317;;;;;:::o;3071:89::-;3144:9;;;;3071:89;:::o;5574:215::-;5662:4;5678:83;5687:12;:10;:12::i;:::-;5701:7;5710:50;5749:10;5710:11;:25;5722:12;:10;:12::i;:::-;5710:25;;;;;;;;;;;;;;;;;;-1:-1:-1;5710:25:30;;;:34;;;;;;;;;;;:38;:50::i;3384:125::-;3484:18;;3458:7;3484:18;;;;;;;;;;;;3384:125::o;2355:93::-;2434:7;2427:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2402:13;;2427:14;;2434:7;;2427:14;;2434:7;2427:14;;;;;;;;;;;;;;;;;;;;;;;;6276:266;6369:4;6385:129;6394:12;:10;:12::i;:::-;6408:7;6417:96;6456:15;6417:96;;;;;;;;;;;;;;;;;:11;:25;6429:12;:10;:12::i;:::-;6417:25;;;;;;;;;;;;;;;;;;-1:-1:-1;6417:25:30;;;:34;;;;;;;;;;;:96;:38;:96::i;3712:172::-;3798:4;3814:42;3824:12;:10;:12::i;:::-;3838:9;3849:6;3814:9;:42::i;3942:149::-;4057:18;;;;4031:7;4057:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3942:149::o;598:104:38:-;685:10;598:104;:::o;9340:340:30:-;9441:19;;;9433:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9519:21;;;9511:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9590:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9641:32;;;;;;;;;;;;;;;;;9340:340;;;:::o;7016:530::-;7121:20;;;7113:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7201:23;;;7193:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7275:47;7296:6;7304:9;7315:6;7275:20;:47::i;:::-;7353:71;7375:6;7353:71;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;7333:17;;;;:9;:17;;;;;;;;;;;:91;;;;7457:20;;;;;;;:32;;7482:6;7457:24;:32::i;:::-;7434:20;;;;:9;:20;;;;;;;;;;;;:55;;;;7504:35;;;;;;;7434:20;;7504:35;;;;;;;;;;;;;7016:530;;;:::o;5424:163:28:-;5510:7;5545:12;5537:6;;;;5529:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5575:5:28;;;5424:163::o;2682:175::-;2740:7;2771:5;;;2794:6;;;;2786:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2849:1;2682:175;-1:-1:-1;;;2682:175:28:o;10686:92:30:-;;;;:::o"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin guidelines: functions revert instead of returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}, initializes {decimals} with a default value of 18. To select a different value for {decimals}, use {_setupDecimals}. All three of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x36b5ca4eabe888b39b10973621ca0dcc9b1508f8d06db9ddf045d7aa7c867d4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccbd79e8d556aa7011babb0e5d1e55a966add74853e7ba0274ff184bd96ef002\",\"dweb:/ipfs/QmV28ozNRUFDiDUMvCwcFmLTQPG6nfvgeKr4cmbHWoegtH\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"ERC721":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60806040523480156200001157600080fd5b506040516200233838038062002338833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405250620001b391506301ffc9a760e01b90506200021d565b8151620001c8906006906020850190620002a2565b508051620001de906007906020840190620002a2565b50620001f16380ac58cd60e01b6200021d565b62000203635b5e139f60e01b6200021d565b6200021563780e9d6360e01b6200021d565b50506200034e565b6001600160e01b031980821614156200027d576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620002da576000855562000325565b82601f10620002f557805160ff191683800117855562000325565b8280016001018555821562000325579182015b828111156200032557825182559160200191906001019062000308565b506200033392915062000337565b5090565b5b8082111562000333576000815560010162000338565b611fda806200035e6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80634f6ccce7116100b257806395d89b4111610081578063b88d4fde11610066578063b88d4fde14610402578063c87b56dd146104d5578063e985e9c5146104f25761011b565b806395d89b41146103bf578063a22cb465146103c75761011b565b80634f6ccce71461034a5780636352211e146103675780636c0360eb1461038457806370a082311461038c5761011b565b806318160ddd116100ee57806318160ddd1461027157806323b872dd1461028b5780632f745c59146102ce57806342842e0e146103075761011b565b806301ffc9a71461012057806306fdde0314610173578063081812fc146101f0578063095ea7b314610236575b600080fd5b61015f6004803603602081101561013657600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661052d565b604080519115158252519081900360200190f35b61017b610568565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101b557818101518382015260200161019d565b50505050905090810190601f1680156101e25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020d6004803603602081101561020657600080fd5b503561061c565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61026f6004803603604081101561024c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106a5565b005b6102796107e8565b60408051918252519081900360200190f35b61026f600480360360608110156102a157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356107f9565b610279600480360360408110156102e457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561086a565b61026f6004803603606081101561031d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356108a2565b6102796004803603602081101561036057600080fd5b50356108bd565b61020d6004803603602081101561037d57600080fd5b50356108d3565b61017b6108fb565b610279600480360360208110156103a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661097a565b61017b610a16565b61026f600480360360408110156103dd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610a95565b61026f6004803603608081101561041857600080fd5b73ffffffffffffffffffffffffffffffffffffffff82358116926020810135909116916040820135919081019060808101606082013564010000000081111561046057600080fd5b82018360208201111561047257600080fd5b8035906020019184600183028401116401000000008311171561049457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c06945050505050565b61017b600480360360208110156104eb57600080fd5b5035610c7e565b61015f6004803603604081101561050857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610feb565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526020819052604090205460ff165b919050565b60068054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106125780601f106105e757610100808354040283529160200191610612565b820191906000526020600020905b8154815290600101906020018083116105f557829003601f168201915b5050505050905090565b600061062782611026565b61067c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611ef8602c913960400191505060405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006106b0826108d3565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610737576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611f7c6021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610756611033565b73ffffffffffffffffffffffffffffffffffffffff16148061078457506107848161077f611033565b610feb565b6107d9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611e4b6038913960400191505060405180910390fd5b6107e38383611037565b505050565b60006107f460026110d7565b905090565b61080a610804611033565b826110e2565b61085f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611f9d6031913960400191505060405180910390fd5b6107e38383836111d4565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040812061089990836113af565b90505b92915050565b6107e383838360405180602001604052806000815250610c06565b6000806108cb6002846113bb565b509392505050565b600061089c82604051806060016040528060298152602001611ead60299139600291906113d7565b60098054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106125780601f106105e757610100808354040283529160200191610612565b600073ffffffffffffffffffffffffffffffffffffffff82166109e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611e83602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902061089c906110d7565b60078054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106125780601f106105e757610100808354040283529160200191610612565b610a9d611033565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b3757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060056000610b44611033565b73ffffffffffffffffffffffffffffffffffffffff90811682526020808301939093526040918201600090812091871680825291909352912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001692151592909217909155610bb3611033565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b610c17610c11611033565b836110e2565b610c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611f9d6031913960400191505060405180910390fd5b610c78848484846113ee565b50505050565b6060610c8982611026565b610cde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611f4d602f913960400191505060405180910390fd5b60008281526008602090815260408083208054825160026001831615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190921691909104601f810185900485028201850190935282815292909190830182828015610d8f5780601f10610d6457610100808354040283529160200191610d8f565b820191906000526020600020905b815481529060010190602001808311610d7257829003601f168201915b505050505090506000610da06108fb565b9050805160001415610db457509050610563565b815115610ecf5780826040516020018083805190602001908083835b60208310610e0d57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610dd0565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905285519190930192850191508083835b60208310610e9157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610e54565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050610563565b80610ed98561145a565b6040516020018083805190602001908083835b60208310610f2957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610eec565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905285519190930192850191508083835b60208310610fad57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610f70565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b600061089c600283611587565b3390565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190611091826108d3565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061089c82611593565b60006110ed82611026565b611142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611e1f602c913960400191505060405180910390fd5b600061114d836108d3565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806111bc57508373ffffffffffffffffffffffffffffffffffffffff166111a48461061c565b73ffffffffffffffffffffffffffffffffffffffff16145b806111cc57506111cc8185610feb565b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff166111f4826108d3565b73ffffffffffffffffffffffffffffffffffffffff1614611260576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611f246029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166112cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611dfb6024913960400191505060405180910390fd5b6112d78383836107e3565b6112e2600082611037565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090206113119082611597565b5073ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902061134190826115a3565b5061134e600282846115af565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061089983836115d2565b60008080806113ca8686611650565b9097909650945050505050565b60006113e48484846116e5565b90505b9392505050565b6113f98484846111d4565b611405848484846117c9565b610c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611dc96032913960400191505060405180910390fd5b60608161149b575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610563565b8160005b81156114b357600101600a8204915061149f565b60008167ffffffffffffffff811180156114cc57600080fd5b506040519080825280601f01601f1916602001820160405280156114f7576020820181803683370190505b5085935090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b831561157e57600a840660300160f81b8282806001900393508151811061154457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350611521565b50949350505050565b600061089983836119d9565b5490565b600061089983836119f1565b60006108998383611ad5565b60006113e4848473ffffffffffffffffffffffffffffffffffffffff8516611b1f565b8154600090821061162e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611da76022913960400191505060405180910390fd5b82600001828154811061163d57fe5b9060005260206000200154905092915050565b8154600090819083106116ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611ed66022913960400191505060405180910390fd5b60008460000184815481106116bf57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6000828152600184016020526040812054828161179a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561175f578181015183820152602001611747565b50505050905090810190601f16801561178c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106117ad57fe5b9060005260206000209060020201600101549150509392505050565b60006117ea8473ffffffffffffffffffffffffffffffffffffffff16611bb6565b6117f6575060016111cc565b600061196e7f150b7a0200000000000000000000000000000000000000000000000000000000611824611033565b888787604051602401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156118a557818101518382015260200161188d565b50505050905090810190601f1680156118d25780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001611dc96032913973ffffffffffffffffffffffffffffffffffffffff88169190611bbc565b9050600081806020019051602081101561198757600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001492505050949350505050565b60009081526001919091016020526040902054151590565b60008181526001830160205260408120548015611acb5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083019190810190600090879083908110611a4257fe5b9060005260206000200154905080876000018481548110611a5f57fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080611a8f57fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061089c565b600091505061089c565b6000611ae183836119d9565b611b175750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561089c565b50600061089c565b600082815260018401602052604081205480611b845750506040805180820182528381526020808201848152865460018181018955600089815284812095516002909302909501918255915190820155865486845281880190925292909120556113e7565b82856000016001830381548110611b9757fe5b90600052602060002090600202016001018190555060009150506113e7565b3b151590565b60606113e4848460008585611bd085611bb6565b611c3b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310611ca457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611c67565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611d06576040519150601f19603f3d011682016040523d82523d6000602084013e611d0b565b606091505b5091509150611d1b828286611d26565b979650505050505050565b60608315611d355750816113e7565b825115611d455782518084602001fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815284516024840152845185939192839260440191908501908083836000831561175f57818101518382015260200161174756fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2338 CODESIZE SUB DUP1 PUSH3 0x2338 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP PUSH3 0x1B3 SWAP2 POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL SWAP1 POP PUSH3 0x21D JUMP JUMPDEST DUP2 MLOAD PUSH3 0x1C8 SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x2A2 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1DE SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x2A2 JUMP JUMPDEST POP PUSH3 0x1F1 PUSH4 0x80AC58CD PUSH1 0xE0 SHL PUSH3 0x21D JUMP JUMPDEST PUSH3 0x203 PUSH4 0x5B5E139F PUSH1 0xE0 SHL PUSH3 0x21D JUMP JUMPDEST PUSH3 0x215 PUSH4 0x780E9D63 PUSH1 0xE0 SHL PUSH3 0x21D JUMP JUMPDEST POP POP PUSH3 0x34E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP1 DUP3 AND EQ ISZERO PUSH3 0x27D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433136353A20696E76616C696420696E7465726661636520696400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x2DA JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x325 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x2F5 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x325 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x325 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x325 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x308 JUMP JUMPDEST POP PUSH3 0x333 SWAP3 SWAP2 POP PUSH3 0x337 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x333 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x338 JUMP JUMPDEST PUSH2 0x1FDA DUP1 PUSH3 0x35E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x11B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F6CCCE7 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x4D5 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x4F2 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x3BF JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x3C7 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x34A JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x367 JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x38C JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x2CE JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x307 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x173 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x1F0 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x236 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x52D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17B PUSH2 0x568 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1B5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1E2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x61C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x26F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6A5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x279 PUSH2 0x7E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x26F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7F9 JUMP JUMPDEST PUSH2 0x279 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x86A JUMP JUMPDEST PUSH2 0x26F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x8A2 JUMP JUMPDEST PUSH2 0x279 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x8BD JUMP JUMPDEST PUSH2 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x8D3 JUMP JUMPDEST PUSH2 0x17B PUSH2 0x8FB JUMP JUMPDEST PUSH2 0x279 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x97A JUMP JUMPDEST PUSH2 0x17B PUSH2 0xA16 JUMP JUMPDEST PUSH2 0x26F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xA95 JUMP JUMPDEST PUSH2 0x26F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x460 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x472 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x494 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xC06 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x17B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC7E JUMP JUMPDEST PUSH2 0x15F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x508 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xFEB JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x612 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5E7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x612 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5F5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x627 DUP3 PUSH2 0x1026 JUMP JUMPDEST PUSH2 0x67C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1EF8 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B0 DUP3 PUSH2 0x8D3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x737 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F7C PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x756 PUSH2 0x1033 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x784 JUMPI POP PUSH2 0x784 DUP2 PUSH2 0x77F PUSH2 0x1033 JUMP JUMPDEST PUSH2 0xFEB JUMP JUMPDEST PUSH2 0x7D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E4B PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7E3 DUP4 DUP4 PUSH2 0x1037 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F4 PUSH1 0x2 PUSH2 0x10D7 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x80A PUSH2 0x804 PUSH2 0x1033 JUMP JUMPDEST DUP3 PUSH2 0x10E2 JUMP JUMPDEST PUSH2 0x85F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F9D PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7E3 DUP4 DUP4 DUP4 PUSH2 0x11D4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x899 SWAP1 DUP4 PUSH2 0x13AF JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x7E3 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xC06 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8CB PUSH1 0x2 DUP5 PUSH2 0x13BB JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x89C DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1EAD PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0x13D7 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x612 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5E7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x612 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x9E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E83 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x89C SWAP1 PUSH2 0x10D7 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x612 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5E7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x612 JUMP JUMPDEST PUSH2 0xA9D PUSH2 0x1033 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xB37 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0xB44 PUSH2 0x1033 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0xBB3 PUSH2 0x1033 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xC17 PUSH2 0xC11 PUSH2 0x1033 JUMP JUMPDEST DUP4 PUSH2 0x10E2 JUMP JUMPDEST PUSH2 0xC6C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F9D PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC78 DUP5 DUP5 DUP5 DUP5 PUSH2 0x13EE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xC89 DUP3 PUSH2 0x1026 JUMP JUMPDEST PUSH2 0xCDE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F4D PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP3 MLOAD PUSH1 0x2 PUSH1 0x1 DUP4 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 DIV PUSH1 0x1F DUP2 ADD DUP6 SWAP1 DIV DUP6 MUL DUP3 ADD DUP6 ADD SWAP1 SWAP4 MSTORE DUP3 DUP2 MSTORE SWAP3 SWAP1 SWAP2 SWAP1 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xD8F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xD64 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xD8F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xD72 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0xDA0 PUSH2 0x8FB JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0xDB4 JUMPI POP SWAP1 POP PUSH2 0x563 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xECF JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xE0D JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xDD0 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP6 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP6 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xE91 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xE54 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x563 JUMP JUMPDEST DUP1 PUSH2 0xED9 DUP6 PUSH2 0x145A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xF29 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xEEC JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP6 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP6 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xFAD JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xF70 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x89C PUSH1 0x2 DUP4 PUSH2 0x1587 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x1091 DUP3 PUSH2 0x8D3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x89C DUP3 PUSH2 0x1593 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10ED DUP3 PUSH2 0x1026 JUMP JUMPDEST PUSH2 0x1142 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E1F PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x114D DUP4 PUSH2 0x8D3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x11BC JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x11A4 DUP5 PUSH2 0x61C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST DUP1 PUSH2 0x11CC JUMPI POP PUSH2 0x11CC DUP2 DUP6 PUSH2 0xFEB JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x11F4 DUP3 PUSH2 0x8D3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1260 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F24 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x12CC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DFB PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12D7 DUP4 DUP4 DUP4 PUSH2 0x7E3 JUMP JUMPDEST PUSH2 0x12E2 PUSH1 0x0 DUP3 PUSH2 0x1037 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1311 SWAP1 DUP3 PUSH2 0x1597 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1341 SWAP1 DUP3 PUSH2 0x15A3 JUMP JUMPDEST POP PUSH2 0x134E PUSH1 0x2 DUP3 DUP5 PUSH2 0x15AF JUMP JUMPDEST POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x899 DUP4 DUP4 PUSH2 0x15D2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x13CA DUP7 DUP7 PUSH2 0x1650 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13E4 DUP5 DUP5 DUP5 PUSH2 0x16E5 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x13F9 DUP5 DUP5 DUP5 PUSH2 0x11D4 JUMP JUMPDEST PUSH2 0x1405 DUP5 DUP5 DUP5 DUP5 PUSH2 0x17C9 JUMP JUMPDEST PUSH2 0xC78 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DC9 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x149B JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x563 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x14B3 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x149F JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x14CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x14F7 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x157E JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x1544 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x1521 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x899 DUP4 DUP4 PUSH2 0x19D9 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x899 DUP4 DUP4 PUSH2 0x19F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x899 DUP4 DUP4 PUSH2 0x1AD5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13E4 DUP5 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x1B1F JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x162E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DA7 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x163D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP4 LT PUSH2 0x16AE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1ED6 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x16BF JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD DUP2 PUSH1 0x1 ADD SLOAD SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 DUP2 PUSH2 0x179A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x175F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1747 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x178C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP5 PUSH1 0x0 ADD PUSH1 0x1 DUP3 SUB DUP2 SLOAD DUP2 LT PUSH2 0x17AD JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17EA DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1BB6 JUMP JUMPDEST PUSH2 0x17F6 JUMPI POP PUSH1 0x1 PUSH2 0x11CC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x196E PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH2 0x1824 PUSH2 0x1033 JUMP JUMPDEST DUP9 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18A5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x188D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x18D2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1DC9 PUSH1 0x32 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 SWAP1 PUSH2 0x1BBC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1987 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ SWAP3 POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1ACB JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x1A42 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1A5F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP5 ADD SWAP1 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x1A8F JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP5 POP POP POP POP POP PUSH2 0x89C JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x89C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AE1 DUP4 DUP4 PUSH2 0x19D9 JUMP JUMPDEST PUSH2 0x1B17 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x89C JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x89C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x1B84 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP5 DUP2 MSTORE DUP7 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP10 SSTORE PUSH1 0x0 DUP10 DUP2 MSTORE DUP5 DUP2 KECCAK256 SWAP6 MLOAD PUSH1 0x2 SWAP1 SWAP4 MUL SWAP1 SWAP6 ADD SWAP2 DUP3 SSTORE SWAP2 MLOAD SWAP1 DUP3 ADD SSTORE DUP7 SLOAD DUP7 DUP5 MSTORE DUP2 DUP9 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x13E7 JUMP JUMPDEST DUP3 DUP6 PUSH1 0x0 ADD PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH2 0x1B97 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 SWAP2 POP POP PUSH2 0x13E7 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x13E4 DUP5 DUP5 PUSH1 0x0 DUP6 DUP6 PUSH2 0x1BD0 DUP6 PUSH2 0x1BB6 JUMP JUMPDEST PUSH2 0x1C3B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1CA4 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1C67 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1D06 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1D0B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1D1B DUP3 DUP3 DUP7 PUSH2 0x1D26 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1D35 JUMPI POP DUP2 PUSH2 0x13E7 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x1D45 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP5 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP5 MLOAD DUP6 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x175F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1747 JUMP INVALID GASLIMIT PUSH15 0x756D657261626C655365743A20696E PUSH5 0x6578206F75 PUSH21 0x206F6620626F756E64734552433732313A20747261 PUSH15 0x7366657220746F206E6F6E20455243 CALLDATACOPY ORIGIN BALANCE MSTORE PUSH6 0x636569766572 KECCAK256 PUSH10 0x6D706C656D656E746572 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH16 0x70657261746F7220717565727920666F PUSH19 0x206E6F6E6578697374656E7420746F6B656E45 MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76652063616C6C6572206973206E6F74206F PUSH24 0x6E6572206E6F7220617070726F76656420666F7220616C6C GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH3 0x616C61 PUSH15 0x636520717565727920666F72207468 PUSH6 0x207A65726F20 PUSH2 0x6464 PUSH19 0x6573734552433732313A206F776E6572207175 PUSH6 0x727920666F72 KECCAK256 PUSH15 0x6F6E6578697374656E7420746F6B65 PUSH15 0x456E756D657261626C654D61703A20 PUSH10 0x6E646578206F7574206F PUSH7 0x20626F756E6473 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76656420717565727920666F72206E6F6E65 PUSH25 0x697374656E7420746F6B656E4552433732313A207472616E73 PUSH7 0x6572206F662074 PUSH16 0x6B656E2074686174206973206E6F7420 PUSH16 0x776E4552433732314D65746164617461 GASPRICE KECCAK256 SSTORE MSTORE 0x49 KECCAK256 PUSH18 0x7565727920666F72206E6F6E657869737465 PUSH15 0x7420746F6B656E4552433732313A20 PUSH2 0x7070 PUSH19 0x6F76616C20746F2063757272656E74206F776E PUSH6 0x724552433732 BALANCE GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0xA164736F6C PUSH4 0x43000706 STOP EXP ","sourceMap":"563:16527:32:-:0;;;3569:362;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3569:362:32;;;;;;;;;;-1:-1:-1;3569:362:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3569:362:32;;;;;;;;;;-1:-1:-1;3569:362:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3569:362:32;;-1:-1:-1;751:40:26;;-1:-1:-1;;;;770:20:26;-1:-1:-1;751:18:26;:40::i;:::-;3636:13:32;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;3659:17:32;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;3764:40:32;-1:-1:-1;;;3764:18:32;:40::i;:::-;3814:49;-1:-1:-1;;;3814:18:32;:49::i;:::-;3873:51;-1:-1:-1;;;3873:18:32;:51::i;:::-;3569:362;;563:16527;;1490:198:26;-1:-1:-1;;;;;;1573:25:26;;;;;1565:66;;;;;-1:-1:-1;;;1565:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1641:33:26;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1641:40:26;1677:4;1641:40;;;1490:198::o;563:16527:32:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;563:16527:32;;;-1:-1:-1;563:16527:32;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061011b5760003560e01c80634f6ccce7116100b257806395d89b4111610081578063b88d4fde11610066578063b88d4fde14610402578063c87b56dd146104d5578063e985e9c5146104f25761011b565b806395d89b41146103bf578063a22cb465146103c75761011b565b80634f6ccce71461034a5780636352211e146103675780636c0360eb1461038457806370a082311461038c5761011b565b806318160ddd116100ee57806318160ddd1461027157806323b872dd1461028b5780632f745c59146102ce57806342842e0e146103075761011b565b806301ffc9a71461012057806306fdde0314610173578063081812fc146101f0578063095ea7b314610236575b600080fd5b61015f6004803603602081101561013657600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661052d565b604080519115158252519081900360200190f35b61017b610568565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101b557818101518382015260200161019d565b50505050905090810190601f1680156101e25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020d6004803603602081101561020657600080fd5b503561061c565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61026f6004803603604081101561024c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106a5565b005b6102796107e8565b60408051918252519081900360200190f35b61026f600480360360608110156102a157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356107f9565b610279600480360360408110156102e457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561086a565b61026f6004803603606081101561031d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356108a2565b6102796004803603602081101561036057600080fd5b50356108bd565b61020d6004803603602081101561037d57600080fd5b50356108d3565b61017b6108fb565b610279600480360360208110156103a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661097a565b61017b610a16565b61026f600480360360408110156103dd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610a95565b61026f6004803603608081101561041857600080fd5b73ffffffffffffffffffffffffffffffffffffffff82358116926020810135909116916040820135919081019060808101606082013564010000000081111561046057600080fd5b82018360208201111561047257600080fd5b8035906020019184600183028401116401000000008311171561049457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c06945050505050565b61017b600480360360208110156104eb57600080fd5b5035610c7e565b61015f6004803603604081101561050857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610feb565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526020819052604090205460ff165b919050565b60068054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106125780601f106105e757610100808354040283529160200191610612565b820191906000526020600020905b8154815290600101906020018083116105f557829003601f168201915b5050505050905090565b600061062782611026565b61067c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611ef8602c913960400191505060405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006106b0826108d3565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610737576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611f7c6021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610756611033565b73ffffffffffffffffffffffffffffffffffffffff16148061078457506107848161077f611033565b610feb565b6107d9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611e4b6038913960400191505060405180910390fd5b6107e38383611037565b505050565b60006107f460026110d7565b905090565b61080a610804611033565b826110e2565b61085f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611f9d6031913960400191505060405180910390fd5b6107e38383836111d4565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040812061089990836113af565b90505b92915050565b6107e383838360405180602001604052806000815250610c06565b6000806108cb6002846113bb565b509392505050565b600061089c82604051806060016040528060298152602001611ead60299139600291906113d7565b60098054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106125780601f106105e757610100808354040283529160200191610612565b600073ffffffffffffffffffffffffffffffffffffffff82166109e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611e83602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902061089c906110d7565b60078054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106125780601f106105e757610100808354040283529160200191610612565b610a9d611033565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b3757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060056000610b44611033565b73ffffffffffffffffffffffffffffffffffffffff90811682526020808301939093526040918201600090812091871680825291909352912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001692151592909217909155610bb3611033565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b610c17610c11611033565b836110e2565b610c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611f9d6031913960400191505060405180910390fd5b610c78848484846113ee565b50505050565b6060610c8982611026565b610cde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611f4d602f913960400191505060405180910390fd5b60008281526008602090815260408083208054825160026001831615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190921691909104601f810185900485028201850190935282815292909190830182828015610d8f5780601f10610d6457610100808354040283529160200191610d8f565b820191906000526020600020905b815481529060010190602001808311610d7257829003601f168201915b505050505090506000610da06108fb565b9050805160001415610db457509050610563565b815115610ecf5780826040516020018083805190602001908083835b60208310610e0d57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610dd0565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905285519190930192850191508083835b60208310610e9157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610e54565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050610563565b80610ed98561145a565b6040516020018083805190602001908083835b60208310610f2957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610eec565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905285519190930192850191508083835b60208310610fad57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610f70565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b600061089c600283611587565b3390565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190611091826108d3565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061089c82611593565b60006110ed82611026565b611142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611e1f602c913960400191505060405180910390fd5b600061114d836108d3565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806111bc57508373ffffffffffffffffffffffffffffffffffffffff166111a48461061c565b73ffffffffffffffffffffffffffffffffffffffff16145b806111cc57506111cc8185610feb565b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff166111f4826108d3565b73ffffffffffffffffffffffffffffffffffffffff1614611260576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611f246029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166112cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611dfb6024913960400191505060405180910390fd5b6112d78383836107e3565b6112e2600082611037565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090206113119082611597565b5073ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902061134190826115a3565b5061134e600282846115af565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061089983836115d2565b60008080806113ca8686611650565b9097909650945050505050565b60006113e48484846116e5565b90505b9392505050565b6113f98484846111d4565b611405848484846117c9565b610c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611dc96032913960400191505060405180910390fd5b60608161149b575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610563565b8160005b81156114b357600101600a8204915061149f565b60008167ffffffffffffffff811180156114cc57600080fd5b506040519080825280601f01601f1916602001820160405280156114f7576020820181803683370190505b5085935090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b831561157e57600a840660300160f81b8282806001900393508151811061154457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350611521565b50949350505050565b600061089983836119d9565b5490565b600061089983836119f1565b60006108998383611ad5565b60006113e4848473ffffffffffffffffffffffffffffffffffffffff8516611b1f565b8154600090821061162e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611da76022913960400191505060405180910390fd5b82600001828154811061163d57fe5b9060005260206000200154905092915050565b8154600090819083106116ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611ed66022913960400191505060405180910390fd5b60008460000184815481106116bf57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6000828152600184016020526040812054828161179a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561175f578181015183820152602001611747565b50505050905090810190601f16801561178c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106117ad57fe5b9060005260206000209060020201600101549150509392505050565b60006117ea8473ffffffffffffffffffffffffffffffffffffffff16611bb6565b6117f6575060016111cc565b600061196e7f150b7a0200000000000000000000000000000000000000000000000000000000611824611033565b888787604051602401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156118a557818101518382015260200161188d565b50505050905090810190601f1680156118d25780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001611dc96032913973ffffffffffffffffffffffffffffffffffffffff88169190611bbc565b9050600081806020019051602081101561198757600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001492505050949350505050565b60009081526001919091016020526040902054151590565b60008181526001830160205260408120548015611acb5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083019190810190600090879083908110611a4257fe5b9060005260206000200154905080876000018481548110611a5f57fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080611a8f57fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061089c565b600091505061089c565b6000611ae183836119d9565b611b175750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561089c565b50600061089c565b600082815260018401602052604081205480611b845750506040805180820182528381526020808201848152865460018181018955600089815284812095516002909302909501918255915190820155865486845281880190925292909120556113e7565b82856000016001830381548110611b9757fe5b90600052602060002090600202016001018190555060009150506113e7565b3b151590565b60606113e4848460008585611bd085611bb6565b611c3b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310611ca457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611c67565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611d06576040519150601f19603f3d011682016040523d82523d6000602084013e611d0b565b606091505b5091509150611d1b828286611d26565b979650505050505050565b60608315611d355750816113e7565b825115611d455782518084602001fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815284516024840152845185939192839260440191908501908083836000831561175f57818101518382015260200161174756fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x11B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F6CCCE7 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x4D5 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x4F2 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x3BF JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x3C7 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x34A JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x367 JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x38C JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x2CE JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x307 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x173 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x1F0 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x236 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x52D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17B PUSH2 0x568 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1B5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1E2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x61C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x26F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6A5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x279 PUSH2 0x7E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x26F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7F9 JUMP JUMPDEST PUSH2 0x279 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x86A JUMP JUMPDEST PUSH2 0x26F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x8A2 JUMP JUMPDEST PUSH2 0x279 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x8BD JUMP JUMPDEST PUSH2 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x8D3 JUMP JUMPDEST PUSH2 0x17B PUSH2 0x8FB JUMP JUMPDEST PUSH2 0x279 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x97A JUMP JUMPDEST PUSH2 0x17B PUSH2 0xA16 JUMP JUMPDEST PUSH2 0x26F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xA95 JUMP JUMPDEST PUSH2 0x26F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x460 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x472 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x494 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xC06 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x17B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC7E JUMP JUMPDEST PUSH2 0x15F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x508 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xFEB JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x612 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5E7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x612 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5F5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x627 DUP3 PUSH2 0x1026 JUMP JUMPDEST PUSH2 0x67C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1EF8 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B0 DUP3 PUSH2 0x8D3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x737 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F7C PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x756 PUSH2 0x1033 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x784 JUMPI POP PUSH2 0x784 DUP2 PUSH2 0x77F PUSH2 0x1033 JUMP JUMPDEST PUSH2 0xFEB JUMP JUMPDEST PUSH2 0x7D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E4B PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7E3 DUP4 DUP4 PUSH2 0x1037 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F4 PUSH1 0x2 PUSH2 0x10D7 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x80A PUSH2 0x804 PUSH2 0x1033 JUMP JUMPDEST DUP3 PUSH2 0x10E2 JUMP JUMPDEST PUSH2 0x85F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F9D PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7E3 DUP4 DUP4 DUP4 PUSH2 0x11D4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x899 SWAP1 DUP4 PUSH2 0x13AF JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x7E3 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xC06 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8CB PUSH1 0x2 DUP5 PUSH2 0x13BB JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x89C DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1EAD PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0x13D7 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x612 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5E7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x612 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x9E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E83 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x89C SWAP1 PUSH2 0x10D7 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x612 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5E7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x612 JUMP JUMPDEST PUSH2 0xA9D PUSH2 0x1033 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xB37 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0xB44 PUSH2 0x1033 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0xBB3 PUSH2 0x1033 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xC17 PUSH2 0xC11 PUSH2 0x1033 JUMP JUMPDEST DUP4 PUSH2 0x10E2 JUMP JUMPDEST PUSH2 0xC6C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F9D PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC78 DUP5 DUP5 DUP5 DUP5 PUSH2 0x13EE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xC89 DUP3 PUSH2 0x1026 JUMP JUMPDEST PUSH2 0xCDE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F4D PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP3 MLOAD PUSH1 0x2 PUSH1 0x1 DUP4 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 DIV PUSH1 0x1F DUP2 ADD DUP6 SWAP1 DIV DUP6 MUL DUP3 ADD DUP6 ADD SWAP1 SWAP4 MSTORE DUP3 DUP2 MSTORE SWAP3 SWAP1 SWAP2 SWAP1 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xD8F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xD64 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xD8F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xD72 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0xDA0 PUSH2 0x8FB JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0xDB4 JUMPI POP SWAP1 POP PUSH2 0x563 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xECF JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xE0D JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xDD0 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP6 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP6 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xE91 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xE54 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x563 JUMP JUMPDEST DUP1 PUSH2 0xED9 DUP6 PUSH2 0x145A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xF29 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xEEC JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP6 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP6 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xFAD JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xF70 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x89C PUSH1 0x2 DUP4 PUSH2 0x1587 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x1091 DUP3 PUSH2 0x8D3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x89C DUP3 PUSH2 0x1593 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10ED DUP3 PUSH2 0x1026 JUMP JUMPDEST PUSH2 0x1142 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E1F PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x114D DUP4 PUSH2 0x8D3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x11BC JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x11A4 DUP5 PUSH2 0x61C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST DUP1 PUSH2 0x11CC JUMPI POP PUSH2 0x11CC DUP2 DUP6 PUSH2 0xFEB JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x11F4 DUP3 PUSH2 0x8D3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1260 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F24 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x12CC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DFB PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12D7 DUP4 DUP4 DUP4 PUSH2 0x7E3 JUMP JUMPDEST PUSH2 0x12E2 PUSH1 0x0 DUP3 PUSH2 0x1037 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1311 SWAP1 DUP3 PUSH2 0x1597 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1341 SWAP1 DUP3 PUSH2 0x15A3 JUMP JUMPDEST POP PUSH2 0x134E PUSH1 0x2 DUP3 DUP5 PUSH2 0x15AF JUMP JUMPDEST POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x899 DUP4 DUP4 PUSH2 0x15D2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x13CA DUP7 DUP7 PUSH2 0x1650 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13E4 DUP5 DUP5 DUP5 PUSH2 0x16E5 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x13F9 DUP5 DUP5 DUP5 PUSH2 0x11D4 JUMP JUMPDEST PUSH2 0x1405 DUP5 DUP5 DUP5 DUP5 PUSH2 0x17C9 JUMP JUMPDEST PUSH2 0xC78 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DC9 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x149B JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x563 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x14B3 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x149F JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x14CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x14F7 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x157E JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x1544 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x1521 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x899 DUP4 DUP4 PUSH2 0x19D9 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x899 DUP4 DUP4 PUSH2 0x19F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x899 DUP4 DUP4 PUSH2 0x1AD5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13E4 DUP5 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x1B1F JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x162E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DA7 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x163D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP4 LT PUSH2 0x16AE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1ED6 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x16BF JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD DUP2 PUSH1 0x1 ADD SLOAD SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 DUP2 PUSH2 0x179A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x175F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1747 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x178C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP5 PUSH1 0x0 ADD PUSH1 0x1 DUP3 SUB DUP2 SLOAD DUP2 LT PUSH2 0x17AD JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17EA DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1BB6 JUMP JUMPDEST PUSH2 0x17F6 JUMPI POP PUSH1 0x1 PUSH2 0x11CC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x196E PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH2 0x1824 PUSH2 0x1033 JUMP JUMPDEST DUP9 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18A5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x188D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x18D2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1DC9 PUSH1 0x32 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 SWAP1 PUSH2 0x1BBC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1987 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ SWAP3 POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1ACB JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x1A42 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1A5F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP5 ADD SWAP1 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x1A8F JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP5 POP POP POP POP POP PUSH2 0x89C JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x89C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AE1 DUP4 DUP4 PUSH2 0x19D9 JUMP JUMPDEST PUSH2 0x1B17 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x89C JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x89C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x1B84 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP5 DUP2 MSTORE DUP7 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP10 SSTORE PUSH1 0x0 DUP10 DUP2 MSTORE DUP5 DUP2 KECCAK256 SWAP6 MLOAD PUSH1 0x2 SWAP1 SWAP4 MUL SWAP1 SWAP6 ADD SWAP2 DUP3 SSTORE SWAP2 MLOAD SWAP1 DUP3 ADD SSTORE DUP7 SLOAD DUP7 DUP5 MSTORE DUP2 DUP9 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x13E7 JUMP JUMPDEST DUP3 DUP6 PUSH1 0x0 ADD PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH2 0x1B97 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 SWAP2 POP POP PUSH2 0x13E7 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x13E4 DUP5 DUP5 PUSH1 0x0 DUP6 DUP6 PUSH2 0x1BD0 DUP6 PUSH2 0x1BB6 JUMP JUMPDEST PUSH2 0x1C3B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1CA4 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1C67 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1D06 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1D0B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1D1B DUP3 DUP3 DUP7 PUSH2 0x1D26 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1D35 JUMPI POP DUP2 PUSH2 0x13E7 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x1D45 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP5 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP5 MLOAD DUP6 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x175F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1747 JUMP INVALID GASLIMIT PUSH15 0x756D657261626C655365743A20696E PUSH5 0x6578206F75 PUSH21 0x206F6620626F756E64734552433732313A20747261 PUSH15 0x7366657220746F206E6F6E20455243 CALLDATACOPY ORIGIN BALANCE MSTORE PUSH6 0x636569766572 KECCAK256 PUSH10 0x6D706C656D656E746572 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH16 0x70657261746F7220717565727920666F PUSH19 0x206E6F6E6578697374656E7420746F6B656E45 MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76652063616C6C6572206973206E6F74206F PUSH24 0x6E6572206E6F7220617070726F76656420666F7220616C6C GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH3 0x616C61 PUSH15 0x636520717565727920666F72207468 PUSH6 0x207A65726F20 PUSH2 0x6464 PUSH19 0x6573734552433732313A206F776E6572207175 PUSH6 0x727920666F72 KECCAK256 PUSH15 0x6F6E6578697374656E7420746F6B65 PUSH15 0x456E756D657261626C654D61703A20 PUSH10 0x6E646578206F7574206F PUSH7 0x20626F756E6473 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76656420717565727920666F72206E6F6E65 PUSH25 0x697374656E7420746F6B656E4552433732313A207472616E73 PUSH7 0x6572206F662074 PUSH16 0x6B656E2074686174206973206E6F7420 PUSH16 0x776E4552433732314D65746164617461 GASPRICE KECCAK256 SSTORE MSTORE 0x49 KECCAK256 PUSH18 0x7565727920666F72206E6F6E657869737465 PUSH15 0x7420746F6B656E4552433732313A20 PUSH2 0x7070 PUSH19 0x6F76616C20746F2063757272656E74206F776E PUSH6 0x724552433732 BALANCE GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0xA164736F6C PUSH4 0x43000706 STOP EXP ","sourceMap":"563:16527:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;948:148:26;;;;;;;;;;;;;;;;-1:-1:-1;948:148:26;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4502:98:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7207:217;;;;;;;;;;;;;;;;-1:-1:-1;7207:217:32;;:::i;:::-;;;;;;;;;;;;;;;;;;;6751:395;;;;;;;;;;;;;;;;-1:-1:-1;6751:395:32;;;;;;;;;:::i;:::-;;6245:208;;;:::i;:::-;;;;;;;;;;;;;;;;8071:300;;;;;;;;;;;;;;;;-1:-1:-1;8071:300:32;;;;;;;;;;;;;;;;;;:::i;6014:160::-;;;;;;;;;;;;;;;;-1:-1:-1;6014:160:32;;;;;;;;;:::i;8437:149::-;;;;;;;;;;;;;;;;-1:-1:-1;8437:149:32;;;;;;;;;;;;;;;;;;:::i;6525:169::-;;;;;;;;;;;;;;;;-1:-1:-1;6525:169:32;;:::i;4265:175::-;;;;;;;;;;;;;;;;-1:-1:-1;4265:175:32;;:::i;5840:95::-;;;:::i;3990:218::-;;;;;;;;;;;;;;;;-1:-1:-1;3990:218:32;;;;:::i;4664:102::-;;;:::i;7491:290::-;;;;;;;;;;;;;;;;-1:-1:-1;7491:290:32;;;;;;;;;;;:::i;8652:282::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8652:282:32;;-1:-1:-1;8652:282:32;;-1:-1:-1;;;;;8652:282:32:i;4832:776::-;;;;;;;;;;;;;;;;-1:-1:-1;4832:776:32;;:::i;7847:162::-;;;;;;;;;;;;;;;;-1:-1:-1;7847:162:32;;;;;;;;;;;:::i;948:148:26:-;1056:33;;;1033:4;1056:33;;;;;;;;;;;;;948:148;;;;:::o;4502:98:32:-;4588:5;4581:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4556:13;;4581:12;;4588:5;;4581:12;;4588:5;4581:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4502:98;:::o;7207:217::-;7283:7;7310:16;7318:7;7310;:16::i;:::-;7302:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7393:24:32;;;;:15;:24;;;;;;;;;7207:217::o;6751:395::-;6831:13;6847:23;6862:7;6847:14;:23::i;:::-;6831:39;;6894:5;6888:11;;:2;:11;;;;6880:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6972:5;6956:21;;:12;:10;:12::i;:::-;:21;;;:69;;;;6981:44;7005:5;7012:12;:10;:12::i;:::-;6981:23;:44::i;:::-;6948:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7118:21;7127:2;7131:7;7118:8;:21::i;:::-;6751:395;;;:::o;6245:208::-;6306:7;6425:21;:12;:19;:21::i;:::-;6418:28;;6245:208;:::o;8071:300::-;8230:41;8249:12;:10;:12::i;:::-;8263:7;8230:18;:41::i;:::-;8222:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8336:28;8346:4;8352:2;8356:7;8336:9;:28::i;6014:160::-;6137:20;;;6111:7;6137:20;;;:13;:20;;;;;:30;;6161:5;6137:23;:30::i;:::-;6130:37;;6014:160;;;;;:::o;8437:149::-;8540:39;8557:4;8563:2;8567:7;8540:39;;;;;;;;;;;;:16;:39::i;6525:169::-;6600:7;;6641:22;:12;6657:5;6641:15;:22::i;:::-;-1:-1:-1;6619:44:32;6525:169;-1:-1:-1;;;6525:169:32:o;4265:175::-;4337:7;4363:70;4380:7;4363:70;;;;;;;;;;;;;;;;;:12;;:70;:16;:70::i;5840:95::-;5920:8;5913:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5888:13;;5913:15;;5920:8;;5913:15;;5920:8;5913:15;;;;;;;;;;;;;;;;;;;;;;;;3990:218;4062:7;4089:19;;;4081:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4172:20;;;;;;;:13;:20;;;;;:29;;:27;:29::i;4664:102::-;4752:7;4745:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4720:13;;4745:14;;4752:7;;4745:14;;4752:7;4745:14;;;;;;;;;;;;;;;;;;;;;;;;7491:290;7605:12;:10;:12::i;:::-;7593:24;;:8;:24;;;;7585:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7703:8;7658:18;:32;7677:12;:10;:12::i;:::-;7658:32;;;;;;;;;;;;;;;;;;-1:-1:-1;7658:32:32;;;:42;;;;;;;;;;;;:53;;;;;;;;;;;;;;7741:12;:10;:12::i;:::-;7726:48;;;7765:8;7726:48;;;;;;;;;;;;;;;;;;;;7491:290;;:::o;8652:282::-;8783:41;8802:12;:10;:12::i;:::-;8816:7;8783:18;:41::i;:::-;8775:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8888:39;8902:4;8908:2;8912:7;8921:5;8888:13;:39::i;:::-;8652:282;;;;:::o;4832:776::-;4905:13;4938:16;4946:7;4938;:16::i;:::-;4930:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5017:23;5043:19;;;:10;:19;;;;;;;;5017:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5043:19;;5017:45;;;5043:19;5017:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5072:18;5093:9;:7;:9::i;:::-;5072:30;;5181:4;5175:18;5197:1;5175:23;5171:70;;;-1:-1:-1;5221:9:32;-1:-1:-1;5214:16:32;;5171:70;5343:23;;:27;5339:106;;5417:4;5423:9;5400:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5400:33:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5386:48;;;;;;5339:106;5575:4;5581:18;:7;:16;:18::i;:::-;5558:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5558:42:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5544:57;;;;4832:776;;;:::o;7847:162::-;7967:25;;;;7944:4;7967:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;7847:162::o;10368:125::-;10433:4;10456:30;:12;10478:7;10456:21;:30::i;598:104:38:-;685:10;598:104;:::o;16210:189:32:-;16284:24;;;;:15;:24;;;;;:29;;;;;;;;;;;;;:24;;16337:23;16284:24;16337:14;:23::i;:::-;16328:46;;;;;;;;;;;;16210:189;;:::o;7812:121:40:-;7881:7;7907:19;7915:3;7907:7;:19::i;10651:351:32:-;10744:4;10768:16;10776:7;10768;:16::i;:::-;10760:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10843:13;10859:23;10874:7;10859:14;:23::i;:::-;10843:39;;10911:5;10900:16;;:7;:16;;;:51;;;;10944:7;10920:31;;:20;10932:7;10920:11;:20::i;:::-;:31;;;10900:51;:94;;;;10955:39;10979:5;10986:7;10955:23;:39::i;:::-;10892:103;10651:351;-1:-1:-1;;;;10651:351:32:o;13692:584::-;13816:4;13789:31;;:23;13804:7;13789:14;:23::i;:::-;:31;;;13781:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13902:16;;;13894:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13970:39;13991:4;13997:2;14001:7;13970:20;:39::i;:::-;14071:29;14088:1;14092:7;14071:8;:29::i;:::-;14111:19;;;;;;;:13;:19;;;;;:35;;14138:7;14111:26;:35::i;:::-;-1:-1:-1;14156:17:32;;;;;;;:13;:17;;;;;:30;;14178:7;14156:21;:30::i;:::-;-1:-1:-1;14197:29:32;:12;14214:7;14223:2;14197:16;:29::i;:::-;;14261:7;14257:2;14242:27;;14251:4;14242:27;;;;;;;;;;;;13692:584;;;:::o;9242:135:41:-;9313:7;9347:22;9351:3;9363:5;9347:3;:22::i;8261:233:40:-;8341:7;;;;8400:22;8404:3;8416:5;8400:3;:22::i;:::-;8369:53;;;;-1:-1:-1;8261:233:40;-1:-1:-1;;;;;8261:233:40:o;9514:211::-;9621:7;9671:44;9676:3;9696;9702:12;9671:4;:44::i;:::-;9663:53;-1:-1:-1;9514:211:40;;;;;;:::o;9796:269:32:-;9909:28;9919:4;9925:2;9929:7;9909:9;:28::i;:::-;9955:48;9978:4;9984:2;9988:7;9997:5;9955:22;:48::i;:::-;9947:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;202:725:42;258:13;475:10;471:51;;-1:-1:-1;501:10:42;;;;;;;;;;;;;;;;;;;471:51;546:5;531:12;585:75;592:9;;585:75;;617:8;;647:2;639:10;;;;585:75;;;669:19;701:6;691:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;691:17:42;-1:-1:-1;761:5:42;;-1:-1:-1;669:39:42;-1:-1:-1;734:10:42;;;776:114;783:9;;776:114;;851:2;844:4;:9;839:2;:14;826:29;;808:6;815:7;;;;;;;808:15;;;;;;;;;;;:47;;;;;;;;;;-1:-1:-1;877:2:42;869:10;;;;776:114;;;-1:-1:-1;913:6:42;202:725;-1:-1:-1;;;;202:725:42:o;7580:149:40:-;7664:4;7687:35;7697:3;7717;7687:9;:35::i;4483:108::-;4565:19;;4483:108::o;8357:135:41:-;8427:4;8450:35;8458:3;8478:5;8450:7;:35::i;8060:129::-;8127:4;8150:32;8155:3;8175:5;8150:4;:32::i;7019:183:40:-;7108:4;7131:64;7136:3;7156;7170:23;;;7131:4;:64::i;4444:201:41:-;4538:18;;4511:7;;4538:26;-1:-1:-1;4530:73:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4620:3;:11;;4632:5;4620:18;;;;;;;;;;;;;;;;4613:25;;4444:201;;;;:::o;4934:274:40:-;5037:19;;5001:7;;;;5037:27;-1:-1:-1;5029:74:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5114:22;5139:3;:12;;5152:5;5139:19;;;;;;;;;;;;;;;;;;5114:44;;5176:5;:10;;;5188:5;:12;;;5168:33;;;;;4934:274;;;;;:::o;6395:315::-;6489:7;6527:17;;;:12;;;:17;;;;;;6577:12;6562:13;6554:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6643:3;:12;;6667:1;6656:8;:12;6643:26;;;;;;;;;;;;;;;;;;:33;;;6636:40;;;6395:315;;;;;:::o;15509:589:32:-;15629:4;15654:15;:2;:13;;;:15::i;:::-;15649:58;;-1:-1:-1;15692:4:32;15685:11;;15649:58;15716:23;15742:246;15794:45;15853:12;:10;:12::i;:::-;15879:4;15897:7;15918:5;15758:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15742:246;;;;;;;;;;;;;;;;;:15;;;;:246;:15;:246::i;:::-;15716:272;;15998:13;16025:10;16014:32;;;;;;;;;;;;;;;-1:-1:-1;16014:32:32;16064:26;;16074:16;16064:26;;-1:-1:-1;;;15509:589:32;;;;;;:::o;4270:123:40:-;4341:4;4364:17;;;:12;;;;;:17;;;;;;:22;;;4270:123::o;2204:1512:41:-;2270:4;2407:19;;;:12;;;:19;;;;;;2441:15;;2437:1273;;2870:18;;2822:14;;;;;2870:22;;;;2798:21;;2870:3;;:22;;3152;;;;;;;;;;;;;;3132:42;;3295:9;3266:3;:11;;3278:13;3266:26;;;;;;;;;;;;;;;;;;;:38;;;;3370:23;;;3412:1;3370:12;;;:23;;;;;;3396:17;;;3370:43;;3519:17;;3370:3;;3519:17;;;;;;;;;;;;;;;;;;;;;;3611:3;:12;;:19;3624:5;3611:19;;;;;;;;;;;3604:26;;;3652:4;3645:11;;;;;;;;2437:1273;3694:5;3687:12;;;;;1632:404;1695:4;1716:21;1726:3;1731:5;1716:9;:21::i;:::-;1711:319;;-1:-1:-1;1753:23:41;;;;;;;;:11;:23;;;;;;;;;;;;;1933:18;;1911:19;;;:12;;;:19;;;;;;:40;;;;1965:11;;1711:319;-1:-1:-1;2014:5:41;2007:12;;1828:678:40;1904:4;2037:17;;;:12;;;:17;;;;;;2069:13;2065:435;;-1:-1:-1;;2153:38:40;;;;;;;;;;;;;;;;;;2135:57;;;;;;;;:12;:57;;;;;;;;;;;;;;;;;;;;;;;;2347:19;;2327:17;;;:12;;;:17;;;;;;;:39;2380:11;;2065:435;2458:5;2422:3;:12;;2446:1;2435:8;:12;2422:26;;;;;;;;;;;;;;;;;;:33;;:41;;;;2484:5;2477:12;;;;;718:413:37;1078:20;1116:8;;;718:413::o;3573:193::-;3676:12;3707:52;3729:6;3737:4;3743:1;3746:12;3676;4850:18;4861:6;4850:10;:18::i;:::-;4842:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4973:12;4987:23;5014:6;:11;;5034:5;5042:4;5014:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4972:75;;;;5064:52;5082:7;5091:10;5103:12;5064:17;:52::i;:::-;5057:59;4600:523;-1:-1:-1;;;;;;;4600:523:37:o;7083:725::-;7198:12;7226:7;7222:580;;;-1:-1:-1;7256:10:37;7249:17;;7222:580;7367:17;;:21;7363:429;;7625:10;7619:17;7685:15;7672:10;7668:2;7664:19;7657:44;7574:145;7757:20;;;;;;;;;;;;;;;;;;;;7764:12;;7757:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","baseURI()":"6c0360eb","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"see https://eips.ethereum.org/EIPS/eip-721\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"baseURI()\":{\"details\":\"Returns the base URI set via {_setBaseURI}. This will be automatically added as a prefix in {tokenURI} to each token's URI, or to the token ID if no specific URI is set for that token ID.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"title\":\"ERC721 Non-Fungible Token Standard basic implementation\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0x234cdf2c3efd5f0dc17d32fe65d33c21674ca17de1e945eb60ac1076d7152d96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd196df6ec4549923b4581fcb4be3d05237b5221067410d0bc34cb76d4174441\",\"dweb:/ipfs/Qmf2vFVgbfpD4FvAhQXkprg9sKSX3TXKRdbQTSjJVEmzWj\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x93e4f65a89c3c888afbaa3ee18c3fa4f51c422419bbcd9cca47676a0f8e507ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a9c54b2935c810e14b17d6b5d7adeb0e1733d172823f02c30e1be8729715841\",\"dweb:/ipfs/QmZGveXLQpqJQRjfeNws7mGSjxKpnfZCnKaXyH4soxDSkR\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x05604ffcf69e416b8a42728bb0e4fd75170d8fac70bf1a284afeb4752a9bc52f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8a7fd1043372336ecccdbcbcf4962c6df8958dc9c7c7f8361fc2b3dd23570cc\",\"dweb:/ipfs/QmYHKgZxnanBfu7Q8ZicVhDDuB7XRGxuwvmCjfQQ1E5j39\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf89f005a3d98f7768cdee2583707db0ac725cf567d455751af32ee68132f3db3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f963d438177764b5f43f637c02311c951c0f0025d12fe1ac7e62e295bf416c41\",\"dweb:/ipfs/QmcfVb9JsWrYeTwFUJsKVHpKB7EaWBKydAH9S4sKg2pzcK\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/utils/EnumerableMap.sol\":{\"keccak256\":\"0x2114555153edb5f273008b3d34205f511db9af06b88f752e4c280dd612c4c549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8779df50f4f716c6adaa5f61880c572abb2b37197d690d6aad32e52a32d5f382\",\"dweb:/ipfs/QmVuZMGNFEo4gm1QB55gnCwCTc7XC5npkmgdfeJUgHbMiL\"]},\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0x9a2c1eebb65250f0e11882237038600f22a62376f0547db4acc0dfe0a3d8d34f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccafc1afbcbf54559beea9c029d0b7656c56a185813c5fa74c4ea3eb4b608419\",\"dweb:/ipfs/QmTKwdbenDfNwmwRVh8VKtA6mhFK2AyTFRoJF3BqLB81KM\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x08e38e034333372aea8cb1b8846085b7fbab42c6b77a0af464d2c6827827c4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22746e9348187309fb4fbd3f79f6ad88787103eac10f24bd18f67257fafdd8ad\",\"dweb:/ipfs/QmSLXfXg8b27Xstq58DFGvCpqgtTqpfrGbLMq19PtEKQJS\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"IERC721":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol":{"IERC721Enumerable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"tokenByIndex(uint256)\":{\"details\":\"Returns a token ID at a given `index` of all the tokens stored by the contract. Use along with {totalSupply} to enumerate all tokens.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Returns a token ID owned by `owner` at a given `index` of its token list. Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\"},\"totalSupply()\":{\"details\":\"Returns the total amount of tokens stored by the contract.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional enumeration extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":\"IERC721Enumerable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol":{"IERC721Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"IERC721Receiver":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.\"}},\"title\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x05604ffcf69e416b8a42728bb0e4fd75170d8fac70bf1a284afeb4752a9bc52f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8a7fd1043372336ecccdbcbcf4962c6df8958dc9c7c7f8361fc2b3dd23570cc\",\"dweb:/ipfs/QmYHKgZxnanBfu7Q8ZicVhDDuB7XRGxuwvmCjfQQ1E5j39\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"126:7684:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"126:7684:37:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf89f005a3d98f7768cdee2583707db0ac725cf567d455751af32ee68132f3db3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f963d438177764b5f43f637c02311c951c0f0025d12fe1ac7e62e295bf416c41\",\"dweb:/ipfs/QmcfVb9JsWrYeTwFUJsKVHpKB7EaWBKydAH9S4sKg2pzcK\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Counters.sol":{"Counters":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"662:848:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"662:848:39:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Matt Condon (@shrugs)\",\"details\":\"Provides counters that can only be incremented or decremented by one. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;` Since it is not possible to overflow a 256 bit integer with increments of one, `increment` can skip the {SafeMath} overflow check, thereby saving gas. This does assume however correct usage, in that the underlying `_value` is never directly accessed.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Counters\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Counters.sol\":\"Counters\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]},\"@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0x2424442932373c51391b31409f9620d1e1396c37f41ab9d82c51d69bebdd1ab5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dcdf37ee59c10644338fbdfb3b7692125ff42003b34990eff8b04beedd89846f\",\"dweb:/ipfs/QmTMAvXQ4DoZbUSS3oBkNr2SddRPCTrE7DZNXrFArHnk8x\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/EnumerableMap.sol":{"EnumerableMap":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"764:8963:40:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"764:8963:40:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing an enumerable variant of Solidity's https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`] type. Maps have the following properties: - Entries are added, removed, and checked for existence in constant time (O(1)). - Entries are enumerated in O(n). No guarantees are made on the ordering. ``` contract Example {     // Add the library methods     using EnumerableMap for EnumerableMap.UintToAddressMap;     // Declare a set state variable     EnumerableMap.UintToAddressMap private myMap; } ``` As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are supported.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/EnumerableMap.sol\":\"EnumerableMap\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/EnumerableMap.sol\":{\"keccak256\":\"0x2114555153edb5f273008b3d34205f511db9af06b88f752e4c280dd612c4c549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8779df50f4f716c6adaa5f61880c572abb2b37197d690d6aad32e52a32d5f382\",\"dweb:/ipfs/QmVuZMGNFEo4gm1QB55gnCwCTc7XC5npkmgdfeJUgHbMiL\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/EnumerableSet.sol":{"EnumerableSet":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"745:8634:41:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"745:8634:41:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ``` contract Example {     // Add the library methods     using EnumerableSet for EnumerableSet.AddressSet;     // Declare a set state variable     EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/EnumerableSet.sol\":\"EnumerableSet\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0x9a2c1eebb65250f0e11882237038600f22a62376f0547db4acc0dfe0a3d8d34f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccafc1afbcbf54559beea9c029d0b7656c56a185813c5fa74c4ea3eb4b608419\",\"dweb:/ipfs/QmTKwdbenDfNwmwRVh8VKtA6mhFK2AyTFRoJF3BqLB81KM\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Strings.sol":{"Strings":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"93:836:42:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"93:836:42:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x08e38e034333372aea8cb1b8846085b7fbab42c6b77a0af464d2c6827827c4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22746e9348187309fb4fbd3f79f6ad88787103eac10f24bd18f67257fafdd8ad\",\"dweb:/ipfs/QmSLXfXg8b27Xstq58DFGvCpqgtTqpfrGbLMq19PtEKQJS\"]}},\"version\":1}"}},"base64-sol/base64.sol":{"Base64":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"166:2114:43:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"166:2114:43:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Brecht Devos - <brecht@loopring.org>\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Base64\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Provides a function for encoding some bytes in base64\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"base64-sol/base64.sol\":\"Base64\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"base64-sol/base64.sol\":{\"keccak256\":\"0x0c8ad17afea99676d4dbab1857f52a7660b67602a79d03abd0a4c742074bbeb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://692d64ac089a389d2e955d92c75e9f3ee642257a39c91c2efa7493a21e79d61a\",\"dweb:/ipfs/QmVSGRBRjeh4APNHjHD5GbYY7BrBhWRj8aHkmqHJQwQiK1\"]}},\"version\":1}"}},"contracts/CLMigrator.sol":{"CLMigrator":{"abi":[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_SAMB","type":"address"},{"internalType":"address","name":"_nonfungiblePositionManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"SAMB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"createAndInitializePoolIfNecessary","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"uint256","name":"liquidityToMigrate","type":"uint256"},{"internalType":"uint8","name":"percentageToMigrate","type":"uint8"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"refundAsAMB","type":"bool"}],"internalType":"struct ICLMigrator.MigrateParams","name":"params","type":"tuple"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"nonfungiblePositionManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowed","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowedIfNecessary","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitIfNecessary","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:594:115","statements":[{"nodeType":"YulBlock","src":"6:3:115","statements":[]},{"body":{"nodeType":"YulBlock","src":"76:117:115","statements":[{"nodeType":"YulAssignment","src":"86:22:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"101:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"95:5:115"},"nodeType":"YulFunctionCall","src":"95:13:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"86:5:115"}]},{"body":{"nodeType":"YulBlock","src":"171:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"180:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"183:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"173:6:115"},"nodeType":"YulFunctionCall","src":"173:12:115"},"nodeType":"YulExpressionStatement","src":"173:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"130:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"141:5:115"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"156:3:115","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"161:1:115","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"152:3:115"},"nodeType":"YulFunctionCall","src":"152:11:115"},{"kind":"number","nodeType":"YulLiteral","src":"165:1:115","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"148:3:115"},"nodeType":"YulFunctionCall","src":"148:19:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"137:3:115"},"nodeType":"YulFunctionCall","src":"137:31:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"127:2:115"},"nodeType":"YulFunctionCall","src":"127:42:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"120:6:115"},"nodeType":"YulFunctionCall","src":"120:50:115"},"nodeType":"YulIf","src":"117:2:115"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"55:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"66:5:115","type":""}],"src":"14:179:115"},{"body":{"nodeType":"YulBlock","src":"313:279:115","statements":[{"body":{"nodeType":"YulBlock","src":"359:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"368:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"376:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"361:6:115"},"nodeType":"YulFunctionCall","src":"361:22:115"},"nodeType":"YulExpressionStatement","src":"361:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"334:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"343:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"330:3:115"},"nodeType":"YulFunctionCall","src":"330:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"355:2:115","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"326:3:115"},"nodeType":"YulFunctionCall","src":"326:32:115"},"nodeType":"YulIf","src":"323:2:115"},{"nodeType":"YulAssignment","src":"394:52:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"436:9:115"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"404:31:115"},"nodeType":"YulFunctionCall","src":"404:42:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"394:6:115"}]},{"nodeType":"YulAssignment","src":"455:61:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"501:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"512:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"497:3:115"},"nodeType":"YulFunctionCall","src":"497:18:115"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"465:31:115"},"nodeType":"YulFunctionCall","src":"465:51:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"455:6:115"}]},{"nodeType":"YulAssignment","src":"525:61:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"582:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"567:3:115"},"nodeType":"YulFunctionCall","src":"567:18:115"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"535:31:115"},"nodeType":"YulFunctionCall","src":"535:51:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"525:6:115"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"263:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"274:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"286:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"294:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"302:6:115","type":""}],"src":"198:394:115"}]},"contents":"{\n    { }\n    function abi_decode_t_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := abi_decode_t_address_fromMemory(headStart)\n        value1 := abi_decode_t_address_fromMemory(add(headStart, 32))\n        value2 := abi_decode_t_address_fromMemory(add(headStart, 64))\n    }\n}","id":115,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60e06040523480156200001157600080fd5b5060405162001f4238038062001f42833981016040819052620000349162000079565b6001600160601b0319606093841b811660805291831b821660a05290911b1660c052620000c2565b80516001600160a01b03811681146200007457600080fd5b919050565b6000806000606084860312156200008e578283fd5b62000099846200005c565b9250620000a9602085016200005c565b9150620000b9604085016200005c565b90509250925092565b60805160601c60a05160601c60c05160601c611e146200012e6000398061090d5280610c4c5280610c865280610cb05280610e8d52508060d252806106b25280610ee65280610f70528061105852806110e2525080610269528061036452806109e65250611e146000f3fe6080604052600436106100b55760003560e01c8063b44a272211610069578063c45a01551161004e578063c45a0155146101e5578063d44f2bf2146101fa578063f3995c671461021a57610134565b8063b44a2722146101bd578063c2e3140a146101d257610134565b806390793ea81161009a57806390793ea814610175578063a4a78f0c1461018a578063ac9650d81461019d57610134565b806313ead562146101395780634659a4941461016257610134565b36610134573373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012990611c15565b60405180910390fd5b005b600080fd5b61014c610147366004611788565b61022d565b6040516101599190611afb565b60405180910390f35b6101326101703660046117e1565b6105f0565b34801561018157600080fd5b5061014c6106b0565b6101326101983660046117e1565b6106d4565b6101b06101ab36600461183a565b6107b1565b6040516101599190611b4d565b3480156101c957600080fd5b5061014c61090b565b6101326101e03660046117e1565b61092f565b3480156101f157600080fd5b5061014c6109e4565b34801561020657600080fd5b506101326102153660046119b7565b610a08565b6101326102283660046117e1565b611176565b60008373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161061026757600080fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631698ee828686866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018262ffffff168152602001935050505060206040518083038186803b15801561031957600080fd5b505afa15801561032d573d6000803e3d6000fd5b505050506040513d602081101561034357600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff81166104d3577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a16712958686866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018262ffffff1681526020019350505050602060405180830381600087803b15801561041657600080fd5b505af115801561042a573d6000803e3d6000fd5b505050506040513d602081101561044057600080fd5b5051604080517ff637731d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015291519293509083169163f637731d9160248082019260009290919082900301818387803b1580156104b657600080fd5b505af11580156104ca573d6000803e3d6000fd5b505050506105e8565b60008173ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561051b57600080fd5b505afa15801561052f573d6000803e3d6000fd5b505050506040513d60e081101561054557600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff81166105e6578173ffffffffffffffffffffffffffffffffffffffff1663f637731d846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156105cd57600080fd5b505af11580156105e1573d6000803e3d6000fd5b505050505b505b949350505050565b604080517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e48101839052905173ffffffffffffffffffffffffffffffffffffffff881691638fcbaf0c9161010480830192600092919082900301818387803b15801561069057600080fd5b505af11580156106a4573d6000803e3d6000fd5b50505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b15801561076957600080fd5b505afa15801561077d573d6000803e3d6000fd5b505050506040513d602081101561079357600080fd5b505110156107a9576107a98686868686866105f0565b505050505050565b60608167ffffffffffffffff811180156107ca57600080fd5b506040519080825280602002602001820160405280156107fe57816020015b60608152602001906001900390816107e95790505b50905060005b82811015610904576000803086868581811061081c57fe5b905060200281019061082e9190611d3a565b60405161083c929190611aeb565b600060405180830381855af49150503d8060008114610877576040519150601f19603f3d011682016040523d82523d6000602084013e61087c565b606091505b5091509150816108e25760448151101561089557600080fd5b600481019050808060200190518101906108af9190611902565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101299190611bcb565b808484815181106108ef57fe5b60209081029190910101525050600101610804565b5092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051869173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b1580156109a457600080fd5b505afa1580156109b8573d6000803e3d6000fd5b505050506040513d60208110156109ce57600080fd5b505110156107a9576107a9868686868686611176565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610a1a6060830160408401611a5d565b60ff1611610a54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012990611bde565b6064610a666060830160408401611a5d565b60ff161115610aa1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012990611c4c565b610aae6020820182611765565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd33610ad76020850185611765565b84602001356040518463ffffffff1660e01b8152600401610afa93929190611b1c565b602060405180830381600087803b158015610b1457600080fd5b505af1158015610b28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4c91906118c5565b50600080610b5d6020840184611765565b73ffffffffffffffffffffffffffffffffffffffff166389afcb44306040518263ffffffff1660e01b8152600401610b959190611afb565b6040805180830381600087803b158015610bae57600080fd5b505af1158015610bc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be69190611a3a565b909250905060006064610c0c610c026060870160408801611a5d565b859060ff1661120e565b81610c1357fe5b04905060006064610c2d610c026060880160408901611a5d565b81610c3457fe5b049050610c71610c4a6080870160608801611765565b7f000000000000000000000000000000000000000000000000000000000000000084611238565b610cab610c8460a0870160808801611765565b7f000000000000000000000000000000000000000000000000000000000000000083611238565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663883164566040518061016001604052808a6060016020810190610d099190611765565b73ffffffffffffffffffffffffffffffffffffffff168152602001610d3460a08c0160808d01611765565b73ffffffffffffffffffffffffffffffffffffffff168152602001610d5f60c08c0160a08d016119cf565b62ffffff168152602001610d7960e08c0160c08d016118e1565b60020b8152602001610d926101008c0160e08d016118e1565b60020b815260208101889052604081018790526101008b013560608201526101208b0135608082015260a001610dd06101608c016101408d01611765565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a61016001358152506040518263ffffffff1660e01b8152600401610e109190611c83565b608060405180830381600087803b158015610e2a57600080fd5b505af1158015610e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6291906119e9565b935093505050858210156110025783821015610eb357610eb3610e8b6080890160608a01611765565b7f00000000000000000000000000000000000000000000000000000000000000006000611238565b818603610ec86101a089016101808a016118a9565b8015610f2e575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610f1660808a0160608b01611765565b73ffffffffffffffffffffffffffffffffffffffff16145b15610fe6576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d90610fa5908490600401611d31565b600060405180830381600087803b158015610fbf57600080fd5b505af1158015610fd3573d6000803e3d6000fd5b50505050610fe13382611414565b611000565b611000610ff960808a0160608b01611765565b3383611567565b505b8481101561116d578281101561102557611025610e8b60a0890160808a01611765565b80850361103a6101a089016101808a016118a9565b80156110a0575073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661108860a08a0160808b01611765565b73ffffffffffffffffffffffffffffffffffffffff16145b15611158576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d90611117908490600401611d31565b600060405180830381600087803b15801561113157600080fd5b505af1158015611145573d6000803e3d6000fd5b505050506111533382611414565b61116b565b61116b610ff960a08a0160808b01611765565b505b50505050505050565b604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c48101839052905173ffffffffffffffffffffffffffffffffffffffff88169163d505accf9160e480830192600092919082900301818387803b15801561069057600080fd5b60008215806112295750508181028183828161122657fe5b04145b61123257600080fd5b92915050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b6020831061130d57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016112d0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461136f576040519150601f19603f3d011682016040523d82523d6000602084013e611374565b606091505b50915091508180156113a25750805115806113a2575080806020019051602081101561139f57600080fd5b50515b61140d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5341000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b6020831061148b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161144e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146114ed576040519150601f19603f3d011682016040523d82523d6000602084013e6114f2565b606091505b505090508061156257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b6020831061163c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016115ff565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461169e576040519150601f19603f3d011682016040523d82523d6000602084013e6116a3565b606091505b50915091508180156116d15750805115806116d157508080602001905160208110156116ce57600080fd5b50515b61140d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b803562ffffff8116811461174f57600080fd5b919050565b803560ff8116811461174f57600080fd5b600060208284031215611776578081fd5b813561178181611dd4565b9392505050565b6000806000806080858703121561179d578283fd5b84356117a881611dd4565b935060208501356117b881611dd4565b92506117c66040860161173c565b915060608501356117d681611dd4565b939692955090935050565b60008060008060008060c087890312156117f9578182fd5b863561180481611dd4565b9550602087013594506040870135935061182060608801611754565b92506080870135915060a087013590509295509295509295565b6000806020838503121561184c578182fd5b823567ffffffffffffffff80821115611863578384fd5b818501915085601f830112611876578384fd5b813581811115611884578485fd5b8660208083028501011115611897578485fd5b60209290920196919550909350505050565b6000602082840312156118ba578081fd5b813561178181611df9565b6000602082840312156118d6578081fd5b815161178181611df9565b6000602082840312156118f2578081fd5b81358060020b8114611781578182fd5b600060208284031215611913578081fd5b815167ffffffffffffffff8082111561192a578283fd5b818401915084601f83011261193d578283fd5b81518181111561194957fe5b60405160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116820101818110848211171561198557fe5b60405281815283820160200187101561199c578485fd5b6119ad826020830160208701611da4565b9695505050505050565b60006101a082840312156119c9578081fd5b50919050565b6000602082840312156119e0578081fd5b6117818261173c565b600080600080608085870312156119fe578384fd5b8451935060208501516fffffffffffffffffffffffffffffffff81168114611a24578384fd5b6040860151606090960151949790965092505050565b60008060408385031215611a4c578182fd5b505080516020909101519092909150565b600060208284031215611a6e578081fd5b61178182611754565b73ffffffffffffffffffffffffffffffffffffffff169052565b60008151808452611aa9816020860160208601611da4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60020b9052565b62ffffff169052565b6000828483379101908152919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015611bbe577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452611bac858351611a91565b94509285019290850190600101611b72565b5092979650505050505050565b6000602082526117816020830184611a91565b60208082526014908201527f50657263656e7461676520746f6f20736d616c6c000000000000000000000000604082015260600190565b60208082526008908201527f4e6f742053414d42000000000000000000000000000000000000000000000000604082015260600190565b60208082526014908201527f50657263656e7461676520746f6f206c61726765000000000000000000000000604082015260600190565b600061016082019050611c97828451611a77565b6020830151611ca96020840182611a77565b506040830151611cbc6040840182611ae2565b506060830151611ccf6060840182611adb565b506080830151611ce26080840182611adb565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611d2082850182611a77565b505061014092830151919092015290565b90815260200190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611d6e578283fd5b83018035915067ffffffffffffffff821115611d88578283fd5b602001915036819003821315611d9d57600080fd5b9250929050565b60005b83811015611dbf578181015183820152602001611da7565b83811115611dce576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611df657600080fd5b50565b8015158114611df657600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1F42 CODESIZE SUB DUP1 PUSH3 0x1F42 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x79 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP4 DUP5 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 DUP4 SHL DUP3 AND PUSH1 0xA0 MSTORE SWAP1 SWAP2 SHL AND PUSH1 0xC0 MSTORE PUSH3 0xC2 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x8E JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH3 0x99 DUP5 PUSH3 0x5C JUMP JUMPDEST SWAP3 POP PUSH3 0xA9 PUSH1 0x20 DUP6 ADD PUSH3 0x5C JUMP JUMPDEST SWAP2 POP PUSH3 0xB9 PUSH1 0x40 DUP6 ADD PUSH3 0x5C JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x1E14 PUSH3 0x12E PUSH1 0x0 CODECOPY DUP1 PUSH2 0x90D MSTORE DUP1 PUSH2 0xC4C MSTORE DUP1 PUSH2 0xC86 MSTORE DUP1 PUSH2 0xCB0 MSTORE DUP1 PUSH2 0xE8D MSTORE POP DUP1 PUSH1 0xD2 MSTORE DUP1 PUSH2 0x6B2 MSTORE DUP1 PUSH2 0xEE6 MSTORE DUP1 PUSH2 0xF70 MSTORE DUP1 PUSH2 0x1058 MSTORE DUP1 PUSH2 0x10E2 MSTORE POP DUP1 PUSH2 0x269 MSTORE DUP1 PUSH2 0x364 MSTORE DUP1 PUSH2 0x9E6 MSTORE POP PUSH2 0x1E14 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB44A2722 GT PUSH2 0x69 JUMPI DUP1 PUSH4 0xC45A0155 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0xD44F2BF2 EQ PUSH2 0x1FA JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x21A JUMPI PUSH2 0x134 JUMP JUMPDEST DUP1 PUSH4 0xB44A2722 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0x1D2 JUMPI PUSH2 0x134 JUMP JUMPDEST DUP1 PUSH4 0x90793EA8 GT PUSH2 0x9A JUMPI DUP1 PUSH4 0x90793EA8 EQ PUSH2 0x175 JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x19D JUMPI PUSH2 0x134 JUMP JUMPDEST DUP1 PUSH4 0x13EAD562 EQ PUSH2 0x139 JUMPI DUP1 PUSH4 0x4659A494 EQ PUSH2 0x162 JUMPI PUSH2 0x134 JUMP JUMPDEST CALLDATASIZE PUSH2 0x134 JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x132 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x129 SWAP1 PUSH2 0x1C15 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14C PUSH2 0x147 CALLDATASIZE PUSH1 0x4 PUSH2 0x1788 JUMP JUMPDEST PUSH2 0x22D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x159 SWAP2 SWAP1 PUSH2 0x1AFB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x132 PUSH2 0x170 CALLDATASIZE PUSH1 0x4 PUSH2 0x17E1 JUMP JUMPDEST PUSH2 0x5F0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14C PUSH2 0x6B0 JUMP JUMPDEST PUSH2 0x132 PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0x17E1 JUMP JUMPDEST PUSH2 0x6D4 JUMP JUMPDEST PUSH2 0x1B0 PUSH2 0x1AB CALLDATASIZE PUSH1 0x4 PUSH2 0x183A JUMP JUMPDEST PUSH2 0x7B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x159 SWAP2 SWAP1 PUSH2 0x1B4D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14C PUSH2 0x90B JUMP JUMPDEST PUSH2 0x132 PUSH2 0x1E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x17E1 JUMP JUMPDEST PUSH2 0x92F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14C PUSH2 0x9E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x132 PUSH2 0x215 CALLDATASIZE PUSH1 0x4 PUSH2 0x19B7 JUMP JUMPDEST PUSH2 0xA08 JUMP JUMPDEST PUSH2 0x132 PUSH2 0x228 CALLDATASIZE PUSH1 0x4 PUSH2 0x17E1 JUMP JUMPDEST PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1698EE82 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x32D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x4D3 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA1671295 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x416 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x42A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xF637731D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 DUP4 AND SWAP2 PUSH4 0xF637731D SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x5E8 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x51B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x52F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x545 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x5E6 JUMPI DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF637731D DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x8FCBAF0C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xFF DUP6 AND PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xC4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xE4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0x8FCBAF0C SWAP2 PUSH2 0x104 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x77D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x7A9 JUMPI PUSH2 0x7A9 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x5F0 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x7CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x7FE JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x7E9 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x904 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x81C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x82E SWAP2 SWAP1 PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x83C SWAP3 SWAP2 SWAP1 PUSH2 0x1AEB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x877 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x87C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x8E2 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x895 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x8AF SWAP2 SWAP1 PUSH2 0x1902 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x129 SWAP2 SWAP1 PUSH2 0x1BCB JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x8EF JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x804 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x7A9 JUMPI PUSH2 0x7A9 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x1176 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA1A PUSH1 0x60 DUP4 ADD PUSH1 0x40 DUP5 ADD PUSH2 0x1A5D JUMP JUMPDEST PUSH1 0xFF AND GT PUSH2 0xA54 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x129 SWAP1 PUSH2 0x1BDE JUMP JUMPDEST PUSH1 0x64 PUSH2 0xA66 PUSH1 0x60 DUP4 ADD PUSH1 0x40 DUP5 ADD PUSH2 0x1A5D JUMP JUMPDEST PUSH1 0xFF AND GT ISZERO PUSH2 0xAA1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x129 SWAP1 PUSH2 0x1C4C JUMP JUMPDEST PUSH2 0xAAE PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x1765 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER PUSH2 0xAD7 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x1765 JUMP JUMPDEST DUP5 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAFA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1B1C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB28 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB4C SWAP2 SWAP1 PUSH2 0x18C5 JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH2 0xB5D PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x1765 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x89AFCB44 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB95 SWAP2 SWAP1 PUSH2 0x1AFB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBC2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBE6 SWAP2 SWAP1 PUSH2 0x1A3A JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH1 0x64 PUSH2 0xC0C PUSH2 0xC02 PUSH1 0x60 DUP8 ADD PUSH1 0x40 DUP9 ADD PUSH2 0x1A5D JUMP JUMPDEST DUP6 SWAP1 PUSH1 0xFF AND PUSH2 0x120E JUMP JUMPDEST DUP2 PUSH2 0xC13 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x64 PUSH2 0xC2D PUSH2 0xC02 PUSH1 0x60 DUP9 ADD PUSH1 0x40 DUP10 ADD PUSH2 0x1A5D JUMP JUMPDEST DUP2 PUSH2 0xC34 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0xC71 PUSH2 0xC4A PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x1765 JUMP JUMPDEST PUSH32 0x0 DUP5 PUSH2 0x1238 JUMP JUMPDEST PUSH2 0xCAB PUSH2 0xC84 PUSH1 0xA0 DUP8 ADD PUSH1 0x80 DUP9 ADD PUSH2 0x1765 JUMP JUMPDEST PUSH32 0x0 DUP4 PUSH2 0x1238 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x88316456 PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 DUP11 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xD09 SWAP2 SWAP1 PUSH2 0x1765 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD34 PUSH1 0xA0 DUP13 ADD PUSH1 0x80 DUP14 ADD PUSH2 0x1765 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD5F PUSH1 0xC0 DUP13 ADD PUSH1 0xA0 DUP14 ADD PUSH2 0x19CF JUMP JUMPDEST PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD79 PUSH1 0xE0 DUP13 ADD PUSH1 0xC0 DUP14 ADD PUSH2 0x18E1 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD92 PUSH2 0x100 DUP13 ADD PUSH1 0xE0 DUP14 ADD PUSH2 0x18E1 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x40 DUP2 ADD DUP8 SWAP1 MSTORE PUSH2 0x100 DUP12 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x120 DUP12 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD PUSH2 0xDD0 PUSH2 0x160 DUP13 ADD PUSH2 0x140 DUP14 ADD PUSH2 0x1765 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH2 0x160 ADD CALLDATALOAD DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE10 SWAP2 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE3E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE62 SWAP2 SWAP1 PUSH2 0x19E9 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP DUP6 DUP3 LT ISZERO PUSH2 0x1002 JUMPI DUP4 DUP3 LT ISZERO PUSH2 0xEB3 JUMPI PUSH2 0xEB3 PUSH2 0xE8B PUSH1 0x80 DUP10 ADD PUSH1 0x60 DUP11 ADD PUSH2 0x1765 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x0 PUSH2 0x1238 JUMP JUMPDEST DUP2 DUP7 SUB PUSH2 0xEC8 PUSH2 0x1A0 DUP10 ADD PUSH2 0x180 DUP11 ADD PUSH2 0x18A9 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF2E JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH2 0xF16 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x1765 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST ISZERO PUSH2 0xFE6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0xFA5 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1D31 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFD3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xFE1 CALLER DUP3 PUSH2 0x1414 JUMP JUMPDEST PUSH2 0x1000 JUMP JUMPDEST PUSH2 0x1000 PUSH2 0xFF9 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x1765 JUMP JUMPDEST CALLER DUP4 PUSH2 0x1567 JUMP JUMPDEST POP JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x116D JUMPI DUP3 DUP2 LT ISZERO PUSH2 0x1025 JUMPI PUSH2 0x1025 PUSH2 0xE8B PUSH1 0xA0 DUP10 ADD PUSH1 0x80 DUP11 ADD PUSH2 0x1765 JUMP JUMPDEST DUP1 DUP6 SUB PUSH2 0x103A PUSH2 0x1A0 DUP10 ADD PUSH2 0x180 DUP11 ADD PUSH2 0x18A9 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x10A0 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH2 0x1088 PUSH1 0xA0 DUP11 ADD PUSH1 0x80 DUP12 ADD PUSH2 0x1765 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST ISZERO PUSH2 0x1158 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1117 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1D31 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1145 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1153 CALLER DUP3 PUSH2 0x1414 JUMP JUMPDEST PUSH2 0x116B JUMP JUMPDEST PUSH2 0x116B PUSH2 0xFF9 PUSH1 0xA0 DUP11 ADD PUSH1 0x80 DUP12 ADD PUSH2 0x1765 JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xFF DUP6 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x1229 JUMPI POP POP DUP2 DUP2 MUL DUP2 DUP4 DUP3 DUP2 PUSH2 0x1226 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x1232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x130D JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x12D0 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x136F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1374 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x13A2 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x13A2 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x139F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x140D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5341000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x148B JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x144E JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x14ED JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x14F2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1562 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354450000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x163C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x15FF JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x169E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x16D1 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x16D1 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x140D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x174F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x174F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1776 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1781 DUP2 PUSH2 0x1DD4 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x179D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x17A8 DUP2 PUSH2 0x1DD4 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x17B8 DUP2 PUSH2 0x1DD4 JUMP JUMPDEST SWAP3 POP PUSH2 0x17C6 PUSH1 0x40 DUP7 ADD PUSH2 0x173C JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x17D6 DUP2 PUSH2 0x1DD4 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x17F9 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x1804 DUP2 PUSH2 0x1DD4 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x1820 PUSH1 0x60 DUP9 ADD PUSH2 0x1754 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x184C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1863 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1876 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1884 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x1897 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18BA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1781 DUP2 PUSH2 0x1DF9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18D6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1781 DUP2 PUSH2 0x1DF9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18F2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x1781 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1913 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x192A JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x193D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x1949 JUMPI INVALID JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0x1985 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x199C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x19AD DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1DA4 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x19C9 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x19E0 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1781 DUP3 PUSH2 0x173C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x19FE JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 MLOAD SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1A24 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x60 SWAP1 SWAP7 ADD MLOAD SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1A4C JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A6E JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1781 DUP3 PUSH2 0x1754 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1AA9 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1DA4 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND SWAP1 MSTORE JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1BBE JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x1BAC DUP6 DUP4 MLOAD PUSH2 0x1A91 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1B72 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1781 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1A91 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x50657263656E7461676520746F6F20736D616C6C000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x8 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F742053414D42000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x50657263656E7461676520746F6F206C61726765000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 ADD SWAP1 POP PUSH2 0x1C97 DUP3 DUP5 MLOAD PUSH2 0x1A77 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x1CA9 PUSH1 0x20 DUP5 ADD DUP3 PUSH2 0x1A77 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x1CBC PUSH1 0x40 DUP5 ADD DUP3 PUSH2 0x1AE2 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x1CCF PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0x1ADB JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x1CE2 PUSH1 0x80 DUP5 ADD DUP3 PUSH2 0x1ADB JUMP JUMPDEST POP PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xE0 DUP4 ADD MLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH2 0x100 DUP1 DUP5 ADD MLOAD DUP2 DUP5 ADD MSTORE POP PUSH2 0x120 DUP1 DUP5 ADD MLOAD PUSH2 0x1D20 DUP3 DUP6 ADD DUP3 PUSH2 0x1A77 JUMP JUMPDEST POP POP PUSH2 0x140 SWAP3 DUP4 ADD MLOAD SWAP2 SWAP1 SWAP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x1D6E JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1D88 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x1D9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1DBF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1DA7 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1DCE JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1DF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1DF6 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"666:3432:44:-:0;;;869:226;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;520:18:50;;;;;;;;548:12;;;;;;;1032:56:44;;;;::::1;::::0;666:3432;;14:179:115;95:13;;-1:-1:-1;;;;;137:31:115;;127:42;;117:2;;183:1;180;173:12;117:2;76:117;;;:::o;198:394::-;;;;355:2;343:9;334:7;330:23;326:32;323:2;;;376:6;368;361:22;323:2;404:42;436:9;404:42;:::i;:::-;394:52;;465:51;512:2;501:9;497:18;465:51;:::i;:::-;455:61;;535:51;582:2;571:9;567:18;535:51;:::i;:::-;525:61;;313:279;;;;;:::o;:::-;666:3432:44;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:12181:115","statements":[{"nodeType":"YulBlock","src":"6:3:115","statements":[]},{"body":{"nodeType":"YulBlock","src":"64:113:115","statements":[{"nodeType":"YulAssignment","src":"74:29:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"96:6:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"83:12:115"},"nodeType":"YulFunctionCall","src":"83:20:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"74:5:115"}]},{"body":{"nodeType":"YulBlock","src":"155:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"164:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"167:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"157:6:115"},"nodeType":"YulFunctionCall","src":"157:12:115"},"nodeType":"YulExpressionStatement","src":"157:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"125:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"136:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"143:8:115","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"132:3:115"},"nodeType":"YulFunctionCall","src":"132:20:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"122:2:115"},"nodeType":"YulFunctionCall","src":"122:31:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"115:6:115"},"nodeType":"YulFunctionCall","src":"115:39:115"},"nodeType":"YulIf","src":"112:2:115"}]},"name":"abi_decode_t_uint24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"43:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"54:5:115","type":""}],"src":"14:163:115"},{"body":{"nodeType":"YulBlock","src":"231:109:115","statements":[{"nodeType":"YulAssignment","src":"241:29:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"263:6:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"250:12:115"},"nodeType":"YulFunctionCall","src":"250:20:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"241:5:115"}]},{"body":{"nodeType":"YulBlock","src":"318:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"327:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"330:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"320:6:115"},"nodeType":"YulFunctionCall","src":"320:12:115"},"nodeType":"YulExpressionStatement","src":"320:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"292:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"303:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"310:4:115","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"299:3:115"},"nodeType":"YulFunctionCall","src":"299:16:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"289:2:115"},"nodeType":"YulFunctionCall","src":"289:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"282:6:115"},"nodeType":"YulFunctionCall","src":"282:35:115"},"nodeType":"YulIf","src":"279:2:115"}]},"name":"abi_decode_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"210:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"221:5:115","type":""}],"src":"182:158:115"},{"body":{"nodeType":"YulBlock","src":"415:189:115","statements":[{"body":{"nodeType":"YulBlock","src":"461:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"470:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"478:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"463:6:115"},"nodeType":"YulFunctionCall","src":"463:22:115"},"nodeType":"YulExpressionStatement","src":"463:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"436:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"445:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"432:3:115"},"nodeType":"YulFunctionCall","src":"432:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"457:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"428:3:115"},"nodeType":"YulFunctionCall","src":"428:32:115"},"nodeType":"YulIf","src":"425:2:115"},{"nodeType":"YulVariableDeclaration","src":"496:36:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"522:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"509:12:115"},"nodeType":"YulFunctionCall","src":"509:23:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"500:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"568:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"541:26:115"},"nodeType":"YulFunctionCall","src":"541:33:115"},"nodeType":"YulExpressionStatement","src":"541:33:115"},{"nodeType":"YulAssignment","src":"583:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"593:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"583:6:115"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"381:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"392:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"404:6:115","type":""}],"src":"345:259:115"},{"body":{"nodeType":"YulBlock","src":"729:500:115","statements":[{"body":{"nodeType":"YulBlock","src":"776:26:115","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"785:6:115"},{"name":"value1","nodeType":"YulIdentifier","src":"793:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"778:6:115"},"nodeType":"YulFunctionCall","src":"778:22:115"},"nodeType":"YulExpressionStatement","src":"778:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"750:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"759:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"746:3:115"},"nodeType":"YulFunctionCall","src":"746:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"771:3:115","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"742:3:115"},"nodeType":"YulFunctionCall","src":"742:33:115"},"nodeType":"YulIf","src":"739:2:115"},{"nodeType":"YulVariableDeclaration","src":"811:36:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"837:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"824:12:115"},"nodeType":"YulFunctionCall","src":"824:23:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"815:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"883:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"856:26:115"},"nodeType":"YulFunctionCall","src":"856:33:115"},"nodeType":"YulExpressionStatement","src":"856:33:115"},{"nodeType":"YulAssignment","src":"898:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"908:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"898:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"922:47:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"954:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"965:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"950:3:115"},"nodeType":"YulFunctionCall","src":"950:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"937:12:115"},"nodeType":"YulFunctionCall","src":"937:32:115"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"926:7:115","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1005:7:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"978:26:115"},"nodeType":"YulFunctionCall","src":"978:35:115"},"nodeType":"YulExpressionStatement","src":"978:35:115"},{"nodeType":"YulAssignment","src":"1022:17:115","value":{"name":"value_1","nodeType":"YulIdentifier","src":"1032:7:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1022:6:115"}]},{"nodeType":"YulAssignment","src":"1048:49:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1082:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1093:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1078:3:115"},"nodeType":"YulFunctionCall","src":"1078:18:115"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"1058:19:115"},"nodeType":"YulFunctionCall","src":"1058:39:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1048:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"1106:47:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1138:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1149:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1134:3:115"},"nodeType":"YulFunctionCall","src":"1134:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1121:12:115"},"nodeType":"YulFunctionCall","src":"1121:32:115"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"1110:7:115","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"1189:7:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1162:26:115"},"nodeType":"YulFunctionCall","src":"1162:35:115"},"nodeType":"YulExpressionStatement","src":"1162:35:115"},{"nodeType":"YulAssignment","src":"1206:17:115","value":{"name":"value_2","nodeType":"YulIdentifier","src":"1216:7:115"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1206:6:115"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint24t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"671:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"682:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"694:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"702:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"710:6:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"718:6:115","type":""}],"src":"609:620:115"},{"body":{"nodeType":"YulBlock","src":"1387:453:115","statements":[{"body":{"nodeType":"YulBlock","src":"1434:26:115","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1443:6:115"},{"name":"value4","nodeType":"YulIdentifier","src":"1451:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1436:6:115"},"nodeType":"YulFunctionCall","src":"1436:22:115"},"nodeType":"YulExpressionStatement","src":"1436:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1408:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"1417:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1404:3:115"},"nodeType":"YulFunctionCall","src":"1404:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"1429:3:115","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1400:3:115"},"nodeType":"YulFunctionCall","src":"1400:33:115"},"nodeType":"YulIf","src":"1397:2:115"},{"nodeType":"YulVariableDeclaration","src":"1469:36:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1495:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1482:12:115"},"nodeType":"YulFunctionCall","src":"1482:23:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1473:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1541:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1514:26:115"},"nodeType":"YulFunctionCall","src":"1514:33:115"},"nodeType":"YulExpressionStatement","src":"1514:33:115"},{"nodeType":"YulAssignment","src":"1556:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"1566:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1556:6:115"}]},{"nodeType":"YulAssignment","src":"1580:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1607:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1618:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1603:3:115"},"nodeType":"YulFunctionCall","src":"1603:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1590:12:115"},"nodeType":"YulFunctionCall","src":"1590:32:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1580:6:115"}]},{"nodeType":"YulAssignment","src":"1631:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1658:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1669:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1654:3:115"},"nodeType":"YulFunctionCall","src":"1654:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1641:12:115"},"nodeType":"YulFunctionCall","src":"1641:32:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1631:6:115"}]},{"nodeType":"YulAssignment","src":"1682:48:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1715:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1726:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1711:3:115"},"nodeType":"YulFunctionCall","src":"1711:18:115"}],"functionName":{"name":"abi_decode_t_uint8","nodeType":"YulIdentifier","src":"1692:18:115"},"nodeType":"YulFunctionCall","src":"1692:38:115"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1682:6:115"}]},{"nodeType":"YulAssignment","src":"1739:43:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1766:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1777:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1762:3:115"},"nodeType":"YulFunctionCall","src":"1762:19:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1749:12:115"},"nodeType":"YulFunctionCall","src":"1749:33:115"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"1739:6:115"}]},{"nodeType":"YulAssignment","src":"1791:43:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1818:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1829:3:115","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1814:3:115"},"nodeType":"YulFunctionCall","src":"1814:19:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1801:12:115"},"nodeType":"YulFunctionCall","src":"1801:33:115"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"1791:6:115"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1313:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1324:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1336:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1344:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1352:6:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1360:6:115","type":""},{"name":"value4","nodeType":"YulTypedName","src":"1368:6:115","type":""},{"name":"value5","nodeType":"YulTypedName","src":"1376:6:115","type":""}],"src":"1234:606:115"},{"body":{"nodeType":"YulBlock","src":"1961:561:115","statements":[{"body":{"nodeType":"YulBlock","src":"2007:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2016:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2024:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2009:6:115"},"nodeType":"YulFunctionCall","src":"2009:22:115"},"nodeType":"YulExpressionStatement","src":"2009:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1982:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"1991:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1978:3:115"},"nodeType":"YulFunctionCall","src":"1978:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"2003:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1974:3:115"},"nodeType":"YulFunctionCall","src":"1974:32:115"},"nodeType":"YulIf","src":"1971:2:115"},{"nodeType":"YulVariableDeclaration","src":"2042:37:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2069:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2056:12:115"},"nodeType":"YulFunctionCall","src":"2056:23:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2046:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2088:28:115","value":{"kind":"number","nodeType":"YulLiteral","src":"2098:18:115","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2092:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"2143:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2152:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2160:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2145:6:115"},"nodeType":"YulFunctionCall","src":"2145:22:115"},"nodeType":"YulExpressionStatement","src":"2145:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2131:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"2139:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2128:2:115"},"nodeType":"YulFunctionCall","src":"2128:14:115"},"nodeType":"YulIf","src":"2125:2:115"},{"nodeType":"YulVariableDeclaration","src":"2178:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2192:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"2203:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2188:3:115"},"nodeType":"YulFunctionCall","src":"2188:22:115"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2182:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"2258:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2267:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2275:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2260:6:115"},"nodeType":"YulFunctionCall","src":"2260:22:115"},"nodeType":"YulExpressionStatement","src":"2260:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2237:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"2241:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2233:3:115"},"nodeType":"YulFunctionCall","src":"2233:13:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2248:7:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2229:3:115"},"nodeType":"YulFunctionCall","src":"2229:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2222:6:115"},"nodeType":"YulFunctionCall","src":"2222:35:115"},"nodeType":"YulIf","src":"2219:2:115"},{"nodeType":"YulVariableDeclaration","src":"2293:30:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2320:2:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2307:12:115"},"nodeType":"YulFunctionCall","src":"2307:16:115"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2297:6:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"2350:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2359:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2367:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2352:6:115"},"nodeType":"YulFunctionCall","src":"2352:22:115"},"nodeType":"YulExpressionStatement","src":"2352:22:115"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2338:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"2346:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2335:2:115"},"nodeType":"YulFunctionCall","src":"2335:14:115"},"nodeType":"YulIf","src":"2332:2:115"},{"body":{"nodeType":"YulBlock","src":"2435:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2444:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2452:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2437:6:115"},"nodeType":"YulFunctionCall","src":"2437:22:115"},"nodeType":"YulExpressionStatement","src":"2437:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2399:2:115"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2407:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"2415:2:115","type":"","value":"32"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2403:3:115"},"nodeType":"YulFunctionCall","src":"2403:15:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2395:3:115"},"nodeType":"YulFunctionCall","src":"2395:24:115"},{"kind":"number","nodeType":"YulLiteral","src":"2421:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2391:3:115"},"nodeType":"YulFunctionCall","src":"2391:33:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2426:7:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2388:2:115"},"nodeType":"YulFunctionCall","src":"2388:46:115"},"nodeType":"YulIf","src":"2385:2:115"},{"nodeType":"YulAssignment","src":"2470:21:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2484:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"2488:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2480:3:115"},"nodeType":"YulFunctionCall","src":"2480:11:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2470:6:115"}]},{"nodeType":"YulAssignment","src":"2500:16:115","value":{"name":"length","nodeType":"YulIdentifier","src":"2510:6:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2500:6:115"}]}]},"name":"abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1919:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1930:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1942:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1950:6:115","type":""}],"src":"1845:677:115"},{"body":{"nodeType":"YulBlock","src":"2594:186:115","statements":[{"body":{"nodeType":"YulBlock","src":"2640:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2649:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2657:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2642:6:115"},"nodeType":"YulFunctionCall","src":"2642:22:115"},"nodeType":"YulExpressionStatement","src":"2642:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2615:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"2624:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2611:3:115"},"nodeType":"YulFunctionCall","src":"2611:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"2636:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2607:3:115"},"nodeType":"YulFunctionCall","src":"2607:32:115"},"nodeType":"YulIf","src":"2604:2:115"},{"nodeType":"YulVariableDeclaration","src":"2675:36:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2701:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2688:12:115"},"nodeType":"YulFunctionCall","src":"2688:23:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2679:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2744:5:115"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"2720:23:115"},"nodeType":"YulFunctionCall","src":"2720:30:115"},"nodeType":"YulExpressionStatement","src":"2720:30:115"},{"nodeType":"YulAssignment","src":"2759:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"2769:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2759:6:115"}]}]},"name":"abi_decode_tuple_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2560:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2571:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2583:6:115","type":""}],"src":"2527:253:115"},{"body":{"nodeType":"YulBlock","src":"2863:179:115","statements":[{"body":{"nodeType":"YulBlock","src":"2909:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2918:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2926:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2911:6:115"},"nodeType":"YulFunctionCall","src":"2911:22:115"},"nodeType":"YulExpressionStatement","src":"2911:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2884:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"2893:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2880:3:115"},"nodeType":"YulFunctionCall","src":"2880:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"2905:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2876:3:115"},"nodeType":"YulFunctionCall","src":"2876:32:115"},"nodeType":"YulIf","src":"2873:2:115"},{"nodeType":"YulVariableDeclaration","src":"2944:29:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2963:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2957:5:115"},"nodeType":"YulFunctionCall","src":"2957:16:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2948:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3006:5:115"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"2982:23:115"},"nodeType":"YulFunctionCall","src":"2982:30:115"},"nodeType":"YulExpressionStatement","src":"2982:30:115"},{"nodeType":"YulAssignment","src":"3021:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"3031:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3021:6:115"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2829:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2840:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2852:6:115","type":""}],"src":"2785:257:115"},{"body":{"nodeType":"YulBlock","src":"3115:225:115","statements":[{"body":{"nodeType":"YulBlock","src":"3161:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3170:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3178:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3163:6:115"},"nodeType":"YulFunctionCall","src":"3163:22:115"},"nodeType":"YulExpressionStatement","src":"3163:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3136:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"3145:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3132:3:115"},"nodeType":"YulFunctionCall","src":"3132:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"3157:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3128:3:115"},"nodeType":"YulFunctionCall","src":"3128:32:115"},"nodeType":"YulIf","src":"3125:2:115"},{"nodeType":"YulVariableDeclaration","src":"3196:36:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3222:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3209:12:115"},"nodeType":"YulFunctionCall","src":"3209:23:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3200:5:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"3284:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3293:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3301:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3286:6:115"},"nodeType":"YulFunctionCall","src":"3286:22:115"},"nodeType":"YulExpressionStatement","src":"3286:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3254:5:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3272:1:115","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"3275:5:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"3261:10:115"},"nodeType":"YulFunctionCall","src":"3261:20:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3251:2:115"},"nodeType":"YulFunctionCall","src":"3251:31:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3244:6:115"},"nodeType":"YulFunctionCall","src":"3244:39:115"},"nodeType":"YulIf","src":"3241:2:115"},{"nodeType":"YulAssignment","src":"3319:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"3329:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3319:6:115"}]}]},"name":"abi_decode_tuple_t_int24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3081:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3092:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3104:6:115","type":""}],"src":"3047:293:115"},{"body":{"nodeType":"YulBlock","src":"3436:844:115","statements":[{"body":{"nodeType":"YulBlock","src":"3482:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3491:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3499:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3484:6:115"},"nodeType":"YulFunctionCall","src":"3484:22:115"},"nodeType":"YulExpressionStatement","src":"3484:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3457:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"3466:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3453:3:115"},"nodeType":"YulFunctionCall","src":"3453:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"3478:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3449:3:115"},"nodeType":"YulFunctionCall","src":"3449:32:115"},"nodeType":"YulIf","src":"3446:2:115"},{"nodeType":"YulVariableDeclaration","src":"3517:30:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3537:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3531:5:115"},"nodeType":"YulFunctionCall","src":"3531:16:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3521:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3556:28:115","value":{"kind":"number","nodeType":"YulLiteral","src":"3566:18:115","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3560:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"3611:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3620:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3628:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3613:6:115"},"nodeType":"YulFunctionCall","src":"3613:22:115"},"nodeType":"YulExpressionStatement","src":"3613:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3599:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3607:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3596:2:115"},"nodeType":"YulFunctionCall","src":"3596:14:115"},"nodeType":"YulIf","src":"3593:2:115"},{"nodeType":"YulVariableDeclaration","src":"3646:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3660:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"3671:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3656:3:115"},"nodeType":"YulFunctionCall","src":"3656:22:115"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3650:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"3726:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3735:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3743:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3728:6:115"},"nodeType":"YulFunctionCall","src":"3728:22:115"},"nodeType":"YulExpressionStatement","src":"3728:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3705:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"3709:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:115"},"nodeType":"YulFunctionCall","src":"3701:13:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3716:7:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3697:3:115"},"nodeType":"YulFunctionCall","src":"3697:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3690:6:115"},"nodeType":"YulFunctionCall","src":"3690:35:115"},"nodeType":"YulIf","src":"3687:2:115"},{"nodeType":"YulVariableDeclaration","src":"3761:19:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3777:2:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3771:5:115"},"nodeType":"YulFunctionCall","src":"3771:9:115"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"3765:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"3803:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"3805:7:115"},"nodeType":"YulFunctionCall","src":"3805:9:115"},"nodeType":"YulExpressionStatement","src":"3805:9:115"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3795:2:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3799:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3792:2:115"},"nodeType":"YulFunctionCall","src":"3792:10:115"},"nodeType":"YulIf","src":"3789:2:115"},{"nodeType":"YulVariableDeclaration","src":"3825:23:115","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3845:2:115","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3839:5:115"},"nodeType":"YulFunctionCall","src":"3839:9:115"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"3829:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3857:126:115","value":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3883:6:115"},{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3899:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"3903:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3895:3:115"},"nodeType":"YulFunctionCall","src":"3895:13:115"},{"kind":"number","nodeType":"YulLiteral","src":"3910:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3891:3:115"},"nodeType":"YulFunctionCall","src":"3891:86:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3879:3:115"},"nodeType":"YulFunctionCall","src":"3879:99:115"},{"kind":"number","nodeType":"YulLiteral","src":"3980:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3875:3:115"},"nodeType":"YulFunctionCall","src":"3875:108:115"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"3861:10:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"4042:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"4044:7:115"},"nodeType":"YulFunctionCall","src":"4044:9:115"},"nodeType":"YulExpressionStatement","src":"4044:9:115"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4001:10:115"},{"name":"_1","nodeType":"YulIdentifier","src":"4013:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3998:2:115"},"nodeType":"YulFunctionCall","src":"3998:18:115"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4021:10:115"},{"name":"memPtr","nodeType":"YulIdentifier","src":"4033:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4018:2:115"},"nodeType":"YulFunctionCall","src":"4018:22:115"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"3995:2:115"},"nodeType":"YulFunctionCall","src":"3995:46:115"},"nodeType":"YulIf","src":"3992:2:115"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4071:2:115","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4075:10:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4064:6:115"},"nodeType":"YulFunctionCall","src":"4064:22:115"},"nodeType":"YulExpressionStatement","src":"4064:22:115"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4102:6:115"},{"name":"_3","nodeType":"YulIdentifier","src":"4110:2:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4095:6:115"},"nodeType":"YulFunctionCall","src":"4095:18:115"},"nodeType":"YulExpressionStatement","src":"4095:18:115"},{"body":{"nodeType":"YulBlock","src":"4159:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4168:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"4176:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4161:6:115"},"nodeType":"YulFunctionCall","src":"4161:22:115"},"nodeType":"YulExpressionStatement","src":"4161:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4136:2:115"},{"name":"_3","nodeType":"YulIdentifier","src":"4140:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4132:3:115"},"nodeType":"YulFunctionCall","src":"4132:11:115"},{"kind":"number","nodeType":"YulLiteral","src":"4145:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4128:3:115"},"nodeType":"YulFunctionCall","src":"4128:20:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4150:7:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4125:2:115"},"nodeType":"YulFunctionCall","src":"4125:33:115"},"nodeType":"YulIf","src":"4122:2:115"},{"expression":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4220:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"4224:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4216:3:115"},"nodeType":"YulFunctionCall","src":"4216:11:115"},{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4233:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"4241:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4229:3:115"},"nodeType":"YulFunctionCall","src":"4229:15:115"},{"name":"_3","nodeType":"YulIdentifier","src":"4246:2:115"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"4194:21:115"},"nodeType":"YulFunctionCall","src":"4194:55:115"},"nodeType":"YulExpressionStatement","src":"4194:55:115"},{"nodeType":"YulAssignment","src":"4258:16:115","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"4268:6:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4258:6:115"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3402:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3413:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3425:6:115","type":""}],"src":"3345:935:115"},{"body":{"nodeType":"YulBlock","src":"4388:107:115","statements":[{"body":{"nodeType":"YulBlock","src":"4435:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4444:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"4452:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4437:6:115"},"nodeType":"YulFunctionCall","src":"4437:22:115"},"nodeType":"YulExpressionStatement","src":"4437:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4409:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"4418:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4405:3:115"},"nodeType":"YulFunctionCall","src":"4405:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"4430:3:115","type":"","value":"416"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4401:3:115"},"nodeType":"YulFunctionCall","src":"4401:33:115"},"nodeType":"YulIf","src":"4398:2:115"},{"nodeType":"YulAssignment","src":"4470:19:115","value":{"name":"headStart","nodeType":"YulIdentifier","src":"4480:9:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4470:6:115"}]}]},"name":"abi_decode_tuple_t_struct$_MigrateParams_$9444_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4354:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4365:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4377:6:115","type":""}],"src":"4285:210:115"},{"body":{"nodeType":"YulBlock","src":"4569:127:115","statements":[{"body":{"nodeType":"YulBlock","src":"4615:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4624:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"4632:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4617:6:115"},"nodeType":"YulFunctionCall","src":"4617:22:115"},"nodeType":"YulExpressionStatement","src":"4617:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4590:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"4599:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4586:3:115"},"nodeType":"YulFunctionCall","src":"4586:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"4611:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4582:3:115"},"nodeType":"YulFunctionCall","src":"4582:32:115"},"nodeType":"YulIf","src":"4579:2:115"},{"nodeType":"YulAssignment","src":"4650:40:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4680:9:115"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"4660:19:115"},"nodeType":"YulFunctionCall","src":"4660:30:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4650:6:115"}]}]},"name":"abi_decode_tuple_t_uint24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4535:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4546:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4558:6:115","type":""}],"src":"4500:196:115"},{"body":{"nodeType":"YulBlock","src":"4833:377:115","statements":[{"body":{"nodeType":"YulBlock","src":"4880:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4889:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"4897:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4882:6:115"},"nodeType":"YulFunctionCall","src":"4882:22:115"},"nodeType":"YulExpressionStatement","src":"4882:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4854:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"4863:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4850:3:115"},"nodeType":"YulFunctionCall","src":"4850:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"4875:3:115","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4846:3:115"},"nodeType":"YulFunctionCall","src":"4846:33:115"},"nodeType":"YulIf","src":"4843:2:115"},{"nodeType":"YulAssignment","src":"4915:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4931:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4925:5:115"},"nodeType":"YulFunctionCall","src":"4925:16:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4915:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"4950:38:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4973:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4984:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4969:3:115"},"nodeType":"YulFunctionCall","src":"4969:18:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4963:5:115"},"nodeType":"YulFunctionCall","src":"4963:25:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4954:5:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"5066:26:115","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"5075:6:115"},{"name":"value1","nodeType":"YulIdentifier","src":"5083:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5068:6:115"},"nodeType":"YulFunctionCall","src":"5068:22:115"},"nodeType":"YulExpressionStatement","src":"5068:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5010:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5021:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"5028:34:115","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5017:3:115"},"nodeType":"YulFunctionCall","src":"5017:46:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5007:2:115"},"nodeType":"YulFunctionCall","src":"5007:57:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5000:6:115"},"nodeType":"YulFunctionCall","src":"5000:65:115"},"nodeType":"YulIf","src":"4997:2:115"},{"nodeType":"YulAssignment","src":"5101:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"5111:5:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5101:6:115"}]},{"nodeType":"YulAssignment","src":"5125:35:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5145:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5156:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5141:3:115"},"nodeType":"YulFunctionCall","src":"5141:18:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5135:5:115"},"nodeType":"YulFunctionCall","src":"5135:25:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5125:6:115"}]},{"nodeType":"YulAssignment","src":"5169:35:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5189:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5200:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5185:3:115"},"nodeType":"YulFunctionCall","src":"5185:18:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5179:5:115"},"nodeType":"YulFunctionCall","src":"5179:25:115"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"5169:6:115"}]}]},"name":"abi_decode_tuple_t_uint256t_uint128t_uint256t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4775:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4786:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4798:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4806:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4814:6:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4822:6:115","type":""}],"src":"4701:509:115"},{"body":{"nodeType":"YulBlock","src":"5313:157:115","statements":[{"body":{"nodeType":"YulBlock","src":"5359:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5368:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"5376:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5361:6:115"},"nodeType":"YulFunctionCall","src":"5361:22:115"},"nodeType":"YulExpressionStatement","src":"5361:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5334:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"5343:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5330:3:115"},"nodeType":"YulFunctionCall","src":"5330:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"5355:2:115","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5326:3:115"},"nodeType":"YulFunctionCall","src":"5326:32:115"},"nodeType":"YulIf","src":"5323:2:115"},{"nodeType":"YulAssignment","src":"5394:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5410:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5404:5:115"},"nodeType":"YulFunctionCall","src":"5404:16:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5394:6:115"}]},{"nodeType":"YulAssignment","src":"5429:35:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5449:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5460:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5445:3:115"},"nodeType":"YulFunctionCall","src":"5445:18:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5439:5:115"},"nodeType":"YulFunctionCall","src":"5439:25:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5429:6:115"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5271:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5282:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5294:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5302:6:115","type":""}],"src":"5215:255:115"},{"body":{"nodeType":"YulBlock","src":"5543:126:115","statements":[{"body":{"nodeType":"YulBlock","src":"5589:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5598:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"5606:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5591:6:115"},"nodeType":"YulFunctionCall","src":"5591:22:115"},"nodeType":"YulExpressionStatement","src":"5591:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5564:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"5573:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5560:3:115"},"nodeType":"YulFunctionCall","src":"5560:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"5585:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5556:3:115"},"nodeType":"YulFunctionCall","src":"5556:32:115"},"nodeType":"YulIf","src":"5553:2:115"},{"nodeType":"YulAssignment","src":"5624:39:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5653:9:115"}],"functionName":{"name":"abi_decode_t_uint8","nodeType":"YulIdentifier","src":"5634:18:115"},"nodeType":"YulFunctionCall","src":"5634:29:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5624:6:115"}]}]},"name":"abi_decode_tuple_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5509:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5520:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5532:6:115","type":""}],"src":"5475:194:115"},{"body":{"nodeType":"YulBlock","src":"5720:83:115","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5737:3:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5746:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"5753:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5742:3:115"},"nodeType":"YulFunctionCall","src":"5742:54:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5730:6:115"},"nodeType":"YulFunctionCall","src":"5730:67:115"},"nodeType":"YulExpressionStatement","src":"5730:67:115"}]},"name":"abi_encode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5704:5:115","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5711:3:115","type":""}],"src":"5674:129:115"},{"body":{"nodeType":"YulBlock","src":"5859:267:115","statements":[{"nodeType":"YulVariableDeclaration","src":"5869:26:115","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5889:5:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5883:5:115"},"nodeType":"YulFunctionCall","src":"5883:12:115"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5873:6:115","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5911:3:115"},{"name":"length","nodeType":"YulIdentifier","src":"5916:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5904:6:115"},"nodeType":"YulFunctionCall","src":"5904:19:115"},"nodeType":"YulExpressionStatement","src":"5904:19:115"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5958:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"5965:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5954:3:115"},"nodeType":"YulFunctionCall","src":"5954:16:115"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5976:3:115"},{"kind":"number","nodeType":"YulLiteral","src":"5981:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5972:3:115"},"nodeType":"YulFunctionCall","src":"5972:14:115"},{"name":"length","nodeType":"YulIdentifier","src":"5988:6:115"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"5932:21:115"},"nodeType":"YulFunctionCall","src":"5932:63:115"},"nodeType":"YulExpressionStatement","src":"5932:63:115"},{"nodeType":"YulAssignment","src":"6004:116:115","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6019:3:115"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6032:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6040:2:115","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6028:3:115"},"nodeType":"YulFunctionCall","src":"6028:15:115"},{"kind":"number","nodeType":"YulLiteral","src":"6045:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6024:3:115"},"nodeType":"YulFunctionCall","src":"6024:88:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6015:3:115"},"nodeType":"YulFunctionCall","src":"6015:98:115"},{"kind":"number","nodeType":"YulLiteral","src":"6115:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6011:3:115"},"nodeType":"YulFunctionCall","src":"6011:109:115"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6004:3:115"}]}]},"name":"abi_encode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5836:5:115","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5843:3:115","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5851:3:115","type":""}],"src":"5808:318:115"},{"body":{"nodeType":"YulBlock","src":"6175:49:115","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6192:3:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6208:1:115","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"6211:5:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"6197:10:115"},"nodeType":"YulFunctionCall","src":"6197:20:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6185:6:115"},"nodeType":"YulFunctionCall","src":"6185:33:115"},"nodeType":"YulExpressionStatement","src":"6185:33:115"}]},"name":"abi_encode_t_int24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6159:5:115","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6166:3:115","type":""}],"src":"6131:93:115"},{"body":{"nodeType":"YulBlock","src":"6274:49:115","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6291:3:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6300:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"6307:8:115","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6296:3:115"},"nodeType":"YulFunctionCall","src":"6296:20:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6284:6:115"},"nodeType":"YulFunctionCall","src":"6284:33:115"},"nodeType":"YulExpressionStatement","src":"6284:33:115"}]},"name":"abi_encode_t_uint24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6258:5:115","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6265:3:115","type":""}],"src":"6229:94:115"},{"body":{"nodeType":"YulBlock","src":"6475:126:115","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6498:3:115"},{"name":"value0","nodeType":"YulIdentifier","src":"6503:6:115"},{"name":"value1","nodeType":"YulIdentifier","src":"6511:6:115"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"6485:12:115"},"nodeType":"YulFunctionCall","src":"6485:33:115"},"nodeType":"YulExpressionStatement","src":"6485:33:115"},{"nodeType":"YulVariableDeclaration","src":"6527:26:115","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6541:3:115"},{"name":"value1","nodeType":"YulIdentifier","src":"6546:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6537:3:115"},"nodeType":"YulFunctionCall","src":"6537:16:115"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6531:2:115","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"6569:2:115"},{"name":"end","nodeType":"YulIdentifier","src":"6573:3:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6562:6:115"},"nodeType":"YulFunctionCall","src":"6562:15:115"},"nodeType":"YulExpressionStatement","src":"6562:15:115"},{"nodeType":"YulAssignment","src":"6586:9:115","value":{"name":"_1","nodeType":"YulIdentifier","src":"6593:2:115"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6586:3:115"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"6443:3:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6448:6:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6456:6:115","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6467:3:115","type":""}],"src":"6328:273:115"},{"body":{"nodeType":"YulBlock","src":"6707:125:115","statements":[{"nodeType":"YulAssignment","src":"6717:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6729:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"6740:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6725:3:115"},"nodeType":"YulFunctionCall","src":"6725:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6717:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6759:9:115"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6774:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6782:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6770:3:115"},"nodeType":"YulFunctionCall","src":"6770:55:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6752:6:115"},"nodeType":"YulFunctionCall","src":"6752:74:115"},"nodeType":"YulExpressionStatement","src":"6752:74:115"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6676:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6687:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6698:4:115","type":""}],"src":"6606:226:115"},{"body":{"nodeType":"YulBlock","src":"6946:125:115","statements":[{"nodeType":"YulAssignment","src":"6956:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6968:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"6979:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6964:3:115"},"nodeType":"YulFunctionCall","src":"6964:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6956:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6998:9:115"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7013:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"7021:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7009:3:115"},"nodeType":"YulFunctionCall","src":"7009:55:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6991:6:115"},"nodeType":"YulFunctionCall","src":"6991:74:115"},"nodeType":"YulExpressionStatement","src":"6991:74:115"}]},"name":"abi_encode_tuple_t_address_payable__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6915:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6926:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6937:4:115","type":""}],"src":"6837:234:115"},{"body":{"nodeType":"YulBlock","src":"7241:241:115","statements":[{"nodeType":"YulAssignment","src":"7251:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7263:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"7274:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7259:3:115"},"nodeType":"YulFunctionCall","src":"7259:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7251:4:115"}]},{"nodeType":"YulVariableDeclaration","src":"7286:52:115","value":{"kind":"number","nodeType":"YulLiteral","src":"7296:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7290:2:115","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7354:9:115"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7369:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"7377:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7365:3:115"},"nodeType":"YulFunctionCall","src":"7365:15:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7347:6:115"},"nodeType":"YulFunctionCall","src":"7347:34:115"},"nodeType":"YulExpressionStatement","src":"7347:34:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7401:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"7412:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7397:3:115"},"nodeType":"YulFunctionCall","src":"7397:18:115"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7421:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"7429:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7417:3:115"},"nodeType":"YulFunctionCall","src":"7417:15:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7390:6:115"},"nodeType":"YulFunctionCall","src":"7390:43:115"},"nodeType":"YulExpressionStatement","src":"7390:43:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7453:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"7464:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7449:3:115"},"nodeType":"YulFunctionCall","src":"7449:18:115"},{"name":"value2","nodeType":"YulIdentifier","src":"7469:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7442:6:115"},"nodeType":"YulFunctionCall","src":"7442:34:115"},"nodeType":"YulExpressionStatement","src":"7442:34:115"}]},"name":"abi_encode_tuple_t_address_payable_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7194:9:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7205:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7213:6:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7221:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7232:4:115","type":""}],"src":"7076:406:115"},{"body":{"nodeType":"YulBlock","src":"7656:696:115","statements":[{"nodeType":"YulVariableDeclaration","src":"7666:12:115","value":{"kind":"number","nodeType":"YulLiteral","src":"7676:2:115","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7670:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7687:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7705:9:115"},{"name":"_1","nodeType":"YulIdentifier","src":"7716:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7701:3:115"},"nodeType":"YulFunctionCall","src":"7701:18:115"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"7691:6:115","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7735:9:115"},{"name":"_1","nodeType":"YulIdentifier","src":"7746:2:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7728:6:115"},"nodeType":"YulFunctionCall","src":"7728:21:115"},"nodeType":"YulExpressionStatement","src":"7728:21:115"},{"nodeType":"YulVariableDeclaration","src":"7758:17:115","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"7769:6:115"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"7762:3:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7784:27:115","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7804:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7798:5:115"},"nodeType":"YulFunctionCall","src":"7798:13:115"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7788:6:115","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"7827:6:115"},{"name":"length","nodeType":"YulIdentifier","src":"7835:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7820:6:115"},"nodeType":"YulFunctionCall","src":"7820:22:115"},"nodeType":"YulExpressionStatement","src":"7820:22:115"},{"nodeType":"YulAssignment","src":"7851:25:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7862:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"7873:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7858:3:115"},"nodeType":"YulFunctionCall","src":"7858:18:115"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7851:3:115"}]},{"nodeType":"YulVariableDeclaration","src":"7885:54:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7907:9:115"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7922:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"7930:2:115"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7918:3:115"},"nodeType":"YulFunctionCall","src":"7918:15:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7903:3:115"},"nodeType":"YulFunctionCall","src":"7903:31:115"},{"kind":"number","nodeType":"YulLiteral","src":"7936:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7899:3:115"},"nodeType":"YulFunctionCall","src":"7899:40:115"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"7889:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7948:29:115","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7966:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"7974:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7962:3:115"},"nodeType":"YulFunctionCall","src":"7962:15:115"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"7952:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7986:13:115","value":{"name":"tail","nodeType":"YulIdentifier","src":"7995:4:115"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"7990:1:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"8057:266:115","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8078:3:115"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8091:6:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"8099:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8087:3:115"},"nodeType":"YulFunctionCall","src":"8087:22:115"},{"kind":"number","nodeType":"YulLiteral","src":"8111:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8083:3:115"},"nodeType":"YulFunctionCall","src":"8083:95:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8071:6:115"},"nodeType":"YulFunctionCall","src":"8071:108:115"},"nodeType":"YulExpressionStatement","src":"8071:108:115"},{"nodeType":"YulAssignment","src":"8192:51:115","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8227:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8221:5:115"},"nodeType":"YulFunctionCall","src":"8221:13:115"},{"name":"tail_2","nodeType":"YulIdentifier","src":"8236:6:115"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"8202:18:115"},"nodeType":"YulFunctionCall","src":"8202:41:115"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8192:6:115"}]},{"nodeType":"YulAssignment","src":"8256:25:115","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8270:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"8278:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8266:3:115"},"nodeType":"YulFunctionCall","src":"8266:15:115"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8256:6:115"}]},{"nodeType":"YulAssignment","src":"8294:19:115","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8305:3:115"},{"name":"_1","nodeType":"YulIdentifier","src":"8310:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8301:3:115"},"nodeType":"YulFunctionCall","src":"8301:12:115"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8294:3:115"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8019:1:115"},{"name":"length","nodeType":"YulIdentifier","src":"8022:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8016:2:115"},"nodeType":"YulFunctionCall","src":"8016:13:115"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"8030:18:115","statements":[{"nodeType":"YulAssignment","src":"8032:14:115","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8041:1:115"},{"kind":"number","nodeType":"YulLiteral","src":"8044:1:115","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8037:3:115"},"nodeType":"YulFunctionCall","src":"8037:9:115"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"8032:1:115"}]}]},"pre":{"nodeType":"YulBlock","src":"8012:3:115","statements":[]},"src":"8008:315:115"},{"nodeType":"YulAssignment","src":"8332:14:115","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"8340:6:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8332:4:115"}]}]},"name":"abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7625:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7636:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7647:4:115","type":""}],"src":"7487:865:115"},{"body":{"nodeType":"YulBlock","src":"8478:100:115","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8495:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"8506:2:115","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8488:6:115"},"nodeType":"YulFunctionCall","src":"8488:21:115"},"nodeType":"YulExpressionStatement","src":"8488:21:115"},{"nodeType":"YulAssignment","src":"8518:54:115","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8545:6:115"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8557:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"8568:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8553:3:115"},"nodeType":"YulFunctionCall","src":"8553:18:115"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"8526:18:115"},"nodeType":"YulFunctionCall","src":"8526:46:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8518:4:115"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8447:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8458:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8469:4:115","type":""}],"src":"8357:221:115"},{"body":{"nodeType":"YulBlock","src":"8757:170:115","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8774:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"8785:2:115","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8767:6:115"},"nodeType":"YulFunctionCall","src":"8767:21:115"},"nodeType":"YulExpressionStatement","src":"8767:21:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8808:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"8819:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8804:3:115"},"nodeType":"YulFunctionCall","src":"8804:18:115"},{"kind":"number","nodeType":"YulLiteral","src":"8824:2:115","type":"","value":"20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8797:6:115"},"nodeType":"YulFunctionCall","src":"8797:30:115"},"nodeType":"YulExpressionStatement","src":"8797:30:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8847:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"8858:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8843:3:115"},"nodeType":"YulFunctionCall","src":"8843:18:115"},{"kind":"string","nodeType":"YulLiteral","src":"8863:22:115","type":"","value":"Percentage too small"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8836:6:115"},"nodeType":"YulFunctionCall","src":"8836:50:115"},"nodeType":"YulExpressionStatement","src":"8836:50:115"},{"nodeType":"YulAssignment","src":"8895:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8907:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"8918:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8903:3:115"},"nodeType":"YulFunctionCall","src":"8903:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8895:4:115"}]}]},"name":"abi_encode_tuple_t_stringliteral_441c69a76c2d33fd9de54332033d9c05337cb9707baa639e0118d8dc01b47be7__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8734:9:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8748:4:115","type":""}],"src":"8583:344:115"},{"body":{"nodeType":"YulBlock","src":"9106:157:115","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9123:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9134:2:115","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9116:6:115"},"nodeType":"YulFunctionCall","src":"9116:21:115"},"nodeType":"YulExpressionStatement","src":"9116:21:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9157:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9168:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9153:3:115"},"nodeType":"YulFunctionCall","src":"9153:18:115"},{"kind":"number","nodeType":"YulLiteral","src":"9173:1:115","type":"","value":"8"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9146:6:115"},"nodeType":"YulFunctionCall","src":"9146:29:115"},"nodeType":"YulExpressionStatement","src":"9146:29:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9195:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9206:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9191:3:115"},"nodeType":"YulFunctionCall","src":"9191:18:115"},{"kind":"string","nodeType":"YulLiteral","src":"9211:10:115","type":"","value":"Not SAMB"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9184:6:115"},"nodeType":"YulFunctionCall","src":"9184:38:115"},"nodeType":"YulExpressionStatement","src":"9184:38:115"},{"nodeType":"YulAssignment","src":"9231:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9243:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9254:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9239:3:115"},"nodeType":"YulFunctionCall","src":"9239:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9231:4:115"}]}]},"name":"abi_encode_tuple_t_stringliteral_9742e45cbdcfb33441b71c5e16cad2d39cf9a5067bcabd680e872cd9d5b8a313__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9083:9:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9097:4:115","type":""}],"src":"8932:331:115"},{"body":{"nodeType":"YulBlock","src":"9442:170:115","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9459:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9470:2:115","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9452:6:115"},"nodeType":"YulFunctionCall","src":"9452:21:115"},"nodeType":"YulExpressionStatement","src":"9452:21:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9493:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9504:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9489:3:115"},"nodeType":"YulFunctionCall","src":"9489:18:115"},{"kind":"number","nodeType":"YulLiteral","src":"9509:2:115","type":"","value":"20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9482:6:115"},"nodeType":"YulFunctionCall","src":"9482:30:115"},"nodeType":"YulExpressionStatement","src":"9482:30:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9532:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9543:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9528:3:115"},"nodeType":"YulFunctionCall","src":"9528:18:115"},{"kind":"string","nodeType":"YulLiteral","src":"9548:22:115","type":"","value":"Percentage too large"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9521:6:115"},"nodeType":"YulFunctionCall","src":"9521:50:115"},"nodeType":"YulExpressionStatement","src":"9521:50:115"},{"nodeType":"YulAssignment","src":"9580:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9592:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9603:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9588:3:115"},"nodeType":"YulFunctionCall","src":"9588:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9580:4:115"}]}]},"name":"abi_encode_tuple_t_stringliteral_9a769b63cd4026b5e7e44da6e571c3cde616fe3a40029eab2d6b59e7b569424b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9419:9:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9433:4:115","type":""}],"src":"9268:344:115"},{"body":{"nodeType":"YulBlock","src":"9774:1077:115","statements":[{"nodeType":"YulAssignment","src":"9784:27:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9796:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9807:3:115","type":"","value":"352"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9792:3:115"},"nodeType":"YulFunctionCall","src":"9792:19:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9784:4:115"}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9847:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9841:5:115"},"nodeType":"YulFunctionCall","src":"9841:13:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"9856:9:115"}],"functionName":{"name":"abi_encode_t_address","nodeType":"YulIdentifier","src":"9820:20:115"},"nodeType":"YulFunctionCall","src":"9820:46:115"},"nodeType":"YulExpressionStatement","src":"9820:46:115"},{"nodeType":"YulVariableDeclaration","src":"9875:44:115","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9905:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"9913:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9901:3:115"},"nodeType":"YulFunctionCall","src":"9901:17:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9895:5:115"},"nodeType":"YulFunctionCall","src":"9895:24:115"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"9879:12:115","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"9949:12:115"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9967:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9978:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9963:3:115"},"nodeType":"YulFunctionCall","src":"9963:20:115"}],"functionName":{"name":"abi_encode_t_address","nodeType":"YulIdentifier","src":"9928:20:115"},"nodeType":"YulFunctionCall","src":"9928:56:115"},"nodeType":"YulExpressionStatement","src":"9928:56:115"},{"nodeType":"YulVariableDeclaration","src":"9993:46:115","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10025:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"10033:4:115","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10021:3:115"},"nodeType":"YulFunctionCall","src":"10021:17:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10015:5:115"},"nodeType":"YulFunctionCall","src":"10015:24:115"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"9997:14:115","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"10068:14:115"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10088:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"10099:4:115","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10084:3:115"},"nodeType":"YulFunctionCall","src":"10084:20:115"}],"functionName":{"name":"abi_encode_t_uint24","nodeType":"YulIdentifier","src":"10048:19:115"},"nodeType":"YulFunctionCall","src":"10048:57:115"},"nodeType":"YulExpressionStatement","src":"10048:57:115"},{"nodeType":"YulVariableDeclaration","src":"10114:46:115","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10146:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"10154:4:115","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10142:3:115"},"nodeType":"YulFunctionCall","src":"10142:17:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10136:5:115"},"nodeType":"YulFunctionCall","src":"10136:24:115"},"variables":[{"name":"memberValue0_2","nodeType":"YulTypedName","src":"10118:14:115","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_2","nodeType":"YulIdentifier","src":"10188:14:115"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10208:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"10219:4:115","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10204:3:115"},"nodeType":"YulFunctionCall","src":"10204:20:115"}],"functionName":{"name":"abi_encode_t_int24","nodeType":"YulIdentifier","src":"10169:18:115"},"nodeType":"YulFunctionCall","src":"10169:56:115"},"nodeType":"YulExpressionStatement","src":"10169:56:115"},{"nodeType":"YulVariableDeclaration","src":"10234:46:115","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10266:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"10274:4:115","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10262:3:115"},"nodeType":"YulFunctionCall","src":"10262:17:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10256:5:115"},"nodeType":"YulFunctionCall","src":"10256:24:115"},"variables":[{"name":"memberValue0_3","nodeType":"YulTypedName","src":"10238:14:115","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_3","nodeType":"YulIdentifier","src":"10308:14:115"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10328:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"10339:4:115","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10324:3:115"},"nodeType":"YulFunctionCall","src":"10324:20:115"}],"functionName":{"name":"abi_encode_t_int24","nodeType":"YulIdentifier","src":"10289:18:115"},"nodeType":"YulFunctionCall","src":"10289:56:115"},"nodeType":"YulExpressionStatement","src":"10289:56:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10365:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"10376:4:115","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10361:3:115"},"nodeType":"YulFunctionCall","src":"10361:20:115"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10393:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"10401:4:115","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10389:3:115"},"nodeType":"YulFunctionCall","src":"10389:17:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10383:5:115"},"nodeType":"YulFunctionCall","src":"10383:24:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10354:6:115"},"nodeType":"YulFunctionCall","src":"10354:54:115"},"nodeType":"YulExpressionStatement","src":"10354:54:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10428:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"10439:4:115","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10424:3:115"},"nodeType":"YulFunctionCall","src":"10424:20:115"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10456:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"10464:4:115","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10452:3:115"},"nodeType":"YulFunctionCall","src":"10452:17:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10446:5:115"},"nodeType":"YulFunctionCall","src":"10446:24:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10417:6:115"},"nodeType":"YulFunctionCall","src":"10417:54:115"},"nodeType":"YulExpressionStatement","src":"10417:54:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10491:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"10502:4:115","type":"","value":"0xe0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10487:3:115"},"nodeType":"YulFunctionCall","src":"10487:20:115"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10519:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"10527:4:115","type":"","value":"0xe0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10515:3:115"},"nodeType":"YulFunctionCall","src":"10515:17:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10509:5:115"},"nodeType":"YulFunctionCall","src":"10509:24:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10480:6:115"},"nodeType":"YulFunctionCall","src":"10480:54:115"},"nodeType":"YulExpressionStatement","src":"10480:54:115"},{"nodeType":"YulVariableDeclaration","src":"10543:16:115","value":{"kind":"number","nodeType":"YulLiteral","src":"10553:6:115","type":"","value":"0x0100"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"10547:2:115","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10579:9:115"},{"name":"_1","nodeType":"YulIdentifier","src":"10590:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10575:3:115"},"nodeType":"YulFunctionCall","src":"10575:18:115"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10605:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"10613:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10601:3:115"},"nodeType":"YulFunctionCall","src":"10601:15:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10595:5:115"},"nodeType":"YulFunctionCall","src":"10595:22:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10568:6:115"},"nodeType":"YulFunctionCall","src":"10568:50:115"},"nodeType":"YulExpressionStatement","src":"10568:50:115"},{"nodeType":"YulVariableDeclaration","src":"10627:16:115","value":{"kind":"number","nodeType":"YulLiteral","src":"10637:6:115","type":"","value":"0x0120"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"10631:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"10652:44:115","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10684:6:115"},{"name":"_2","nodeType":"YulIdentifier","src":"10692:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10680:3:115"},"nodeType":"YulFunctionCall","src":"10680:15:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10674:5:115"},"nodeType":"YulFunctionCall","src":"10674:22:115"},"variables":[{"name":"memberValue0_4","nodeType":"YulTypedName","src":"10656:14:115","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_4","nodeType":"YulIdentifier","src":"10726:14:115"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10746:9:115"},{"name":"_2","nodeType":"YulIdentifier","src":"10757:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10742:3:115"},"nodeType":"YulFunctionCall","src":"10742:18:115"}],"functionName":{"name":"abi_encode_t_address","nodeType":"YulIdentifier","src":"10705:20:115"},"nodeType":"YulFunctionCall","src":"10705:56:115"},"nodeType":"YulExpressionStatement","src":"10705:56:115"},{"nodeType":"YulVariableDeclaration","src":"10770:16:115","value":{"kind":"number","nodeType":"YulLiteral","src":"10780:6:115","type":"","value":"0x0140"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"10774:2:115","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10806:9:115"},{"name":"_3","nodeType":"YulIdentifier","src":"10817:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10802:3:115"},"nodeType":"YulFunctionCall","src":"10802:18:115"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10832:6:115"},{"name":"_3","nodeType":"YulIdentifier","src":"10840:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10828:3:115"},"nodeType":"YulFunctionCall","src":"10828:15:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10822:5:115"},"nodeType":"YulFunctionCall","src":"10822:22:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10795:6:115"},"nodeType":"YulFunctionCall","src":"10795:50:115"},"nodeType":"YulExpressionStatement","src":"10795:50:115"}]},"name":"abi_encode_tuple_t_struct$_MintParams_$9634_memory_ptr__to_t_struct$_MintParams_$9634_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9743:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9754:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9765:4:115","type":""}],"src":"9617:1234:115"},{"body":{"nodeType":"YulBlock","src":"10957:76:115","statements":[{"nodeType":"YulAssignment","src":"10967:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10979:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"10990:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10975:3:115"},"nodeType":"YulFunctionCall","src":"10975:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10967:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11009:9:115"},{"name":"value0","nodeType":"YulIdentifier","src":"11020:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11002:6:115"},"nodeType":"YulFunctionCall","src":"11002:25:115"},"nodeType":"YulExpressionStatement","src":"11002:25:115"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10926:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10937:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10948:4:115","type":""}],"src":"10856:177:115"},{"body":{"nodeType":"YulBlock","src":"11132:498:115","statements":[{"nodeType":"YulVariableDeclaration","src":"11142:51:115","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"11181:11:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11168:12:115"},"nodeType":"YulFunctionCall","src":"11168:25:115"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"11146:18:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"11341:22:115","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"11350:4:115"},{"name":"addr","nodeType":"YulIdentifier","src":"11356:4:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11343:6:115"},"nodeType":"YulFunctionCall","src":"11343:18:115"},"nodeType":"YulExpressionStatement","src":"11343:18:115"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"11216:18:115"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"11244:12:115"},"nodeType":"YulFunctionCall","src":"11244:14:115"},{"name":"base_ref","nodeType":"YulIdentifier","src":"11260:8:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11240:3:115"},"nodeType":"YulFunctionCall","src":"11240:29:115"},{"kind":"number","nodeType":"YulLiteral","src":"11271:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11236:3:115"},"nodeType":"YulFunctionCall","src":"11236:102:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11212:3:115"},"nodeType":"YulFunctionCall","src":"11212:127:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11205:6:115"},"nodeType":"YulFunctionCall","src":"11205:135:115"},"nodeType":"YulIf","src":"11202:2:115"},{"nodeType":"YulVariableDeclaration","src":"11372:47:115","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"11390:8:115"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"11400:18:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11386:3:115"},"nodeType":"YulFunctionCall","src":"11386:33:115"},"variables":[{"name":"addr_1","nodeType":"YulTypedName","src":"11376:6:115","type":""}]},{"nodeType":"YulAssignment","src":"11428:30:115","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"11451:6:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11438:12:115"},"nodeType":"YulFunctionCall","src":"11438:20:115"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"11428:6:115"}]},{"body":{"nodeType":"YulBlock","src":"11501:22:115","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"11510:4:115"},{"name":"addr","nodeType":"YulIdentifier","src":"11516:4:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11503:6:115"},"nodeType":"YulFunctionCall","src":"11503:18:115"},"nodeType":"YulExpressionStatement","src":"11503:18:115"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"11473:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"11481:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11470:2:115"},"nodeType":"YulFunctionCall","src":"11470:30:115"},"nodeType":"YulIf","src":"11467:2:115"},{"nodeType":"YulAssignment","src":"11532:25:115","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"11544:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"11552:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11540:3:115"},"nodeType":"YulFunctionCall","src":"11540:17:115"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"11532:4:115"}]},{"body":{"nodeType":"YulBlock","src":"11608:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11617:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11620:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11610:6:115"},"nodeType":"YulFunctionCall","src":"11610:12:115"},"nodeType":"YulExpressionStatement","src":"11610:12:115"}]},"condition":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"11573:4:115"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"11583:12:115"},"nodeType":"YulFunctionCall","src":"11583:14:115"},{"name":"length","nodeType":"YulIdentifier","src":"11599:6:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11579:3:115"},"nodeType":"YulFunctionCall","src":"11579:27:115"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"11569:3:115"},"nodeType":"YulFunctionCall","src":"11569:38:115"},"nodeType":"YulIf","src":"11566:2:115"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"11089:8:115","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"11099:11:115","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"11115:4:115","type":""},{"name":"length","nodeType":"YulTypedName","src":"11121:6:115","type":""}],"src":"11038:592:115"},{"body":{"nodeType":"YulBlock","src":"11688:205:115","statements":[{"nodeType":"YulVariableDeclaration","src":"11698:10:115","value":{"kind":"number","nodeType":"YulLiteral","src":"11707:1:115","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"11702:1:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"11767:63:115","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"11792:3:115"},{"name":"i","nodeType":"YulIdentifier","src":"11797:1:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11788:3:115"},"nodeType":"YulFunctionCall","src":"11788:11:115"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"11811:3:115"},{"name":"i","nodeType":"YulIdentifier","src":"11816:1:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11807:3:115"},"nodeType":"YulFunctionCall","src":"11807:11:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11801:5:115"},"nodeType":"YulFunctionCall","src":"11801:18:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11781:6:115"},"nodeType":"YulFunctionCall","src":"11781:39:115"},"nodeType":"YulExpressionStatement","src":"11781:39:115"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11728:1:115"},{"name":"length","nodeType":"YulIdentifier","src":"11731:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"11725:2:115"},"nodeType":"YulFunctionCall","src":"11725:13:115"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"11739:19:115","statements":[{"nodeType":"YulAssignment","src":"11741:15:115","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11750:1:115"},{"kind":"number","nodeType":"YulLiteral","src":"11753:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11746:3:115"},"nodeType":"YulFunctionCall","src":"11746:10:115"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"11741:1:115"}]}]},"pre":{"nodeType":"YulBlock","src":"11721:3:115","statements":[]},"src":"11717:113:115"},{"body":{"nodeType":"YulBlock","src":"11856:31:115","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"11869:3:115"},{"name":"length","nodeType":"YulIdentifier","src":"11874:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11865:3:115"},"nodeType":"YulFunctionCall","src":"11865:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"11883:1:115","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11858:6:115"},"nodeType":"YulFunctionCall","src":"11858:27:115"},"nodeType":"YulExpressionStatement","src":"11858:27:115"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11845:1:115"},{"name":"length","nodeType":"YulIdentifier","src":"11848:6:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11842:2:115"},"nodeType":"YulFunctionCall","src":"11842:13:115"},"nodeType":"YulIf","src":"11839:2:115"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"11666:3:115","type":""},{"name":"dst","nodeType":"YulTypedName","src":"11671:3:115","type":""},{"name":"length","nodeType":"YulTypedName","src":"11676:6:115","type":""}],"src":"11635:258:115"},{"body":{"nodeType":"YulBlock","src":"11945:109:115","statements":[{"body":{"nodeType":"YulBlock","src":"12032:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12041:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12044:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12034:6:115"},"nodeType":"YulFunctionCall","src":"12034:12:115"},"nodeType":"YulExpressionStatement","src":"12034:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11968:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11979:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"11986:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11975:3:115"},"nodeType":"YulFunctionCall","src":"11975:54:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"11965:2:115"},"nodeType":"YulFunctionCall","src":"11965:65:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11958:6:115"},"nodeType":"YulFunctionCall","src":"11958:73:115"},"nodeType":"YulIf","src":"11955:2:115"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11934:5:115","type":""}],"src":"11898:156:115"},{"body":{"nodeType":"YulBlock","src":"12103:76:115","statements":[{"body":{"nodeType":"YulBlock","src":"12157:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12166:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12169:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12159:6:115"},"nodeType":"YulFunctionCall","src":"12159:12:115"},"nodeType":"YulExpressionStatement","src":"12159:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12126:5:115"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12147:5:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12140:6:115"},"nodeType":"YulFunctionCall","src":"12140:13:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12133:6:115"},"nodeType":"YulFunctionCall","src":"12133:21:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"12123:2:115"},"nodeType":"YulFunctionCall","src":"12123:32:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12116:6:115"},"nodeType":"YulFunctionCall","src":"12116:40:115"},"nodeType":"YulIf","src":"12113:2:115"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"12092:5:115","type":""}],"src":"12059:120:115"}]},"contents":"{\n    { }\n    function abi_decode_t_uint24(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffff))) { revert(0, 0) }\n    }\n    function abi_decode_t_uint8(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint24t_uint160(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value1, value1) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := abi_decode_t_uint24(add(headStart, 64))\n        let value_2 := calldataload(add(headStart, 96))\n        validator_revert_t_address(value_2)\n        value3 := value_2\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(value4, value4) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := abi_decode_t_uint8(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n    }\n    function abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value0, value0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(value0, value0) }\n        if gt(add(add(_2, mul(length, 32)), 32), dataEnd) { revert(value0, value0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_bool(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_t_bool(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_int24(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, signextend(2, value))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := mload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { invalid() }\n        let memPtr := mload(64)\n        let newFreePtr := add(add(memPtr, and(add(_3, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 32)\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(value0, value0) }\n        copy_memory_to_memory(add(_2, 32), add(memPtr, 32), _3)\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_struct$_MigrateParams_$9444_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 416) { revert(value0, value0) }\n        value0 := headStart\n    }\n    function abi_decode_tuple_t_uint24(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := abi_decode_t_uint24(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_uint128t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\n        value0 := mload(headStart)\n        let value := mload(add(headStart, 32))\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffff))) { revert(value1, value1) }\n        value1 := value\n        value2 := mload(add(headStart, 64))\n        value3 := mload(add(headStart, 96))\n    }\n    function abi_decode_tuple_t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint8(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := abi_decode_t_uint8(headStart)\n    }\n    function abi_encode_t_address(value, pos)\n    {\n        mstore(pos, and(value, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_t_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_t_int24(value, pos)\n    {\n        mstore(pos, signextend(2, value))\n    }\n    function abi_encode_t_uint24(value, pos)\n    {\n        mstore(pos, and(value, 0xffffff))\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, end)\n        end := _1\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_payable__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_payable_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let tail_2 := add(add(headStart, mul(length, _1)), 64)\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0))\n            tail_2 := abi_encode_t_bytes(mload(srcPtr), tail_2)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        tail := tail_2\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_t_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_441c69a76c2d33fd9de54332033d9c05337cb9707baa639e0118d8dc01b47be7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"Percentage too small\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_9742e45cbdcfb33441b71c5e16cad2d39cf9a5067bcabd680e872cd9d5b8a313__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 8)\n        mstore(add(headStart, 64), \"Not SAMB\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_9a769b63cd4026b5e7e44da6e571c3cde616fe3a40029eab2d6b59e7b569424b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"Percentage too large\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_struct$_MintParams_$9634_memory_ptr__to_t_struct$_MintParams_$9634_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 352)\n        abi_encode_t_address(mload(value0), headStart)\n        let memberValue0 := mload(add(value0, 0x20))\n        abi_encode_t_address(memberValue0, add(headStart, 0x20))\n        let memberValue0_1 := mload(add(value0, 0x40))\n        abi_encode_t_uint24(memberValue0_1, add(headStart, 0x40))\n        let memberValue0_2 := mload(add(value0, 0x60))\n        abi_encode_t_int24(memberValue0_2, add(headStart, 0x60))\n        let memberValue0_3 := mload(add(value0, 0x80))\n        abi_encode_t_int24(memberValue0_3, add(headStart, 0x80))\n        mstore(add(headStart, 0xa0), mload(add(value0, 0xa0)))\n        mstore(add(headStart, 0xc0), mload(add(value0, 0xc0)))\n        mstore(add(headStart, 0xe0), mload(add(value0, 0xe0)))\n        let _1 := 0x0100\n        mstore(add(headStart, _1), mload(add(value0, _1)))\n        let _2 := 0x0120\n        let memberValue0_4 := mload(add(value0, _2))\n        abi_encode_t_address(memberValue0_4, add(headStart, _2))\n        let _3 := 0x0140\n        mstore(add(headStart, _3), mload(add(value0, _3)))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(addr, addr) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(addr, addr) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function validator_revert_t_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function validator_revert_t_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n}","id":115,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"6906":[{"length":32,"start":2317},{"length":32,"start":3148},{"length":32,"start":3206},{"length":32,"start":3248},{"length":32,"start":3725}],"8379":[{"length":32,"start":617},{"length":32,"start":868},{"length":32,"start":2534}],"8383":[{"length":32,"start":210},{"length":32,"start":1714},{"length":32,"start":3814},{"length":32,"start":3952},{"length":32,"start":4184},{"length":32,"start":4322}]},"linkReferences":{},"object":"6080604052600436106100b55760003560e01c8063b44a272211610069578063c45a01551161004e578063c45a0155146101e5578063d44f2bf2146101fa578063f3995c671461021a57610134565b8063b44a2722146101bd578063c2e3140a146101d257610134565b806390793ea81161009a57806390793ea814610175578063a4a78f0c1461018a578063ac9650d81461019d57610134565b806313ead562146101395780634659a4941461016257610134565b36610134573373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012990611c15565b60405180910390fd5b005b600080fd5b61014c610147366004611788565b61022d565b6040516101599190611afb565b60405180910390f35b6101326101703660046117e1565b6105f0565b34801561018157600080fd5b5061014c6106b0565b6101326101983660046117e1565b6106d4565b6101b06101ab36600461183a565b6107b1565b6040516101599190611b4d565b3480156101c957600080fd5b5061014c61090b565b6101326101e03660046117e1565b61092f565b3480156101f157600080fd5b5061014c6109e4565b34801561020657600080fd5b506101326102153660046119b7565b610a08565b6101326102283660046117e1565b611176565b60008373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161061026757600080fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631698ee828686866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018262ffffff168152602001935050505060206040518083038186803b15801561031957600080fd5b505afa15801561032d573d6000803e3d6000fd5b505050506040513d602081101561034357600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff81166104d3577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a16712958686866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018262ffffff1681526020019350505050602060405180830381600087803b15801561041657600080fd5b505af115801561042a573d6000803e3d6000fd5b505050506040513d602081101561044057600080fd5b5051604080517ff637731d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015291519293509083169163f637731d9160248082019260009290919082900301818387803b1580156104b657600080fd5b505af11580156104ca573d6000803e3d6000fd5b505050506105e8565b60008173ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561051b57600080fd5b505afa15801561052f573d6000803e3d6000fd5b505050506040513d60e081101561054557600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff81166105e6578173ffffffffffffffffffffffffffffffffffffffff1663f637731d846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156105cd57600080fd5b505af11580156105e1573d6000803e3d6000fd5b505050505b505b949350505050565b604080517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e48101839052905173ffffffffffffffffffffffffffffffffffffffff881691638fcbaf0c9161010480830192600092919082900301818387803b15801561069057600080fd5b505af11580156106a4573d6000803e3d6000fd5b50505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b15801561076957600080fd5b505afa15801561077d573d6000803e3d6000fd5b505050506040513d602081101561079357600080fd5b505110156107a9576107a98686868686866105f0565b505050505050565b60608167ffffffffffffffff811180156107ca57600080fd5b506040519080825280602002602001820160405280156107fe57816020015b60608152602001906001900390816107e95790505b50905060005b82811015610904576000803086868581811061081c57fe5b905060200281019061082e9190611d3a565b60405161083c929190611aeb565b600060405180830381855af49150503d8060008114610877576040519150601f19603f3d011682016040523d82523d6000602084013e61087c565b606091505b5091509150816108e25760448151101561089557600080fd5b600481019050808060200190518101906108af9190611902565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101299190611bcb565b808484815181106108ef57fe5b60209081029190910101525050600101610804565b5092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051869173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b1580156109a457600080fd5b505afa1580156109b8573d6000803e3d6000fd5b505050506040513d60208110156109ce57600080fd5b505110156107a9576107a9868686868686611176565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610a1a6060830160408401611a5d565b60ff1611610a54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012990611bde565b6064610a666060830160408401611a5d565b60ff161115610aa1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012990611c4c565b610aae6020820182611765565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd33610ad76020850185611765565b84602001356040518463ffffffff1660e01b8152600401610afa93929190611b1c565b602060405180830381600087803b158015610b1457600080fd5b505af1158015610b28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4c91906118c5565b50600080610b5d6020840184611765565b73ffffffffffffffffffffffffffffffffffffffff166389afcb44306040518263ffffffff1660e01b8152600401610b959190611afb565b6040805180830381600087803b158015610bae57600080fd5b505af1158015610bc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be69190611a3a565b909250905060006064610c0c610c026060870160408801611a5d565b859060ff1661120e565b81610c1357fe5b04905060006064610c2d610c026060880160408901611a5d565b81610c3457fe5b049050610c71610c4a6080870160608801611765565b7f000000000000000000000000000000000000000000000000000000000000000084611238565b610cab610c8460a0870160808801611765565b7f000000000000000000000000000000000000000000000000000000000000000083611238565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663883164566040518061016001604052808a6060016020810190610d099190611765565b73ffffffffffffffffffffffffffffffffffffffff168152602001610d3460a08c0160808d01611765565b73ffffffffffffffffffffffffffffffffffffffff168152602001610d5f60c08c0160a08d016119cf565b62ffffff168152602001610d7960e08c0160c08d016118e1565b60020b8152602001610d926101008c0160e08d016118e1565b60020b815260208101889052604081018790526101008b013560608201526101208b0135608082015260a001610dd06101608c016101408d01611765565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a61016001358152506040518263ffffffff1660e01b8152600401610e109190611c83565b608060405180830381600087803b158015610e2a57600080fd5b505af1158015610e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6291906119e9565b935093505050858210156110025783821015610eb357610eb3610e8b6080890160608a01611765565b7f00000000000000000000000000000000000000000000000000000000000000006000611238565b818603610ec86101a089016101808a016118a9565b8015610f2e575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610f1660808a0160608b01611765565b73ffffffffffffffffffffffffffffffffffffffff16145b15610fe6576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d90610fa5908490600401611d31565b600060405180830381600087803b158015610fbf57600080fd5b505af1158015610fd3573d6000803e3d6000fd5b50505050610fe13382611414565b611000565b611000610ff960808a0160608b01611765565b3383611567565b505b8481101561116d578281101561102557611025610e8b60a0890160808a01611765565b80850361103a6101a089016101808a016118a9565b80156110a0575073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661108860a08a0160808b01611765565b73ffffffffffffffffffffffffffffffffffffffff16145b15611158576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d90611117908490600401611d31565b600060405180830381600087803b15801561113157600080fd5b505af1158015611145573d6000803e3d6000fd5b505050506111533382611414565b61116b565b61116b610ff960a08a0160808b01611765565b505b50505050505050565b604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c48101839052905173ffffffffffffffffffffffffffffffffffffffff88169163d505accf9160e480830192600092919082900301818387803b15801561069057600080fd5b60008215806112295750508181028183828161122657fe5b04145b61123257600080fd5b92915050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b6020831061130d57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016112d0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461136f576040519150601f19603f3d011682016040523d82523d6000602084013e611374565b606091505b50915091508180156113a25750805115806113a2575080806020019051602081101561139f57600080fd5b50515b61140d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5341000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b6020831061148b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161144e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146114ed576040519150601f19603f3d011682016040523d82523d6000602084013e6114f2565b606091505b505090508061156257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b6020831061163c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016115ff565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461169e576040519150601f19603f3d011682016040523d82523d6000602084013e6116a3565b606091505b50915091508180156116d15750805115806116d157508080602001905160208110156116ce57600080fd5b50515b61140d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b803562ffffff8116811461174f57600080fd5b919050565b803560ff8116811461174f57600080fd5b600060208284031215611776578081fd5b813561178181611dd4565b9392505050565b6000806000806080858703121561179d578283fd5b84356117a881611dd4565b935060208501356117b881611dd4565b92506117c66040860161173c565b915060608501356117d681611dd4565b939692955090935050565b60008060008060008060c087890312156117f9578182fd5b863561180481611dd4565b9550602087013594506040870135935061182060608801611754565b92506080870135915060a087013590509295509295509295565b6000806020838503121561184c578182fd5b823567ffffffffffffffff80821115611863578384fd5b818501915085601f830112611876578384fd5b813581811115611884578485fd5b8660208083028501011115611897578485fd5b60209290920196919550909350505050565b6000602082840312156118ba578081fd5b813561178181611df9565b6000602082840312156118d6578081fd5b815161178181611df9565b6000602082840312156118f2578081fd5b81358060020b8114611781578182fd5b600060208284031215611913578081fd5b815167ffffffffffffffff8082111561192a578283fd5b818401915084601f83011261193d578283fd5b81518181111561194957fe5b60405160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116820101818110848211171561198557fe5b60405281815283820160200187101561199c578485fd5b6119ad826020830160208701611da4565b9695505050505050565b60006101a082840312156119c9578081fd5b50919050565b6000602082840312156119e0578081fd5b6117818261173c565b600080600080608085870312156119fe578384fd5b8451935060208501516fffffffffffffffffffffffffffffffff81168114611a24578384fd5b6040860151606090960151949790965092505050565b60008060408385031215611a4c578182fd5b505080516020909101519092909150565b600060208284031215611a6e578081fd5b61178182611754565b73ffffffffffffffffffffffffffffffffffffffff169052565b60008151808452611aa9816020860160208601611da4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60020b9052565b62ffffff169052565b6000828483379101908152919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015611bbe577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452611bac858351611a91565b94509285019290850190600101611b72565b5092979650505050505050565b6000602082526117816020830184611a91565b60208082526014908201527f50657263656e7461676520746f6f20736d616c6c000000000000000000000000604082015260600190565b60208082526008908201527f4e6f742053414d42000000000000000000000000000000000000000000000000604082015260600190565b60208082526014908201527f50657263656e7461676520746f6f206c61726765000000000000000000000000604082015260600190565b600061016082019050611c97828451611a77565b6020830151611ca96020840182611a77565b506040830151611cbc6040840182611ae2565b506060830151611ccf6060840182611adb565b506080830151611ce26080840182611adb565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611d2082850182611a77565b505061014092830151919092015290565b90815260200190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611d6e578283fd5b83018035915067ffffffffffffffff821115611d88578283fd5b602001915036819003821315611d9d57600080fd5b9250929050565b60005b83811015611dbf578181015183820152602001611da7565b83811115611dce576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611df657600080fd5b50565b8015158114611df657600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB44A2722 GT PUSH2 0x69 JUMPI DUP1 PUSH4 0xC45A0155 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0xD44F2BF2 EQ PUSH2 0x1FA JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x21A JUMPI PUSH2 0x134 JUMP JUMPDEST DUP1 PUSH4 0xB44A2722 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0x1D2 JUMPI PUSH2 0x134 JUMP JUMPDEST DUP1 PUSH4 0x90793EA8 GT PUSH2 0x9A JUMPI DUP1 PUSH4 0x90793EA8 EQ PUSH2 0x175 JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x19D JUMPI PUSH2 0x134 JUMP JUMPDEST DUP1 PUSH4 0x13EAD562 EQ PUSH2 0x139 JUMPI DUP1 PUSH4 0x4659A494 EQ PUSH2 0x162 JUMPI PUSH2 0x134 JUMP JUMPDEST CALLDATASIZE PUSH2 0x134 JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x132 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x129 SWAP1 PUSH2 0x1C15 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14C PUSH2 0x147 CALLDATASIZE PUSH1 0x4 PUSH2 0x1788 JUMP JUMPDEST PUSH2 0x22D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x159 SWAP2 SWAP1 PUSH2 0x1AFB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x132 PUSH2 0x170 CALLDATASIZE PUSH1 0x4 PUSH2 0x17E1 JUMP JUMPDEST PUSH2 0x5F0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14C PUSH2 0x6B0 JUMP JUMPDEST PUSH2 0x132 PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0x17E1 JUMP JUMPDEST PUSH2 0x6D4 JUMP JUMPDEST PUSH2 0x1B0 PUSH2 0x1AB CALLDATASIZE PUSH1 0x4 PUSH2 0x183A JUMP JUMPDEST PUSH2 0x7B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x159 SWAP2 SWAP1 PUSH2 0x1B4D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14C PUSH2 0x90B JUMP JUMPDEST PUSH2 0x132 PUSH2 0x1E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x17E1 JUMP JUMPDEST PUSH2 0x92F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14C PUSH2 0x9E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x132 PUSH2 0x215 CALLDATASIZE PUSH1 0x4 PUSH2 0x19B7 JUMP JUMPDEST PUSH2 0xA08 JUMP JUMPDEST PUSH2 0x132 PUSH2 0x228 CALLDATASIZE PUSH1 0x4 PUSH2 0x17E1 JUMP JUMPDEST PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1698EE82 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x32D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x4D3 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA1671295 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x416 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x42A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xF637731D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 DUP4 AND SWAP2 PUSH4 0xF637731D SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x5E8 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x51B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x52F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x545 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x5E6 JUMPI DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF637731D DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x8FCBAF0C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xFF DUP6 AND PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xC4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xE4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0x8FCBAF0C SWAP2 PUSH2 0x104 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x77D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x7A9 JUMPI PUSH2 0x7A9 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x5F0 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x7CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x7FE JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x7E9 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x904 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x81C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x82E SWAP2 SWAP1 PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x83C SWAP3 SWAP2 SWAP1 PUSH2 0x1AEB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x877 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x87C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x8E2 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x895 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x8AF SWAP2 SWAP1 PUSH2 0x1902 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x129 SWAP2 SWAP1 PUSH2 0x1BCB JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x8EF JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x804 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x7A9 JUMPI PUSH2 0x7A9 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x1176 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA1A PUSH1 0x60 DUP4 ADD PUSH1 0x40 DUP5 ADD PUSH2 0x1A5D JUMP JUMPDEST PUSH1 0xFF AND GT PUSH2 0xA54 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x129 SWAP1 PUSH2 0x1BDE JUMP JUMPDEST PUSH1 0x64 PUSH2 0xA66 PUSH1 0x60 DUP4 ADD PUSH1 0x40 DUP5 ADD PUSH2 0x1A5D JUMP JUMPDEST PUSH1 0xFF AND GT ISZERO PUSH2 0xAA1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x129 SWAP1 PUSH2 0x1C4C JUMP JUMPDEST PUSH2 0xAAE PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x1765 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER PUSH2 0xAD7 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x1765 JUMP JUMPDEST DUP5 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAFA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1B1C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB28 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB4C SWAP2 SWAP1 PUSH2 0x18C5 JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH2 0xB5D PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x1765 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x89AFCB44 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB95 SWAP2 SWAP1 PUSH2 0x1AFB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBC2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBE6 SWAP2 SWAP1 PUSH2 0x1A3A JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH1 0x64 PUSH2 0xC0C PUSH2 0xC02 PUSH1 0x60 DUP8 ADD PUSH1 0x40 DUP9 ADD PUSH2 0x1A5D JUMP JUMPDEST DUP6 SWAP1 PUSH1 0xFF AND PUSH2 0x120E JUMP JUMPDEST DUP2 PUSH2 0xC13 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x64 PUSH2 0xC2D PUSH2 0xC02 PUSH1 0x60 DUP9 ADD PUSH1 0x40 DUP10 ADD PUSH2 0x1A5D JUMP JUMPDEST DUP2 PUSH2 0xC34 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0xC71 PUSH2 0xC4A PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x1765 JUMP JUMPDEST PUSH32 0x0 DUP5 PUSH2 0x1238 JUMP JUMPDEST PUSH2 0xCAB PUSH2 0xC84 PUSH1 0xA0 DUP8 ADD PUSH1 0x80 DUP9 ADD PUSH2 0x1765 JUMP JUMPDEST PUSH32 0x0 DUP4 PUSH2 0x1238 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x88316456 PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 DUP11 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xD09 SWAP2 SWAP1 PUSH2 0x1765 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD34 PUSH1 0xA0 DUP13 ADD PUSH1 0x80 DUP14 ADD PUSH2 0x1765 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD5F PUSH1 0xC0 DUP13 ADD PUSH1 0xA0 DUP14 ADD PUSH2 0x19CF JUMP JUMPDEST PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD79 PUSH1 0xE0 DUP13 ADD PUSH1 0xC0 DUP14 ADD PUSH2 0x18E1 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD92 PUSH2 0x100 DUP13 ADD PUSH1 0xE0 DUP14 ADD PUSH2 0x18E1 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x40 DUP2 ADD DUP8 SWAP1 MSTORE PUSH2 0x100 DUP12 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x120 DUP12 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD PUSH2 0xDD0 PUSH2 0x160 DUP13 ADD PUSH2 0x140 DUP14 ADD PUSH2 0x1765 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH2 0x160 ADD CALLDATALOAD DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE10 SWAP2 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE3E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE62 SWAP2 SWAP1 PUSH2 0x19E9 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP DUP6 DUP3 LT ISZERO PUSH2 0x1002 JUMPI DUP4 DUP3 LT ISZERO PUSH2 0xEB3 JUMPI PUSH2 0xEB3 PUSH2 0xE8B PUSH1 0x80 DUP10 ADD PUSH1 0x60 DUP11 ADD PUSH2 0x1765 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x0 PUSH2 0x1238 JUMP JUMPDEST DUP2 DUP7 SUB PUSH2 0xEC8 PUSH2 0x1A0 DUP10 ADD PUSH2 0x180 DUP11 ADD PUSH2 0x18A9 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF2E JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH2 0xF16 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x1765 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST ISZERO PUSH2 0xFE6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0xFA5 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1D31 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFD3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xFE1 CALLER DUP3 PUSH2 0x1414 JUMP JUMPDEST PUSH2 0x1000 JUMP JUMPDEST PUSH2 0x1000 PUSH2 0xFF9 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x1765 JUMP JUMPDEST CALLER DUP4 PUSH2 0x1567 JUMP JUMPDEST POP JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x116D JUMPI DUP3 DUP2 LT ISZERO PUSH2 0x1025 JUMPI PUSH2 0x1025 PUSH2 0xE8B PUSH1 0xA0 DUP10 ADD PUSH1 0x80 DUP11 ADD PUSH2 0x1765 JUMP JUMPDEST DUP1 DUP6 SUB PUSH2 0x103A PUSH2 0x1A0 DUP10 ADD PUSH2 0x180 DUP11 ADD PUSH2 0x18A9 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x10A0 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH2 0x1088 PUSH1 0xA0 DUP11 ADD PUSH1 0x80 DUP12 ADD PUSH2 0x1765 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST ISZERO PUSH2 0x1158 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1117 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1D31 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1145 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1153 CALLER DUP3 PUSH2 0x1414 JUMP JUMPDEST PUSH2 0x116B JUMP JUMPDEST PUSH2 0x116B PUSH2 0xFF9 PUSH1 0xA0 DUP11 ADD PUSH1 0x80 DUP12 ADD PUSH2 0x1765 JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xFF DUP6 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x1229 JUMPI POP POP DUP2 DUP2 MUL DUP2 DUP4 DUP3 DUP2 PUSH2 0x1226 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x1232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x130D JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x12D0 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x136F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1374 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x13A2 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x13A2 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x139F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x140D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5341000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x148B JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x144E JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x14ED JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x14F2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1562 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354450000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x163C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x15FF JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x169E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x16D1 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x16D1 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x140D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x174F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x174F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1776 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1781 DUP2 PUSH2 0x1DD4 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x179D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x17A8 DUP2 PUSH2 0x1DD4 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x17B8 DUP2 PUSH2 0x1DD4 JUMP JUMPDEST SWAP3 POP PUSH2 0x17C6 PUSH1 0x40 DUP7 ADD PUSH2 0x173C JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x17D6 DUP2 PUSH2 0x1DD4 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x17F9 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x1804 DUP2 PUSH2 0x1DD4 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x1820 PUSH1 0x60 DUP9 ADD PUSH2 0x1754 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x184C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1863 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1876 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1884 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x1897 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18BA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1781 DUP2 PUSH2 0x1DF9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18D6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1781 DUP2 PUSH2 0x1DF9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18F2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x1781 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1913 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x192A JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x193D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x1949 JUMPI INVALID JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0x1985 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x199C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x19AD DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1DA4 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x19C9 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x19E0 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1781 DUP3 PUSH2 0x173C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x19FE JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 MLOAD SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1A24 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x60 SWAP1 SWAP7 ADD MLOAD SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1A4C JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A6E JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1781 DUP3 PUSH2 0x1754 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1AA9 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1DA4 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND SWAP1 MSTORE JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1BBE JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x1BAC DUP6 DUP4 MLOAD PUSH2 0x1A91 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1B72 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1781 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1A91 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x50657263656E7461676520746F6F20736D616C6C000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x8 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F742053414D42000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x50657263656E7461676520746F6F206C61726765000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 ADD SWAP1 POP PUSH2 0x1C97 DUP3 DUP5 MLOAD PUSH2 0x1A77 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x1CA9 PUSH1 0x20 DUP5 ADD DUP3 PUSH2 0x1A77 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x1CBC PUSH1 0x40 DUP5 ADD DUP3 PUSH2 0x1AE2 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x1CCF PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0x1ADB JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x1CE2 PUSH1 0x80 DUP5 ADD DUP3 PUSH2 0x1ADB JUMP JUMPDEST POP PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xE0 DUP4 ADD MLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH2 0x100 DUP1 DUP5 ADD MLOAD DUP2 DUP5 ADD MSTORE POP PUSH2 0x120 DUP1 DUP5 ADD MLOAD PUSH2 0x1D20 DUP3 DUP6 ADD DUP3 PUSH2 0x1A77 JUMP JUMPDEST POP POP PUSH2 0x140 SWAP3 DUP4 ADD MLOAD SWAP2 SWAP1 SWAP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x1D6E JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1D88 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x1D9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1DBF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1DA7 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1DCE JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1DF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1DF6 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"666:3432:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1146:10;:18;1160:4;1146:18;;1138:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;666:3432;;;;;572:709:54;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1325:289:55;;;;;;:::i;:::-;;:::i;420:38:50:-;;;;;;;;;;;;;:::i;1652:348:55:-;;;;;;:::i;:::-;;:::i;308:653:49:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;811:51:44:-;;;;;;;;;;;;;:::i;973:314:55:-;;;;;;:::i;:::-;;:::i;328:41:50:-;;;;;;;;;;;;;:::i;1190:2906:44:-;;;;;;;;;;-1:-1:-1;1190:2906:44;;;;;:::i;:::-;;:::i;662:273:55:-;;;;;;:::i;:::-;;:::i;572:709:54:-;755:12;796:6;787:15;;:6;:15;;;779:24;;;;;;836:7;820:32;;;853:6;861;869:3;820:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;820:53:54;;-1:-1:-1;888:18:54;;;884:391;;945:7;929:35;;;965:6;973;981:3;929:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;929:56:54;999:43;;;;;;:29;:43;;;;;;;;;929:56;;-1:-1:-1;999:29:54;;;;;;:43;;;;;-1:-1:-1;;999:43:54;;;;;;;;-1:-1:-1;999:29:54;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;884:391;;;1074:28;1131:4;1118:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1118:26:54;;-1:-1:-1;1162:25:54;;;1158:107;;1220:4;1207:29;;;1237:12;1207:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1158:107;884:391;;572:709;;;;;;:::o;1325:289:55:-;1517:90;;;;;;1551:10;1517:90;;;;1571:4;1517:90;;;;;;;;;;;;;;;;1593:4;1517:90;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;;;:90;;;;;-1:-1:-1;;1517:90:55;;;;;;;-1:-1:-1;1517:33:55;:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1325:289;;;;;;:::o;420:38:50:-;;;:::o;1652:348:55:-;1861:50;;;;;;1885:10;1861:50;;;;1905:4;1861:50;;;;;;1914:17;;1861:23;;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1861:50:55;:70;1857:136;;;1945:48;1963:5;1970;1977:6;1985:1;1988;1991;1945:17;:48::i;:::-;1652:348;;;;;;:::o;308:653:49:-;383:22;439:4;427:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;417:34;;466:9;461:494;481:15;;;461:494;;;518:12;;563:4;582;;587:1;582:7;;;;;;;;;;;;;;;;;;:::i;:::-;555:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;517:73;;;;610:7;605:306;;737:2;721:6;:13;:18;717:32;;;741:8;;;717:32;820:4;812:6;808:17;798:27;;878:6;867:28;;;;;;;;;;;;:::i;:::-;860:36;;;;;;;;;;;:::i;605:306::-;938:6;925:7;933:1;925:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;498:3:49;;461:494;;;;308:653;;;;:::o;811:51:44:-;;;:::o;973:314:55:-;1177:50;;;;;;1201:10;1177:50;;;;1221:4;1177:50;;;;;;1230:5;;1177:23;;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1177:50:55;:58;1173:107;;;1237:43;1248:5;1255;1262:8;1272:1;1275;1278;1237:10;:43::i;328:41:50:-;;;:::o;1190:2906:44:-;1303:1;1274:26;;;;;;;;:::i;:::-;:30;;;1266:63;;;;;;;;;;;;:::i;:::-;1377:3;1347:26;;;;;;;;:::i;:::-;:33;;;;1339:66;;;;;;;;;;;;:::i;:::-;1477:11;;;;:6;:11;:::i;:::-;1466:36;;;1503:10;1515:11;;;;:6;:11;:::i;:::-;1528:6;:25;;;1466:88;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1565:22:44;;1626:11;;;;:6;:11;:::i;:::-;1615:28;;;1652:4;1615:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1564:94;;-1:-1:-1;1564:94:44;-1:-1:-1;1719:31:44;1802:3;1753:46;1772:26;;;;;;;;:::i;:::-;1753:14;;:46;;:18;:46::i;:::-;:52;;;;;;;-1:-1:-1;1815:31:44;1898:3;1849:46;1868:26;;;;;;;;:::i;1849:46::-;:52;;;;;;;-1:-1:-1;1984:94:44;2011:13;;;;;;;;:::i;:::-;2026:26;2054:23;1984:26;:94::i;:::-;2088;2115:13;;;;;;;;:::i;:::-;2130:26;2158:23;2088:26;:94::i;:::-;2226:17;2245;2294:26;2266:60;;;2340:551;;;;;;;;2405:6;:13;;;;;;;;;;:::i;:::-;2340:551;;;;;;2444:13;;;;;;;;:::i;:::-;2340:551;;;;;;2480:10;;;;;;;;:::i;:::-;2340:551;;;;;;2519:16;;;;;;;;:::i;:::-;2340:551;;;;;;2564:16;;;;;;;;:::i;:::-;2340:551;;;;;;;;;;;;;;;;2724:17;;;;2340:551;;;;2771:17;;;;2340:551;;;;;;2817:16;;;;;;;;:::i;:::-;2340:551;;;;;;2861:6;:15;;;2340:551;;;2266:635;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2221:680;;;;;;2985:14;2973:9;:26;2969:556;;;3031:23;3019:9;:35;3015:146;;;3074:72;3101:13;;;;;;;;:::i;:::-;3116:26;3144:1;3074:26;:72::i;:::-;3193:26;;;3237:18;;;;;;;;:::i;:::-;:43;;;;-1:-1:-1;3259:21:44;3276:4;3259:21;:13;;;;;;;;:::i;:::-;:21;;;3237:43;3233:282;;;3300:29;;;;;:20;3306:4;3300:20;;;;:29;;3321:7;;3300:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3347:51;3378:10;3390:7;3347:30;:51::i;:::-;3233:282;;;3437:63;3465:13;;;;;;;;:::i;:::-;3480:10;3492:7;3437:27;:63::i;:::-;2969:556;;3550:14;3538:9;:26;3534:556;;;3596:23;3584:9;:35;3580:146;;;3639:72;3666:13;;;;;;;;:::i;3639:72::-;3758:26;;;3802:18;;;;;;;;:::i;:::-;:43;;;;-1:-1:-1;3824:21:44;3841:4;3824:21;:13;;;;;;;;:::i;:::-;:21;;;3802:43;3798:282;;;3865:29;;;;;:20;3871:4;3865:20;;;;:29;;3886:7;;3865:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3912:51;3943:10;3955:7;3912:30;:51::i;:::-;3798:282;;;4002:63;4030:13;;;;;;;;:::i;4002:63::-;3534:556;;1190:2906;;;;;;;:::o;662:273:55:-;849:79;;;;;;876:10;849:79;;;;896:4;849:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;;;:79;;;;;-1:-1:-1;;849:79:55;;;;;;;-1:-1:-1;849:26:55;:79;;;;;;;;;;986:125:16;1044:9;1073:6;;;:30;;-1:-1:-1;;1088:5:16;;;1102:1;1097;1088:5;1097:1;1083:15;;;;;:20;1073:30;1065:39;;;;;;986:125;;;;:::o;1815:277:95:-;1944:58;;;1933:10;1944:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1967:23;1944:58;;;1933:70;;;;1898:12;;;;1933:10;;;;1944:58;1933:70;;;1944:58;1933:70;;1944:58;1933:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1897:106;;;;2021:7;:57;;;;-1:-1:-1;2033:11:95;;:16;;:44;;;2064:4;2053:24;;;;;;;;;;;;;;;-1:-1:-1;2053:24:95;2033:44;2013:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1815:277;;;;;:::o;2282:165::-;2394:12;;;2354;2394;;;;;;;;;2372:7;;;;2387:5;;2372:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2353:54;;;2425:7;2417:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2282:165;;;:::o;1183:279::-;1313:59;;;1302:10;1313:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1336:24;1313:59;;;1302:71;;;;1267:12;;;;1302:10;;;;1313:59;1302:71;;;1313:59;1302:71;;1313:59;1302:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1266:107;;;;1391:7;:57;;;;-1:-1:-1;1403:11:95;;:16;;:44;;;1434:4;1423:24;;;;;;;;;;;;;;;-1:-1:-1;1423:24:95;1403:44;1383:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:163:115;83:20;;143:8;132:20;;122:31;;112:2;;167:1;164;157:12;112:2;64:113;;;:::o;182:158::-;250:20;;310:4;299:16;;289:27;;279:2;;330:1;327;320:12;345:259;;457:2;445:9;436:7;432:23;428:32;425:2;;;478:6;470;463:22;425:2;522:9;509:23;541:33;568:5;541:33;:::i;:::-;593:5;415:189;-1:-1:-1;;;415:189:115:o;609:620::-;;;;;771:3;759:9;750:7;746:23;742:33;739:2;;;793:6;785;778:22;739:2;837:9;824:23;856:33;883:5;856:33;:::i;:::-;908:5;-1:-1:-1;965:2:115;950:18;;937:32;978:35;937:32;978:35;:::i;:::-;1032:7;-1:-1:-1;1058:39:115;1093:2;1078:18;;1058:39;:::i;:::-;1048:49;;1149:2;1138:9;1134:18;1121:32;1162:35;1189:7;1162:35;:::i;:::-;729:500;;;;-1:-1:-1;729:500:115;;-1:-1:-1;;729:500:115:o;1234:606::-;;;;;;;1429:3;1417:9;1408:7;1404:23;1400:33;1397:2;;;1451:6;1443;1436:22;1397:2;1495:9;1482:23;1514:33;1541:5;1514:33;:::i;:::-;1566:5;-1:-1:-1;1618:2:115;1603:18;;1590:32;;-1:-1:-1;1669:2:115;1654:18;;1641:32;;-1:-1:-1;1692:38:115;1726:2;1711:18;;1692:38;:::i;:::-;1682:48;;1777:3;1766:9;1762:19;1749:33;1739:43;;1829:3;1818:9;1814:19;1801:33;1791:43;;1387:453;;;;;;;;:::o;1845:677::-;;;2003:2;1991:9;1982:7;1978:23;1974:32;1971:2;;;2024:6;2016;2009:22;1971:2;2069:9;2056:23;2098:18;2139:2;2131:6;2128:14;2125:2;;;2160:6;2152;2145:22;2125:2;2203:6;2192:9;2188:22;2178:32;;2248:7;2241:4;2237:2;2233:13;2229:27;2219:2;;2275:6;2267;2260:22;2219:2;2320;2307:16;2346:2;2338:6;2335:14;2332:2;;;2367:6;2359;2352:22;2332:2;2426:7;2421:2;2415;2407:6;2403:15;2399:2;2395:24;2391:33;2388:46;2385:2;;;2452:6;2444;2437:22;2385:2;2488;2480:11;;;;;2510:6;;-1:-1:-1;1961:561:115;;-1:-1:-1;;;;1961:561:115:o;2527:253::-;;2636:2;2624:9;2615:7;2611:23;2607:32;2604:2;;;2657:6;2649;2642:22;2604:2;2701:9;2688:23;2720:30;2744:5;2720:30;:::i;2785:257::-;;2905:2;2893:9;2884:7;2880:23;2876:32;2873:2;;;2926:6;2918;2911:22;2873:2;2963:9;2957:16;2982:30;3006:5;2982:30;:::i;3047:293::-;;3157:2;3145:9;3136:7;3132:23;3128:32;3125:2;;;3178:6;3170;3163:22;3125:2;3222:9;3209:23;3275:5;3272:1;3261:20;3254:5;3251:31;3241:2;;3301:6;3293;3286:22;3345:935;;3478:2;3466:9;3457:7;3453:23;3449:32;3446:2;;;3499:6;3491;3484:22;3446:2;3537:9;3531:16;3566:18;3607:2;3599:6;3596:14;3593:2;;;3628:6;3620;3613:22;3593:2;3671:6;3660:9;3656:22;3646:32;;3716:7;3709:4;3705:2;3701:13;3697:27;3687:2;;3743:6;3735;3728:22;3687:2;3777;3771:9;3799:2;3795;3792:10;3789:2;;;3805:9;3789:2;3845;3839:9;3980:2;3910:66;3903:4;3899:2;3895:13;3891:86;3883:6;3879:99;3875:108;4033:6;4021:10;4018:22;4013:2;4001:10;3998:18;3995:46;3992:2;;;4044:9;3992:2;4071;4064:22;4095:18;;;4132:11;;;4145:2;4128:20;4125:33;-1:-1:-1;4122:2:115;;;4176:6;4168;4161:22;4122:2;4194:55;4246:2;4241;4233:6;4229:15;4224:2;4220;4216:11;4194:55;:::i;:::-;4268:6;3436:844;-1:-1:-1;;;;;;3436:844:115:o;4285:210::-;;4430:3;4418:9;4409:7;4405:23;4401:33;4398:2;;;4452:6;4444;4437:22;4398:2;-1:-1:-1;4480:9:115;4388:107;-1:-1:-1;4388:107:115:o;4500:196::-;;4611:2;4599:9;4590:7;4586:23;4582:32;4579:2;;;4632:6;4624;4617:22;4579:2;4660:30;4680:9;4660:30;:::i;4701:509::-;;;;;4875:3;4863:9;4854:7;4850:23;4846:33;4843:2;;;4897:6;4889;4882:22;4843:2;4931:9;4925:16;4915:26;;4984:2;4973:9;4969:18;4963:25;5028:34;5021:5;5017:46;5010:5;5007:57;4997:2;;5083:6;5075;5068:22;4997:2;5156;5141:18;;5135:25;5200:2;5185:18;;;5179:25;4833:377;;5111:5;;-1:-1:-1;4833:377:115;-1:-1:-1;;;4833:377:115:o;5215:255::-;;;5355:2;5343:9;5334:7;5330:23;5326:32;5323:2;;;5376:6;5368;5361:22;5323:2;-1:-1:-1;;5404:16:115;;5460:2;5445:18;;;5439:25;5404:16;;5439:25;;-1:-1:-1;5313:157:115:o;5475:194::-;;5585:2;5573:9;5564:7;5560:23;5556:32;5553:2;;;5606:6;5598;5591:22;5553:2;5634:29;5653:9;5634:29;:::i;5674:129::-;5753:42;5742:54;5730:67;;5720:83::o;5808:318::-;;5889:5;5883:12;5916:6;5911:3;5904:19;5932:63;5988:6;5981:4;5976:3;5972:14;5965:4;5958:5;5954:16;5932:63;:::i;:::-;6040:2;6028:15;6045:66;6024:88;6015:98;;;;6115:4;6011:109;;5859:267;-1:-1:-1;;5859:267:115:o;6131:93::-;6208:1;6197:20;6185:33;;6175:49::o;6229:94::-;6307:8;6296:20;6284:33;;6274:49::o;6328:273::-;;6511:6;6503;6498:3;6485:33;6537:16;;6562:15;;;6537:16;6475:126;-1:-1:-1;6475:126:115:o;6606:226::-;6782:42;6770:55;;;;6752:74;;6740:2;6725:18;;6707:125::o;7076:406::-;7296:42;7365:15;;;7347:34;;7417:15;;;;7412:2;7397:18;;7390:43;7464:2;7449:18;;7442:34;;;;7274:2;7259:18;;7241:241::o;7487:865::-;;7676:2;7716;7705:9;7701:18;7746:2;7735:9;7728:21;7769:6;7804;7798:13;7835:6;7827;7820:22;7873:2;7862:9;7858:18;7851:25;;7936:2;7930;7922:6;7918:15;7907:9;7903:31;7899:40;7885:54;;7974:2;7966:6;7962:15;7995:4;8008:315;8022:6;8019:1;8016:13;8008:315;;;8111:66;8099:9;8091:6;8087:22;8083:95;8078:3;8071:108;8202:41;8236:6;8227;8221:13;8202:41;:::i;:::-;8192:51;-1:-1:-1;8301:12:115;;;;8266:15;;;;8044:1;8037:9;8008:315;;;-1:-1:-1;8340:6:115;;7656:696;-1:-1:-1;;;;;;;7656:696:115:o;8357:221::-;;8506:2;8495:9;8488:21;8526:46;8568:2;8557:9;8553:18;8545:6;8526:46;:::i;8583:344::-;8785:2;8767:21;;;8824:2;8804:18;;;8797:30;8863:22;8858:2;8843:18;;8836:50;8918:2;8903:18;;8757:170::o;8932:331::-;9134:2;9116:21;;;9173:1;9153:18;;;9146:29;9211:10;9206:2;9191:18;;9184:38;9254:2;9239:18;;9106:157::o;9268:344::-;9470:2;9452:21;;;9509:2;9489:18;;;9482:30;9548:22;9543:2;9528:18;;9521:50;9603:2;9588:18;;9442:170::o;9617:1234::-;;9807:3;9796:9;9792:19;9784:27;;9820:46;9856:9;9847:6;9841:13;9820:46;:::i;:::-;9913:4;9905:6;9901:17;9895:24;9928:56;9978:4;9967:9;9963:20;9949:12;9928:56;:::i;:::-;;10033:4;10025:6;10021:17;10015:24;10048:57;10099:4;10088:9;10084:20;10068:14;10048:57;:::i;:::-;;10154:4;10146:6;10142:17;10136:24;10169:56;10219:4;10208:9;10204:20;10188:14;10169:56;:::i;:::-;;10274:4;10266:6;10262:17;10256:24;10289:56;10339:4;10328:9;10324:20;10308:14;10289:56;:::i;:::-;;10401:4;10393:6;10389:17;10383:24;10376:4;10365:9;10361:20;10354:54;10464:4;10456:6;10452:17;10446:24;10439:4;10428:9;10424:20;10417:54;10527:4;10519:6;10515:17;10509:24;10502:4;10491:9;10487:20;10480:54;10553:6;10613:2;10605:6;10601:15;10595:22;10590:2;10579:9;10575:18;10568:50;;10637:6;10692:2;10684:6;10680:15;10674:22;10705:56;10757:2;10746:9;10742:18;10726:14;10705:56;:::i;:::-;-1:-1:-1;;10780:6:115;10828:15;;;10822:22;10802:18;;;;10795:50;9774:1077;:::o;10856:177::-;11002:25;;;10990:2;10975:18;;10957:76::o;11038:592::-;;;11181:11;11168:25;11271:66;11260:8;11244:14;11240:29;11236:102;11216:18;11212:127;11202:2;;11356:4;11350;11343:18;11202:2;11386:33;;11438:20;;;-1:-1:-1;11481:18:115;11470:30;;11467:2;;;11516:4;11510;11503:18;11467:2;11552:4;11540:17;;-1:-1:-1;11583:14:115;11579:27;;;11569:38;;11566:2;;;11620:1;11617;11610:12;11566:2;11132:498;;;;;:::o;11635:258::-;11707:1;11717:113;11731:6;11728:1;11725:13;11717:113;;;11807:11;;;11801:18;11788:11;;;11781:39;11753:2;11746:10;11717:113;;;11848:6;11845:1;11842:13;11839:2;;;11883:1;11874:6;11869:3;11865:16;11858:27;11839:2;;11688:205;;;:::o;11898:156::-;11986:42;11979:5;11975:54;11968:5;11965:65;11955:2;;12044:1;12041;12034:12;11955:2;11945:109;:::o;12059:120::-;12147:5;12140:13;12133:21;12126:5;12123:32;12113:2;;12169:1;12166;12159:12"},"methodIdentifiers":{"SAMB()":"90793ea8","createAndInitializePoolIfNecessary(address,address,uint24,uint160)":"13ead562","factory()":"c45a0155","migrate((address,uint256,uint8,address,address,uint24,int24,int24,uint256,uint256,address,uint256,bool))":"d44f2bf2","multicall(bytes[])":"ac9650d8","nonfungiblePositionManager()":"b44a2722","selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)":"f3995c67","selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)":"4659a494","selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"a4a78f0c","selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"c2e3140a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_SAMB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_nonfungiblePositionManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"SAMB\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"createAndInitializePoolIfNecessary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidityToMigrate\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"percentageToMigrate\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint256\",\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"refundAsAMB\",\"type\":\"bool\"}],\"internalType\":\"struct ICLMigrator.MigrateParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonfungiblePositionManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowed\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowedIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"details\":\"This method can be bundled with others via IMulticall for the first action (e.g. mint) performed against a pool\",\"params\":{\"fee\":\"The fee amount of the CL pool for the specified token pair\",\"sqrtPriceX96\":\"The initial square root price of the pool as a Q64.96 value\",\"token0\":\"The contract address of token0 of the pool\",\"token1\":\"The contract address of token1 of the pool\"},\"returns\":{\"pool\":\"Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary\"}},\"migrate((address,uint256,uint8,address,address,uint24,int24,int24,uint256,uint256,address,uint256,bool))\":{\"details\":\"Slippage protection is enforced via `amount{0,1}Min`, which should be a discount of the expected values of the maximum amount of CL liquidity that the Classic liquidity can get. For the special case of migrating to an out-of-range position, `amount{0,1}Min` may be set to 0, enforcing that the position remains out of range\",\"params\":{\"params\":\"The params necessary to migrate Classic liquidity, encoded as `MigrateParams` in calldata\"}},\"multicall(bytes[])\":{\"details\":\"The `msg.value` should not be trusted for any method callable from multicall.\",\"params\":{\"data\":\"The encoded function data for each of the calls to make to this contract\"},\"returns\":{\"results\":\"The results from each of the calls passed in via data\"}},\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this).\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this)\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this) Can be used instead of #selfPermitAllowed to prevent calls from failing due to a frontrun of a call to #selfPermitAllowed.\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this). Can be used instead of #selfPermit to prevent calls from failing due to a frontrun of a call to #selfPermit\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}}},\"title\":\"AstraDEX CL Migrator\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"notice\":\"Creates a new pool if it does not exist, then initializes if not initialized\"},\"migrate((address,uint256,uint8,address,address,uint24,int24,int24,uint256,uint256,address,uint256,bool))\":{\"notice\":\"Migrates liquidity to CL by burning classic liquidity and minting a new position for CL\"},\"multicall(bytes[])\":{\"notice\":\"Call multiple functions in the current contract and return the data from all of them if they all succeed\"},\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/CLMigrator.sol\":\"CLMigrator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol\":{\"keccak256\":\"0x380f33c6cac2893f4e290a3c1a63f9f0bb9d42aff4a74c9b0fe9eebceb5721c3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4cfd26554cf5fd3f7391e73ba4559fb1df2b8f3028c7f27d694b698250371c6c\",\"dweb:/ipfs/QmepfyejMAZbpJETuMC9naUwXLVihfXLXvCQsyMwYq1hy6\"]},\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0x86715eb960f18e01ac94e3bba4614ed51a887fa3c5bd1c43bf80aa98e019cf2d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfc1d5d58e59015086b0e65a6c3a2ddad312e2350480510f6c0c8167f3d71a37\",\"dweb:/ipfs/QmQndULYjFsHKHjMAKLMfc12vWbVB5FawtioHtvwcWRJZp\"]},\"@openzeppelin/contracts/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]},\"contracts/CLMigrator.sol\":{\"keccak256\":\"0xa72bb6f81735e980b615a7f67bb14b533b95e936929f5d31b7704ff4f66b7f1a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a3c8478cf46ebbfde62c0be23251cb2d7a6b5acb04112c64336ab46a4552db34\",\"dweb:/ipfs/QmbWxEnR2wg8gWqmtbxPePZNz4bFKmcpzXLJjzLm2g2nnW\"]},\"contracts/base/Multicall.sol\":{\"keccak256\":\"0xfcfd78c62d2145634a791d5680a1af7055fbd301c415d29c09333c99c37d9037\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0d1c8f4a18cec8ad49e5269c5b07c7f6fd497dfc1b7b777f8ddcfb8055efd803\",\"dweb:/ipfs/QmdeCTnfHM3RGtQuo3DMX9m7gPspGGwQp7ho6m9cJjjnER\"]},\"contracts/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x566b2f2f7bf89d107c66316e12b9cad9fade2f9cc2076bceb2090f54bada22da\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d13d485890a8eb6b2b6b38cf0b7fc39c7fc66462a9553159947ece2de55d9ba3\",\"dweb:/ipfs/QmaSEEBMjMvvrLqxmrskUmDwg86g7RHDa6SYiYiA77SJ1X\"]},\"contracts/base/PoolInitializer.sol\":{\"keccak256\":\"0x7a26153c5ae7025d34ba7bab5a9706b98aaada5a29b1805ec2801f058dea67ca\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://9b4f718d03540adab9c16d6df6dbccb7531ca6284f1e7fe1b0d07e5f0ef461ba\",\"dweb:/ipfs/QmXeeKEwUgAekboG7WXgxmr6QwMn3dFSsxEyoTBNoWooRw\"]},\"contracts/base/SelfPermit.sol\":{\"keccak256\":\"0xe75aedfc1eff6c84adac82b2bc41d197127a74530f0c344a7a122a6c8ec186be\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://05150ae691e10f2c9c82ad46de86c8b6683d8eba995e6f9ff82eaefc064902e9\",\"dweb:/ipfs/QmdKxxmxCPxV7qe11MbRhpaQXDAnnKWH1BoTMmEXYPAA7g\"]},\"contracts/interfaces/ICLMigrator.sol\":{\"keccak256\":\"0x55208853d4f2afa72f443cfbba4017b76806bb810e1f5a18649a491f791d4386\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c134c1e35b10ff18f4845df21e900be80cc3065ad46b896c612c76da0282f26c\",\"dweb:/ipfs/QmZmjRuwBrF948E1aGA3aEDkbttAKCMNGDPh4TJSUuMHAo\"]},\"contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x383d39a13ce10019d4ebd27a694d085c03a1498a1cc31ec1511fac91b5296342\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3d22d9cc7a33829bd31da42d96bd75401a675ef32c8eb4d9e3074c21ec1241b6\",\"dweb:/ipfs/QmNrvD2T3k3wH5kWz6Kss9mSjxdJhXAA6NTH1Evj8j3k6A\"]},\"contracts/interfaces/IMulticall.sol\":{\"keccak256\":\"0xa8f9d0061ee730a522dc4bae6bd5cabb3e997e2c5983da183e912bdca93dfa7b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://496b68d4f72d58cc83cf51bd9cc9c99aaa46dc3c3df7c951a9e50ba29ee33016\",\"dweb:/ipfs/Qmc3bkXwuRP8mDpcKgvLgbCKn8tD8PGCaBjnLHSPMJCRGD\"]},\"contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x920448f826d2d8e40aae06ce855644abac394c085a769605399d80cb36bde27f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b299cd039cf1fb92c9c58f666dfbb2753431f3904bed659ddd653ad9a503045\",\"dweb:/ipfs/QmZWb11WyJgGCW35e2opF3Ncstu59krJCDPAZpHWU9rqix\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x57bd5b069f6e66edd42a9b41e5864bfcd2aa7d404337d6c57a083fb589fc59bd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4efa92b18c295755437180f93a19179ef15dfe24a6db10ae876c41247fd4a907\",\"dweb:/ipfs/QmYJTRqE5BEjqyNoZqoctVFgxZF336cK9ba1RSd2LbgFkG\"]},\"contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x5d9b76c0eed9d836f8ab1d65a37921c56c46a69802f28c312f239ce159634473\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ab60ec035cd2f600d7e89828bcf1427a674defdcb4c511679144aae42273ba2d\",\"dweb:/ipfs/QmYWy2dAG2Mq4BUwybjVCbGtXYRG8Lz1jRfK6L924YuwRa\"]},\"contracts/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0x402d04301ffd41853f4949a574b8853c46d076910ed734f5e4478bf64369a3ed\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6a5536d179ff3777920ff8ed60cfc457f7a4dda1373c8f0394b2a8e0fe537525\",\"dweb:/ipfs/QmdaYGikTmmi2vbECnoomZ8vS8PBiD4Bq8BoFCYqFZmKgR\"]},\"contracts/interfaces/classic/IAstraPair.sol\":{\"keccak256\":\"0xd08cb9a031ef3411340715312f8fdd9e19afd9cad5120d367f72bdf934d38a46\",\"urls\":[\"bzz-raw://6b26289deb4f75297564a4a443420c1f9ba071a3d0a952d96ed798c7a2f34b04\",\"dweb:/ipfs/QmddiNcmqTUzLbWuWQfZDUzMg8fA1FeR6383W7vLMmmDWS\"]},\"contracts/interfaces/external/IERC20PermitAllowed.sol\":{\"keccak256\":\"0x8c4c1b8e724e0a78cb691d703dd37cd91b8bd6600537fb227807a194025a792d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://783be851155842a02cdb0483c3a69ecc0e7ae8545f65cec1d4aeb355b2026a7d\",\"dweb:/ipfs/QmZNBQosTjpGNKB3Eo2K6Zzye7FYiLVoEki5iPB2Y69jz2\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x5b5789677c6b7e447fd774a5c065d9547c85f22e950e18690f686a6b779d78dc\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c2e45681c8d5c704fbfef7369ff7878e6af2d987ba564eb97148ee6e8db87e49\",\"dweb:/ipfs/Qmeg4ynPmWipSVb6BRj4o8uZRbE2bQk8nCwp9apMAEq8Xk\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x0fef3409a5a161cd12b777fdfa86845d64b86f72c78b8312c9e3c92f9017e5c5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9df2c76e4581a1d343ea1dd1d0478df7f1c1eef1b476ccea452367ef5b75e65\",\"dweb:/ipfs/QmWZVBRQcn4ekrmCDFkM4BSRAZ1m72GHzUnfzUn39PwQow\"]}},\"version\":1}"}},"contracts/SwapRouter.sol":{"SwapRouter":{"abi":[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_SAMB","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"SAMB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"astraCLSwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactInputParams","name":"params","type":"tuple"}],"name":"exactInput","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactInputSingleParams","name":"params","type":"tuple"}],"name":"exactInputSingle","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactOutputParams","name":"params","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactOutputSingleParams","name":"params","type":"tuple"}],"name":"exactOutputSingle","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"refundAMB","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowed","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowedIfNecessary","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitIfNecessary","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"sweepToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"feeBips","type":"uint256"},{"internalType":"address","name":"feeRecipient","type":"address"}],"name":"sweepTokenWithFee","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"unwrapSAMB","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"feeBips","type":"uint256"},{"internalType":"address","name":"feeRecipient","type":"address"}],"name":"unwrapSAMBWithFee","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:507:115","statements":[{"nodeType":"YulBlock","src":"6:3:115","statements":[]},{"body":{"nodeType":"YulBlock","src":"76:117:115","statements":[{"nodeType":"YulAssignment","src":"86:22:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"101:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"95:5:115"},"nodeType":"YulFunctionCall","src":"95:13:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"86:5:115"}]},{"body":{"nodeType":"YulBlock","src":"171:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"180:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"183:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"173:6:115"},"nodeType":"YulFunctionCall","src":"173:12:115"},"nodeType":"YulExpressionStatement","src":"173:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"130:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"141:5:115"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"156:3:115","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"161:1:115","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"152:3:115"},"nodeType":"YulFunctionCall","src":"152:11:115"},{"kind":"number","nodeType":"YulLiteral","src":"165:1:115","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"148:3:115"},"nodeType":"YulFunctionCall","src":"148:19:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"137:3:115"},"nodeType":"YulFunctionCall","src":"137:31:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"127:2:115"},"nodeType":"YulFunctionCall","src":"127:42:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"120:6:115"},"nodeType":"YulFunctionCall","src":"120:50:115"},"nodeType":"YulIf","src":"117:2:115"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"55:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"66:5:115","type":""}],"src":"14:179:115"},{"body":{"nodeType":"YulBlock","src":"296:209:115","statements":[{"body":{"nodeType":"YulBlock","src":"342:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"351:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"359:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"344:6:115"},"nodeType":"YulFunctionCall","src":"344:22:115"},"nodeType":"YulExpressionStatement","src":"344:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"317:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"326:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"313:3:115"},"nodeType":"YulFunctionCall","src":"313:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"338:2:115","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"309:3:115"},"nodeType":"YulFunctionCall","src":"309:32:115"},"nodeType":"YulIf","src":"306:2:115"},{"nodeType":"YulAssignment","src":"377:52:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"419:9:115"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"387:31:115"},"nodeType":"YulFunctionCall","src":"387:42:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"377:6:115"}]},{"nodeType":"YulAssignment","src":"438:61:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"484:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"495:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"480:3:115"},"nodeType":"YulFunctionCall","src":"480:18:115"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"448:31:115"},"nodeType":"YulFunctionCall","src":"448:51:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"438:6:115"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"254:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"265:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"277:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"285:6:115","type":""}],"src":"198:307:115"}]},"contents":"{\n    { }\n    function abi_decode_t_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_t_address_fromMemory(headStart)\n        value1 := abi_decode_t_address_fromMemory(add(headStart, 32))\n    }\n}","id":115,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60c06040526000196000553480156200001757600080fd5b506040516200302f3803806200302f8339810160408190526200003a9162000076565b6001600160601b0319606092831b8116608052911b1660a052620000ad565b80516001600160a01b03811681146200007157600080fd5b919050565b6000806040838503121562000089578182fd5b620000948362000059565b9150620000a46020840162000059565b90509250929050565b60805160601c60a05160601c612f26620001096000398061012f52806106b652806106f6528061082052806109c95280610af3528061156052806115c052806116415250806103805280610efb52806124875250612f266000f3fe6080604052600436106101125760003560e01c8063c04b8d59116100a5578063db3e219811610074578063e0e189a011610059578063e0e189a014610302578063f28c049814610315578063f3995c6714610328576101bd565b8063db3e2198146102dc578063df2ab5bb146102ef576101bd565b8063c04b8d5914610299578063c2e3140a146102ac578063c45a0155146102bf578063c53af304146102d4576101bd565b806397e87d9d116100e157806397e87d9d14610240578063a4a78f0c14610253578063a98ce37f14610266578063ac9650d814610279576101bd565b806311c17848146101c2578063414bf389146101e25780634659a4941461020b57806390793ea81461021e576101bd565b366101bd573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101bb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e6f742053414d42000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b3480156101ce57600080fd5b506101bb6101dd366004612868565b61033b565b6101f56101f03660046129f8565b61048e565b6040516102029190612df1565b60405180910390f35b6101bb610219366004612776565b610600565b34801561022a57600080fd5b506102336106b4565b6040516102029190612c37565b6101bb61024e366004612b2e565b6106d8565b6101bb610261366004612776565b6108f0565b6101bb610274366004612aff565b6109c5565b61028c6102873660046127d6565b610b8b565b6040516102029190612caa565b6101f56102a736600461294d565b610ce5565b6101bb6102ba366004612776565b610e44565b3480156102cb57600080fd5b50610233610ef9565b6101bb610f1d565b6101f56102ea3660046129f8565b610f2f565b6101bb6102fd3660046126d7565b6110bf565b6101bb610310366004612718565b6111dc565b6101f5610323366004612a14565b611342565b6101bb610336366004612776565b611476565b600084138061034a5750600083135b61035357600080fd5b600061036182840184612a4c565b90506000806000610375846000015161150e565b9250925092506103a77f000000000000000000000000000000000000000000000000000000000000000084848461153f565b5060008060008a136103e8578473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161089610419565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16108a5b91509150811561043857610433858760200151338461155e565b610482565b85516104439061173c565b1561046857855161045390611748565b86526104628133600089611783565b50610482565b80600081905550839450610482858760200151338461155e565b50505050505050505050565b600081608001358061049e61193f565b111561050b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b6105b160a084013561052360808601606087016126b4565b610534610100870160e088016126b4565b604080518082019091528061054c60208a018a6126b4565b61055c60608b0160408c01612adc565b61056c60408c0160208d016126b4565b60405160200161057e93929190612bc1565b60405160208183030381529060405281526020013373ffffffffffffffffffffffffffffffffffffffff16815250611943565b91508260c001358210156105fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f190612d72565b60405180910390fd5b50919050565b604080517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e48101839052905173ffffffffffffffffffffffffffffffffffffffff881691638fcbaf0c9161010480830192600092919082900301818387803b1580156106a057600080fd5b505af1158015610482573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000821180156106e9575060648211155b6106f257600080fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561077b57600080fd5b505afa15801561078f573d6000803e3d6000fd5b505050506040513d60208110156107a557600080fd5b505190508481101561081857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e73756666696369656e742053414d42000000000000000000000000000000604482015290519081900360640190fd5b80156108e9577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561089157600080fd5b505af11580156108a5573d6000803e3d6000fd5b5050505060006127106108c18584611ac990919063ffffffff16565b816108c857fe5b04905080156108db576108db8382611aed565b6108e785828403611aed565b505b5050505050565b604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b15801561098557600080fd5b505afa158015610999573d6000803e3d6000fd5b505050506040513d60208110156109af57600080fd5b505110156108e7576108e7868686868686610600565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a4e57600080fd5b505afa158015610a62573d6000803e3d6000fd5b505050506040513d6020811015610a7857600080fd5b5051905082811015610aeb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e73756666696369656e742053414d42000000000000000000000000000000604482015290519081900360640190fd5b8015610b86577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b50505050610b868282611aed565b505050565b60608167ffffffffffffffff81118015610ba457600080fd5b50604051908082528060200260200182016040528015610bd857816020015b6060815260200190600190039081610bc35790505b50905060005b82811015610cde5760008030868685818110610bf657fe5b9050602002810190610c089190612dfa565b604051610c16929190612c27565b600060405180830381855af49150503d8060008114610c51576040519150601f19603f3d011682016040523d82523d6000602084013e610c56565b606091505b509150915081610cbc57604481511015610c6f57600080fd5b60048101905080806020019051810190610c8991906128e3565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f19190612d28565b80848481518110610cc957fe5b60209081029190910101525050600101610bde565b5092915050565b6000816040015180610cf561193f565b1115610d6257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b335b6000610d73856000015161173c565b9050610dcc856060015182610d8c578660200151610d8e565b305b60006040518060400160405280610da88b60000151611c3b565b81526020018773ffffffffffffffffffffffffffffffffffffffff16815250611943565b60608601528015610dec578451309250610de590611748565b8552610df9565b8460600151935050610dff565b50610d64565b8360800151831015610e3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f190612d72565b5050919050565b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051869173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b158015610eb957600080fd5b505afa158015610ecd573d6000803e3d6000fd5b505050506040513d6020811015610ee357600080fd5b505110156108e7576108e7868686868686611476565b7f000000000000000000000000000000000000000000000000000000000000000081565b4715610f2d57610f2d3347611aed565b565b6000816080013580610f3f61193f565b1115610fac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b61105560a0840135610fc460808601606087016126b4565b610fd5610100870160e088016126b4565b6040518060400160405280886020016020810190610ff391906126b4565b61100360608b0160408c01612adc565b61101060208c018c6126b4565b60405160200161102293929190612bc1565b60405160208183030381529060405281526020013373ffffffffffffffffffffffffffffffffffffffff16815250611783565b91508260c00135821115611095576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f190612d3b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600055919050565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561112857600080fd5b505afa15801561113c573d6000803e3d6000fd5b505050506040513d602081101561115257600080fd5b50519050828110156111c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b80156111d6576111d6848383611c4a565b50505050565b6000821180156111ed575060648211155b6111f657600080fd5b60008573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561125f57600080fd5b505afa158015611273573d6000803e3d6000fd5b505050506040513d602081101561128957600080fd5b50519050848110156112fc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b80156108e75760006127106113118386611ac9565b8161131857fe5b049050801561132c5761132c878483611c4a565b6113398786838503611c4a565b50505050505050565b600081604001358061135261193f565b11156113bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b61143260608401356113d760408601602087016126b4565b60408051808201909152600090806113ef8980612dfa565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525033602090910152611783565b5060005491508260800135821115611095576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f190612d3b565b604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c48101839052905173ffffffffffffffffffffffffffffffffffffffff88169163d505accf9160e480830192600092919082900301818387803b1580156106a057600080fd5b6000808061151c8482611e1f565b9250611529846014611f1f565b9050611536846017611e1f565b91509193909250565b60006115558561155086868661200f565b61208c565b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156115b95750804710155b15611702577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561162657600080fd5b505af115801561163a573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156116d057600080fd5b505af11580156116e4573d6000803e3d6000fd5b505050506040513d60208110156116fa57600080fd5b506111d69050565b73ffffffffffffffffffffffffffffffffffffffff83163014156117305761172b848383611c4a565b6111d6565b6111d6848484846120bc565b8051604211155b919050565b805160609061177d9083906017907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe901612299565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff84166117a4573093505b60008060006117b6856000015161150e565b9194509250905073ffffffffffffffffffffffffffffffffffffffff808416908316106000806117e7858786612480565b73ffffffffffffffffffffffffffffffffffffffff1663128acb088b8561180d8f6124be565b60000373ffffffffffffffffffffffffffffffffffffffff8e1615611832578d611858565b876118515773fffd8963efd1fc6a506488495d951d5263988d25611858565b6401000276a45b8d6040516020016118699190612da9565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401611898959493929190612c58565b6040805180830381600087803b1580156118b157600080fd5b505af11580156118c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e99190612845565b915091506000836118fe578183600003611904565b82826000035b909850905073ffffffffffffffffffffffffffffffffffffffff8a16611930578b811461193057600080fd5b50505050505050949350505050565b4290565b600073ffffffffffffffffffffffffffffffffffffffff8416611964573093505b6000806000611976856000015161150e565b9194509250905073ffffffffffffffffffffffffffffffffffffffff808316908416106000806119a7868686612480565b73ffffffffffffffffffffffffffffffffffffffff1663128acb088b856119cd8f6124be565b73ffffffffffffffffffffffffffffffffffffffff8e16156119ef578d611a15565b87611a0e5773fffd8963efd1fc6a506488495d951d5263988d25611a15565b6401000276a45b8d604051602001611a269190612da9565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401611a55959493929190612c58565b6040805180830381600087803b158015611a6e57600080fd5b505af1158015611a82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa69190612845565b9150915082611ab55781611ab7565b805b6000039b9a5050505050505050505050565b6000821580611ae457505081810281838281611ae157fe5b04145b61177d57600080fd5b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310611b6457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611b27565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611bc6576040519150601f19603f3d011682016040523d82523d6000602084013e611bcb565b606091505b5050905080610b8657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b606061177d826000602b612299565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b60208310611d1f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611ce2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611d81576040519150601f19603f3d011682016040523d82523d6000602084013e611d86565b606091505b5091509150818015611db4575080511580611db45750808060200190516020811015611db157600080fd5b50515b6108e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600081826014011015611e9357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015611f0657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015611f9357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b816003018351101561200657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b612017612626565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16111561204f579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b600061209883836124f0565b90503373ffffffffffffffffffffffffffffffffffffffff82161461177d57600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000178152925182516000948594938a169392918291908083835b6020831061219957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161215c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146121fb576040519150601f19603f3d011682016040523d82523d6000602084013e612200565b606091505b509150915081801561222e57508051158061222e575080806020019051602081101561222b57600080fd5b50515b6108e757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354460000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60608182601f01101561230d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b82828401101561237e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b818301845110156123f057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b60608215801561240f5760405191506000825260208201604052612477565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612448578051835260209283019201612430565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b60006124b67f00000000000000000000000000000000000000000000000000000000000000006124b186868661200f565b6124f0565b949350505050565b60007f800000000000000000000000000000000000000000000000000000000000000082106124ec57600080fd5b5090565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff161061253257600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0460d5808301919091528251808303909101815260f5909101909152805191012090565b604080516060810182526000808252602082018190529181019190915290565b803561174381612ef4565b600082601f830112612661578081fd5b813561267461266f82612e88565b612e64565b818152846020838601011115612688578283fd5b816020850160208301379081016020019190915292915050565b600061010082840312156105fa578081fd5b6000602082840312156126c5578081fd5b81356126d081612ef4565b9392505050565b6000806000606084860312156126eb578182fd5b83356126f681612ef4565b925060208401359150604084013561270d81612ef4565b809150509250925092565b600080600080600060a0868803121561272f578081fd5b853561273a81612ef4565b945060208601359350604086013561275181612ef4565b925060608601359150608086013561276881612ef4565b809150509295509295909350565b60008060008060008060c0878903121561278e578081fd5b863561279981612ef4565b95506020870135945060408701359350606087013560ff811681146127bc578182fd5b9598949750929560808101359460a0909101359350915050565b600080602083850312156127e8578182fd5b823567ffffffffffffffff808211156127ff578384fd5b818501915085601f830112612812578384fd5b813581811115612820578485fd5b8660208083028501011115612833578485fd5b60209290920196919550909350505050565b60008060408385031215612857578182fd5b505080516020909101519092909150565b6000806000806060858703121561287d578182fd5b8435935060208501359250604085013567ffffffffffffffff808211156128a2578384fd5b818701915087601f8301126128b5578384fd5b8135818111156128c3578485fd5b8860208285010111156128d4578485fd5b95989497505060200194505050565b6000602082840312156128f4578081fd5b815167ffffffffffffffff81111561290a578182fd5b8201601f8101841361291a578182fd5b805161292861266f82612e88565b81815285602083850101111561293c578384fd5b611555826020830160208601612ec8565b60006020828403121561295e578081fd5b813567ffffffffffffffff80821115612975578283fd5b9083019060a08286031215612988578283fd5b60405160a08101818110838211171561299d57fe5b6040528235828111156129ae578485fd5b6129ba87828601612651565b8252506129c960208401612646565b602082015260408301356040820152606083013560608201526080830135608082015280935050505092915050565b60006101008284031215612a0a578081fd5b6126d083836126a2565b600060208284031215612a25578081fd5b813567ffffffffffffffff811115612a3b578182fd5b820160a081850312156126d0578182fd5b600060208284031215612a5d578081fd5b813567ffffffffffffffff80821115612a74578283fd5b9083019060408286031215612a87578283fd5b604051604081018181108382111715612a9c57fe5b604052823582811115612aad578485fd5b612ab987828601612651565b82525060208301359250612acc83612ef4565b6020810192909252509392505050565b600060208284031215612aed578081fd5b813562ffffff811681146126d0578182fd5b60008060408385031215612b11578182fd5b823591506020830135612b2381612ef4565b809150509250929050565b60008060008060808587031215612b43578182fd5b843593506020850135612b5581612ef4565b9250604085013591506060850135612b6c81612ef4565b939692955090935050565b60008151808452612b8f816020860160208601612ec8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6000828483379101908152919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a06080830152612c9f60a0830184612b77565b979650505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015612d1b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452612d09858351612b77565b94509285019290850190600101612ccf565b5092979650505050505050565b6000602082526126d06020830184612b77565b60208082526012908201527f546f6f206d756368207265717565737465640000000000000000000000000000604082015260600190565b60208082526013908201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604082015260600190565b600060208252825160406020840152612dc56060840182612b77565b905073ffffffffffffffffffffffffffffffffffffffff60208501511660408401528091505092915050565b90815260200190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e2e578283fd5b83018035915067ffffffffffffffff821115612e48578283fd5b602001915036819003821315612e5d57600080fd5b9250929050565b60405181810167ffffffffffffffff81118282101715612e8057fe5b604052919050565b600067ffffffffffffffff821115612e9c57fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015612ee3578181015183820152602001612ecb565b838111156111d65750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114612f1657600080fd5b5056fea164736f6c6343000706000a","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE PUSH1 0x0 NOT PUSH1 0x0 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x302F CODESIZE SUB DUP1 PUSH3 0x302F DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x3A SWAP2 PUSH3 0x76 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH3 0xAD JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x89 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH3 0x94 DUP4 PUSH3 0x59 JUMP JUMPDEST SWAP2 POP PUSH3 0xA4 PUSH1 0x20 DUP5 ADD PUSH3 0x59 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x2F26 PUSH3 0x109 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x12F MSTORE DUP1 PUSH2 0x6B6 MSTORE DUP1 PUSH2 0x6F6 MSTORE DUP1 PUSH2 0x820 MSTORE DUP1 PUSH2 0x9C9 MSTORE DUP1 PUSH2 0xAF3 MSTORE DUP1 PUSH2 0x1560 MSTORE DUP1 PUSH2 0x15C0 MSTORE DUP1 PUSH2 0x1641 MSTORE POP DUP1 PUSH2 0x380 MSTORE DUP1 PUSH2 0xEFB MSTORE DUP1 PUSH2 0x2487 MSTORE POP PUSH2 0x2F26 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x112 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC04B8D59 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xDB3E2198 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xE0E189A0 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE0E189A0 EQ PUSH2 0x302 JUMPI DUP1 PUSH4 0xF28C0498 EQ PUSH2 0x315 JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x328 JUMPI PUSH2 0x1BD JUMP JUMPDEST DUP1 PUSH4 0xDB3E2198 EQ PUSH2 0x2DC JUMPI DUP1 PUSH4 0xDF2AB5BB EQ PUSH2 0x2EF JUMPI PUSH2 0x1BD JUMP JUMPDEST DUP1 PUSH4 0xC04B8D59 EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0xC53AF304 EQ PUSH2 0x2D4 JUMPI PUSH2 0x1BD JUMP JUMPDEST DUP1 PUSH4 0x97E87D9D GT PUSH2 0xE1 JUMPI DUP1 PUSH4 0x97E87D9D EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0xA98CE37F EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x279 JUMPI PUSH2 0x1BD JUMP JUMPDEST DUP1 PUSH4 0x11C17848 EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x414BF389 EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0x4659A494 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x90793EA8 EQ PUSH2 0x21E JUMPI PUSH2 0x1BD JUMP JUMPDEST CALLDATASIZE PUSH2 0x1BD JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x1BB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F742053414D42000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BB PUSH2 0x1DD CALLDATASIZE PUSH1 0x4 PUSH2 0x2868 JUMP JUMPDEST PUSH2 0x33B JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x1F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x29F8 JUMP JUMPDEST PUSH2 0x48E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x202 SWAP2 SWAP1 PUSH2 0x2DF1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BB PUSH2 0x219 CALLDATASIZE PUSH1 0x4 PUSH2 0x2776 JUMP JUMPDEST PUSH2 0x600 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x6B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x202 SWAP2 SWAP1 PUSH2 0x2C37 JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x24E CALLDATASIZE PUSH1 0x4 PUSH2 0x2B2E JUMP JUMPDEST PUSH2 0x6D8 JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x261 CALLDATASIZE PUSH1 0x4 PUSH2 0x2776 JUMP JUMPDEST PUSH2 0x8F0 JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x274 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AFF JUMP JUMPDEST PUSH2 0x9C5 JUMP JUMPDEST PUSH2 0x28C PUSH2 0x287 CALLDATASIZE PUSH1 0x4 PUSH2 0x27D6 JUMP JUMPDEST PUSH2 0xB8B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x202 SWAP2 SWAP1 PUSH2 0x2CAA JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x2A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x294D JUMP JUMPDEST PUSH2 0xCE5 JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x2BA CALLDATASIZE PUSH1 0x4 PUSH2 0x2776 JUMP JUMPDEST PUSH2 0xE44 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0xEF9 JUMP JUMPDEST PUSH2 0x1BB PUSH2 0xF1D JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x2EA CALLDATASIZE PUSH1 0x4 PUSH2 0x29F8 JUMP JUMPDEST PUSH2 0xF2F JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x2FD CALLDATASIZE PUSH1 0x4 PUSH2 0x26D7 JUMP JUMPDEST PUSH2 0x10BF JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x310 CALLDATASIZE PUSH1 0x4 PUSH2 0x2718 JUMP JUMPDEST PUSH2 0x11DC JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x323 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A14 JUMP JUMPDEST PUSH2 0x1342 JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x336 CALLDATASIZE PUSH1 0x4 PUSH2 0x2776 JUMP JUMPDEST PUSH2 0x1476 JUMP JUMPDEST PUSH1 0x0 DUP5 SGT DUP1 PUSH2 0x34A JUMPI POP PUSH1 0x0 DUP4 SGT JUMPDEST PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x361 DUP3 DUP5 ADD DUP5 PUSH2 0x2A4C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x375 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x150E JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x3A7 PUSH32 0x0 DUP5 DUP5 DUP5 PUSH2 0x153F JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP11 SGT PUSH2 0x3E8 JUMPI DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT DUP10 PUSH2 0x419 JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT DUP11 JUMPDEST SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x438 JUMPI PUSH2 0x433 DUP6 DUP8 PUSH1 0x20 ADD MLOAD CALLER DUP5 PUSH2 0x155E JUMP JUMPDEST PUSH2 0x482 JUMP JUMPDEST DUP6 MLOAD PUSH2 0x443 SWAP1 PUSH2 0x173C JUMP JUMPDEST ISZERO PUSH2 0x468 JUMPI DUP6 MLOAD PUSH2 0x453 SWAP1 PUSH2 0x1748 JUMP JUMPDEST DUP7 MSTORE PUSH2 0x462 DUP2 CALLER PUSH1 0x0 DUP10 PUSH2 0x1783 JUMP JUMPDEST POP PUSH2 0x482 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP DUP4 SWAP5 POP PUSH2 0x482 DUP6 DUP8 PUSH1 0x20 ADD MLOAD CALLER DUP5 PUSH2 0x155E JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x80 ADD CALLDATALOAD DUP1 PUSH2 0x49E PUSH2 0x193F JUMP JUMPDEST GT ISZERO PUSH2 0x50B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x5B1 PUSH1 0xA0 DUP5 ADD CALLDATALOAD PUSH2 0x523 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x26B4 JUMP JUMPDEST PUSH2 0x534 PUSH2 0x100 DUP8 ADD PUSH1 0xE0 DUP9 ADD PUSH2 0x26B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH2 0x54C PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x26B4 JUMP JUMPDEST PUSH2 0x55C PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x2ADC JUMP JUMPDEST PUSH2 0x56C PUSH1 0x40 DUP13 ADD PUSH1 0x20 DUP14 ADD PUSH2 0x26B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x57E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2BC1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x1943 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0xC0 ADD CALLDATALOAD DUP3 LT ISZERO PUSH2 0x5FA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5F1 SWAP1 PUSH2 0x2D72 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x8FCBAF0C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xFF DUP6 AND PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xC4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xE4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0x8FCBAF0C SWAP2 PUSH2 0x104 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x482 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x6E9 JUMPI POP PUSH1 0x64 DUP3 GT ISZERO JUMPDEST PUSH2 0x6F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x77B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x78F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP5 DUP2 LT ISZERO PUSH2 0x818 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742053414D42000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x8E9 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x891 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x2710 PUSH2 0x8C1 DUP6 DUP5 PUSH2 0x1AC9 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x8C8 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x8DB JUMPI PUSH2 0x8DB DUP4 DUP3 PUSH2 0x1AED JUMP JUMPDEST PUSH2 0x8E7 DUP6 DUP3 DUP5 SUB PUSH2 0x1AED JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x985 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x999 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x8E7 JUMPI PUSH2 0x8E7 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x600 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA62 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0xAEB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742053414D42000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0xB86 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB78 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xB86 DUP3 DUP3 PUSH2 0x1AED JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xBA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xBD8 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xBC3 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xCDE JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0xBF6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xC08 SWAP2 SWAP1 PUSH2 0x2DFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC16 SWAP3 SWAP2 SWAP1 PUSH2 0x2C27 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xC51 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xC56 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xCBC JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0xC6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xC89 SWAP2 SWAP1 PUSH2 0x28E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5F1 SWAP2 SWAP1 PUSH2 0x2D28 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xCC9 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0xBDE JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD DUP1 PUSH2 0xCF5 PUSH2 0x193F JUMP JUMPDEST GT ISZERO PUSH2 0xD62 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER JUMPDEST PUSH1 0x0 PUSH2 0xD73 DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x173C JUMP JUMPDEST SWAP1 POP PUSH2 0xDCC DUP6 PUSH1 0x60 ADD MLOAD DUP3 PUSH2 0xD8C JUMPI DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0xD8E JUMP JUMPDEST ADDRESS JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xDA8 DUP12 PUSH1 0x0 ADD MLOAD PUSH2 0x1C3B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x1943 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE DUP1 ISZERO PUSH2 0xDEC JUMPI DUP5 MLOAD ADDRESS SWAP3 POP PUSH2 0xDE5 SWAP1 PUSH2 0x1748 JUMP JUMPDEST DUP6 MSTORE PUSH2 0xDF9 JUMP JUMPDEST DUP5 PUSH1 0x60 ADD MLOAD SWAP4 POP POP PUSH2 0xDFF JUMP JUMPDEST POP PUSH2 0xD64 JUMP JUMPDEST DUP4 PUSH1 0x80 ADD MLOAD DUP4 LT ISZERO PUSH2 0xE3D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5F1 SWAP1 PUSH2 0x2D72 JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xECD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x8E7 JUMPI PUSH2 0x8E7 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x1476 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST SELFBALANCE ISZERO PUSH2 0xF2D JUMPI PUSH2 0xF2D CALLER SELFBALANCE PUSH2 0x1AED JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x80 ADD CALLDATALOAD DUP1 PUSH2 0xF3F PUSH2 0x193F JUMP JUMPDEST GT ISZERO PUSH2 0xFAC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1055 PUSH1 0xA0 DUP5 ADD CALLDATALOAD PUSH2 0xFC4 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x26B4 JUMP JUMPDEST PUSH2 0xFD5 PUSH2 0x100 DUP8 ADD PUSH1 0xE0 DUP9 ADD PUSH2 0x26B4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xFF3 SWAP2 SWAP1 PUSH2 0x26B4 JUMP JUMPDEST PUSH2 0x1003 PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x2ADC JUMP JUMPDEST PUSH2 0x1010 PUSH1 0x20 DUP13 ADD DUP13 PUSH2 0x26B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1022 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2BC1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x1783 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0xC0 ADD CALLDATALOAD DUP3 GT ISZERO PUSH2 0x1095 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5F1 SWAP1 PUSH2 0x2D3B JUMP JUMPDEST POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x0 SSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1128 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x113C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x11C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E7420746F6B656E0000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x11D6 JUMPI PUSH2 0x11D6 DUP5 DUP4 DUP4 PUSH2 0x1C4A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x11ED JUMPI POP PUSH1 0x64 DUP3 GT ISZERO JUMPDEST PUSH2 0x11F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x125F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1273 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP5 DUP2 LT ISZERO PUSH2 0x12FC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E7420746F6B656E0000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x8E7 JUMPI PUSH1 0x0 PUSH2 0x2710 PUSH2 0x1311 DUP4 DUP7 PUSH2 0x1AC9 JUMP JUMPDEST DUP2 PUSH2 0x1318 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x132C JUMPI PUSH2 0x132C DUP8 DUP5 DUP4 PUSH2 0x1C4A JUMP JUMPDEST PUSH2 0x1339 DUP8 DUP7 DUP4 DUP6 SUB PUSH2 0x1C4A JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD CALLDATALOAD DUP1 PUSH2 0x1352 PUSH2 0x193F JUMP JUMPDEST GT ISZERO PUSH2 0x13BF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1432 PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH2 0x13D7 PUSH1 0x40 DUP7 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x26B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 DUP1 PUSH2 0x13EF DUP10 DUP1 PUSH2 0x2DFA JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP SWAP1 DUP3 MSTORE POP CALLER PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE PUSH2 0x1783 JUMP JUMPDEST POP PUSH1 0x0 SLOAD SWAP2 POP DUP3 PUSH1 0x80 ADD CALLDATALOAD DUP3 GT ISZERO PUSH2 0x1095 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5F1 SWAP1 PUSH2 0x2D3B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xFF DUP6 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x151C DUP5 DUP3 PUSH2 0x1E1F JUMP JUMPDEST SWAP3 POP PUSH2 0x1529 DUP5 PUSH1 0x14 PUSH2 0x1F1F JUMP JUMPDEST SWAP1 POP PUSH2 0x1536 DUP5 PUSH1 0x17 PUSH2 0x1E1F JUMP JUMPDEST SWAP2 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1555 DUP6 PUSH2 0x1550 DUP7 DUP7 DUP7 PUSH2 0x200F JUMP JUMPDEST PUSH2 0x208C JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x15B9 JUMPI POP DUP1 SELFBALANCE LT ISZERO JUMPDEST ISZERO PUSH2 0x1702 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1626 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x163A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11D6 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ADDRESS EQ ISZERO PUSH2 0x1730 JUMPI PUSH2 0x172B DUP5 DUP4 DUP4 PUSH2 0x1C4A JUMP JUMPDEST PUSH2 0x11D6 JUMP JUMPDEST PUSH2 0x11D6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x20BC JUMP JUMPDEST DUP1 MLOAD PUSH1 0x42 GT ISZERO JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x177D SWAP1 DUP4 SWAP1 PUSH1 0x17 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 ADD PUSH2 0x2299 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x17A4 JUMPI ADDRESS SWAP4 POP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x17B6 DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x150E JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND SWAP1 DUP4 AND LT PUSH1 0x0 DUP1 PUSH2 0x17E7 DUP6 DUP8 DUP7 PUSH2 0x2480 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 DUP12 DUP6 PUSH2 0x180D DUP16 PUSH2 0x24BE JUMP JUMPDEST PUSH1 0x0 SUB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND ISZERO PUSH2 0x1832 JUMPI DUP14 PUSH2 0x1858 JUMP JUMPDEST DUP8 PUSH2 0x1851 JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x1858 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1869 SWAP2 SWAP1 PUSH2 0x2DA9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1898 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C58 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18E9 SWAP2 SWAP1 PUSH2 0x2845 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP4 PUSH2 0x18FE JUMPI DUP2 DUP4 PUSH1 0x0 SUB PUSH2 0x1904 JUMP JUMPDEST DUP3 DUP3 PUSH1 0x0 SUB JUMPDEST SWAP1 SWAP9 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH2 0x1930 JUMPI DUP12 DUP2 EQ PUSH2 0x1930 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x1964 JUMPI ADDRESS SWAP4 POP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1976 DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x150E JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP1 DUP5 AND LT PUSH1 0x0 DUP1 PUSH2 0x19A7 DUP7 DUP7 DUP7 PUSH2 0x2480 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 DUP12 DUP6 PUSH2 0x19CD DUP16 PUSH2 0x24BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND ISZERO PUSH2 0x19EF JUMPI DUP14 PUSH2 0x1A15 JUMP JUMPDEST DUP8 PUSH2 0x1A0E JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x1A15 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1A26 SWAP2 SWAP1 PUSH2 0x2DA9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A55 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C58 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A82 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1AA6 SWAP2 SWAP1 PUSH2 0x2845 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 PUSH2 0x1AB5 JUMPI DUP2 PUSH2 0x1AB7 JUMP JUMPDEST DUP1 JUMPDEST PUSH1 0x0 SUB SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x1AE4 JUMPI POP POP DUP2 DUP2 MUL DUP2 DUP4 DUP3 DUP2 PUSH2 0x1AE1 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x177D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1B64 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1B27 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1BC6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1BCB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xB86 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354450000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH2 0x177D DUP3 PUSH1 0x0 PUSH1 0x2B PUSH2 0x2299 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1D1F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1CE2 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1D81 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1D86 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1DB4 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1DB4 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x8E9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x14 ADD LT ISZERO PUSH2 0x1E93 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F416464726573735F6F766572666C6F770000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x14 ADD DUP4 MLOAD LT ISZERO PUSH2 0x1F06 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F416464726573735F6F75744F66426F756E64730000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH13 0x1000000000000000000000000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x3 ADD LT ISZERO PUSH2 0x1F93 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F55696E7432345F6F766572666C6F77000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 ADD DUP4 MLOAD LT ISZERO PUSH2 0x2006 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F55696E7432345F6F75744F66426F756E6473000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x3 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2017 PUSH2 0x2626 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x204F JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH3 0xFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2098 DUP4 DUP4 PUSH2 0x24F0 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x177D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2199 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x215C JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x21FB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2200 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x222E JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x222E JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x222B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x8E7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354460000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP2 DUP3 PUSH1 0x1F ADD LT ISZERO PUSH2 0x230D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F766572666C6F77000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 DUP5 ADD LT ISZERO PUSH2 0x237E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F766572666C6F77000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 ADD DUP5 MLOAD LT ISZERO PUSH2 0x23F0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F75744F66426F756E6473000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO DUP1 ISZERO PUSH2 0x240F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x0 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2477 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F DUP5 AND DUP1 ISZERO PUSH1 0x20 MUL DUP2 DUP5 ADD ADD DUP6 DUP2 ADD DUP8 DUP4 ISZERO PUSH1 0x20 MUL DUP5 DUP12 ADD ADD ADD JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x2448 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x2430 JUMP JUMPDEST POP POP DUP6 DUP5 MSTORE PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x40 MSTORE POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24B6 PUSH32 0x0 PUSH2 0x24B1 DUP7 DUP7 DUP7 PUSH2 0x200F JUMP JUMPDEST PUSH2 0x24F0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 LT PUSH2 0x24EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x2532 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 DUP6 ADD MSTORE SWAP4 SWAP1 SWAP2 AND DUP4 DUP6 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x80 DUP5 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 PUSH1 0xD5 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xF5 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1743 DUP2 PUSH2 0x2EF4 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2661 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2674 PUSH2 0x266F DUP3 PUSH2 0x2E88 JUMP JUMPDEST PUSH2 0x2E64 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x2688 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5FA JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26C5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x26D0 DUP2 PUSH2 0x2EF4 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x26EB JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x26F6 DUP2 PUSH2 0x2EF4 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x270D DUP2 PUSH2 0x2EF4 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x272F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x273A DUP2 PUSH2 0x2EF4 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x2751 DUP2 PUSH2 0x2EF4 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x2768 DUP2 PUSH2 0x2EF4 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x278E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2799 DUP2 PUSH2 0x2EF4 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x27BC JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP5 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x27E8 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x27FF JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2812 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2820 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x2833 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2857 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x287D JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x28A2 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28B5 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x28C3 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x28D4 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28F4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x290A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x291A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x2928 PUSH2 0x266F DUP3 PUSH2 0x2E88 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x293C JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1555 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2EC8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x295E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2975 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0xA0 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x2988 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x299D JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x29AE JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x29BA DUP8 DUP3 DUP7 ADD PUSH2 0x2651 JUMP JUMPDEST DUP3 MSTORE POP PUSH2 0x29C9 PUSH1 0x20 DUP5 ADD PUSH2 0x2646 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A0A JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x26D0 DUP4 DUP4 PUSH2 0x26A2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A25 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A3B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0xA0 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x26D0 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A5D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2A74 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x40 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x2A87 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x2A9C JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x2AAD JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2AB9 DUP8 DUP3 DUP7 ADD PUSH2 0x2651 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP3 POP PUSH2 0x2ACC DUP4 PUSH2 0x2EF4 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AED JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x26D0 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B11 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2B23 DUP2 PUSH2 0x2EF4 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2B43 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x2B55 DUP2 PUSH2 0x2EF4 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x2B6C DUP2 PUSH2 0x2EF4 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2B8F DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2EC8 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SWAP4 DUP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0xE8 SWAP4 SWAP1 SWAP4 SHL PUSH32 0xFFFFFF0000000000000000000000000000000000000000000000000000000000 AND PUSH1 0x14 DUP3 ADD MSTORE SWAP3 SHL AND PUSH1 0x17 DUP3 ADD MSTORE PUSH1 0x2B ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND DUP4 MSTORE DUP7 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE DUP6 PUSH1 0x40 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x60 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x2C9F PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x2B77 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2D1B JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x2D09 DUP6 DUP4 MLOAD PUSH2 0x2B77 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2CCF JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x26D0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2B77 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x546F6F206D756368207265717565737465640000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x546F6F206C6974746C6520726563656976656400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD PUSH1 0x40 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2DC5 PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0x2B77 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2E2E JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2E48 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2E5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2E80 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2E9C JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2EE3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2ECB JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x11D6 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2F16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"948:8042:45:-:0;;;-1:-1:-1;;1511:57:45;;1575:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;520:18:50;;;;;;;;548:12;;;;;948:8042:45;;14:179:115;95:13;;-1:-1:-1;;;;;137:31:115;;127:42;;117:2;;183:1;180;173:12;117:2;76:117;;;:::o;198:307::-;;;338:2;326:9;317:7;313:23;309:32;306:2;;;359:6;351;344:22;306:2;387:42;419:9;387:42;:::i;:::-;377:52;;448:51;495:2;484:9;480:18;448:51;:::i;:::-;438:61;;296:209;;;;;:::o;:::-;948:8042:45;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:15740:115","statements":[{"nodeType":"YulBlock","src":"6:3:115","statements":[]},{"body":{"nodeType":"YulBlock","src":"65:87:115","statements":[{"nodeType":"YulAssignment","src":"75:29:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"97:6:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"84:12:115"},"nodeType":"YulFunctionCall","src":"84:20:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"75:5:115"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"140:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"113:26:115"},"nodeType":"YulFunctionCall","src":"113:33:115"},"nodeType":"YulExpressionStatement","src":"113:33:115"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"44:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"55:5:115","type":""}],"src":"14:138:115"},{"body":{"nodeType":"YulBlock","src":"211:431:115","statements":[{"body":{"nodeType":"YulBlock","src":"260:24:115","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"269:5:115"},{"name":"array","nodeType":"YulIdentifier","src":"276:5:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"262:6:115"},"nodeType":"YulFunctionCall","src":"262:20:115"},"nodeType":"YulExpressionStatement","src":"262:20:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"239:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"247:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:115"},"nodeType":"YulFunctionCall","src":"235:17:115"},{"name":"end","nodeType":"YulIdentifier","src":"254:3:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"231:3:115"},"nodeType":"YulFunctionCall","src":"231:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"224:6:115"},"nodeType":"YulFunctionCall","src":"224:35:115"},"nodeType":"YulIf","src":"221:2:115"},{"nodeType":"YulVariableDeclaration","src":"293:30:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"316:6:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"303:12:115"},"nodeType":"YulFunctionCall","src":"303:20:115"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"297:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"332:64:115","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"392:2:115"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"362:29:115"},"nodeType":"YulFunctionCall","src":"362:33:115"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"347:14:115"},"nodeType":"YulFunctionCall","src":"347:49:115"},"variables":[{"name":"array_1","nodeType":"YulTypedName","src":"336:7:115","type":""}]},{"expression":{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"412:7:115"},{"name":"_1","nodeType":"YulIdentifier","src":"421:2:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"405:6:115"},"nodeType":"YulFunctionCall","src":"405:19:115"},"nodeType":"YulExpressionStatement","src":"405:19:115"},{"body":{"nodeType":"YulBlock","src":"472:24:115","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"481:5:115"},{"name":"array","nodeType":"YulIdentifier","src":"488:5:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"474:6:115"},"nodeType":"YulFunctionCall","src":"474:20:115"},"nodeType":"YulExpressionStatement","src":"474:20:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"447:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"455:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"443:3:115"},"nodeType":"YulFunctionCall","src":"443:15:115"},{"kind":"number","nodeType":"YulLiteral","src":"460:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"439:3:115"},"nodeType":"YulFunctionCall","src":"439:26:115"},{"name":"end","nodeType":"YulIdentifier","src":"467:3:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"436:2:115"},"nodeType":"YulFunctionCall","src":"436:35:115"},"nodeType":"YulIf","src":"433:2:115"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"522:7:115"},{"kind":"number","nodeType":"YulLiteral","src":"531:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"518:3:115"},"nodeType":"YulFunctionCall","src":"518:18:115"},{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"542:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"550:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"538:3:115"},"nodeType":"YulFunctionCall","src":"538:17:115"},{"name":"_1","nodeType":"YulIdentifier","src":"557:2:115"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"505:12:115"},"nodeType":"YulFunctionCall","src":"505:55:115"},"nodeType":"YulExpressionStatement","src":"505:55:115"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"584:7:115"},{"name":"_1","nodeType":"YulIdentifier","src":"593:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"580:3:115"},"nodeType":"YulFunctionCall","src":"580:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"598:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"576:3:115"},"nodeType":"YulFunctionCall","src":"576:27:115"},{"name":"array","nodeType":"YulIdentifier","src":"605:5:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"569:6:115"},"nodeType":"YulFunctionCall","src":"569:42:115"},"nodeType":"YulExpressionStatement","src":"569:42:115"},{"nodeType":"YulAssignment","src":"620:16:115","value":{"name":"array_1","nodeType":"YulIdentifier","src":"629:7:115"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"620:5:115"}]}]},"name":"abi_decode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"185:6:115","type":""},{"name":"end","nodeType":"YulTypedName","src":"193:3:115","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"201:5:115","type":""}],"src":"157:485:115"},{"body":{"nodeType":"YulBlock","src":"735:94:115","statements":[{"body":{"nodeType":"YulBlock","src":"775:24:115","statements":[{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"784:5:115"},{"name":"value","nodeType":"YulIdentifier","src":"791:5:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"777:6:115"},"nodeType":"YulFunctionCall","src":"777:20:115"},"nodeType":"YulExpressionStatement","src":"777:20:115"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"756:3:115"},{"name":"offset","nodeType":"YulIdentifier","src":"761:6:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"752:3:115"},"nodeType":"YulFunctionCall","src":"752:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"770:3:115","type":"","value":"256"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"748:3:115"},"nodeType":"YulFunctionCall","src":"748:26:115"},"nodeType":"YulIf","src":"745:2:115"},{"nodeType":"YulAssignment","src":"808:15:115","value":{"name":"offset","nodeType":"YulIdentifier","src":"817:6:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"808:5:115"}]}]},"name":"abi_decode_t_struct$_ExactInputSingleParams_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"709:6:115","type":""},{"name":"end","nodeType":"YulTypedName","src":"717:3:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"725:5:115","type":""}],"src":"647:182:115"},{"body":{"nodeType":"YulBlock","src":"904:189:115","statements":[{"body":{"nodeType":"YulBlock","src":"950:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"959:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"967:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"952:6:115"},"nodeType":"YulFunctionCall","src":"952:22:115"},"nodeType":"YulExpressionStatement","src":"952:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"925:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"934:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"921:3:115"},"nodeType":"YulFunctionCall","src":"921:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"946:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"917:3:115"},"nodeType":"YulFunctionCall","src":"917:32:115"},"nodeType":"YulIf","src":"914:2:115"},{"nodeType":"YulVariableDeclaration","src":"985:36:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1011:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"998:12:115"},"nodeType":"YulFunctionCall","src":"998:23:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"989:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1057:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1030:26:115"},"nodeType":"YulFunctionCall","src":"1030:33:115"},"nodeType":"YulExpressionStatement","src":"1030:33:115"},{"nodeType":"YulAssignment","src":"1072:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"1082:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1072:6:115"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"870:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"881:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"893:6:115","type":""}],"src":"834:259:115"},{"body":{"nodeType":"YulBlock","src":"1202:366:115","statements":[{"body":{"nodeType":"YulBlock","src":"1248:26:115","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1257:6:115"},{"name":"value1","nodeType":"YulIdentifier","src":"1265:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1250:6:115"},"nodeType":"YulFunctionCall","src":"1250:22:115"},"nodeType":"YulExpressionStatement","src":"1250:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1223:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"1232:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1219:3:115"},"nodeType":"YulFunctionCall","src":"1219:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"1244:2:115","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1215:3:115"},"nodeType":"YulFunctionCall","src":"1215:32:115"},"nodeType":"YulIf","src":"1212:2:115"},{"nodeType":"YulVariableDeclaration","src":"1283:36:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1309:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1296:12:115"},"nodeType":"YulFunctionCall","src":"1296:23:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1287:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1328:26:115"},"nodeType":"YulFunctionCall","src":"1328:33:115"},"nodeType":"YulExpressionStatement","src":"1328:33:115"},{"nodeType":"YulAssignment","src":"1370:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"1380:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1370:6:115"}]},{"nodeType":"YulAssignment","src":"1394:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1421:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1432:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1417:3:115"},"nodeType":"YulFunctionCall","src":"1417:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1404:12:115"},"nodeType":"YulFunctionCall","src":"1404:32:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1394:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"1445:47:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1477:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1488:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1473:3:115"},"nodeType":"YulFunctionCall","src":"1473:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1460:12:115"},"nodeType":"YulFunctionCall","src":"1460:32:115"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1449:7:115","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1528:7:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1501:26:115"},"nodeType":"YulFunctionCall","src":"1501:35:115"},"nodeType":"YulExpressionStatement","src":"1501:35:115"},{"nodeType":"YulAssignment","src":"1545:17:115","value":{"name":"value_1","nodeType":"YulIdentifier","src":"1555:7:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1545:6:115"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1152:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1163:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1175:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1183:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1191:6:115","type":""}],"src":"1098:470:115"},{"body":{"nodeType":"YulBlock","src":"1711:545:115","statements":[{"body":{"nodeType":"YulBlock","src":"1758:26:115","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1767:6:115"},{"name":"value4","nodeType":"YulIdentifier","src":"1775:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1760:6:115"},"nodeType":"YulFunctionCall","src":"1760:22:115"},"nodeType":"YulExpressionStatement","src":"1760:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1732:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"1741:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1728:3:115"},"nodeType":"YulFunctionCall","src":"1728:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"1753:3:115","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1724:3:115"},"nodeType":"YulFunctionCall","src":"1724:33:115"},"nodeType":"YulIf","src":"1721:2:115"},{"nodeType":"YulVariableDeclaration","src":"1793:36:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1819:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1806:12:115"},"nodeType":"YulFunctionCall","src":"1806:23:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1797:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1865:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1838:26:115"},"nodeType":"YulFunctionCall","src":"1838:33:115"},"nodeType":"YulExpressionStatement","src":"1838:33:115"},{"nodeType":"YulAssignment","src":"1880:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"1890:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1880:6:115"}]},{"nodeType":"YulAssignment","src":"1904:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1931:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1942:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1927:3:115"},"nodeType":"YulFunctionCall","src":"1927:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1914:12:115"},"nodeType":"YulFunctionCall","src":"1914:32:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1904:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"1955:47:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1987:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1998:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1983:3:115"},"nodeType":"YulFunctionCall","src":"1983:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1970:12:115"},"nodeType":"YulFunctionCall","src":"1970:32:115"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1959:7:115","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2038:7:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2011:26:115"},"nodeType":"YulFunctionCall","src":"2011:35:115"},"nodeType":"YulExpressionStatement","src":"2011:35:115"},{"nodeType":"YulAssignment","src":"2055:17:115","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2065:7:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2055:6:115"}]},{"nodeType":"YulAssignment","src":"2081:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2108:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2119:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2104:3:115"},"nodeType":"YulFunctionCall","src":"2104:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2091:12:115"},"nodeType":"YulFunctionCall","src":"2091:32:115"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"2081:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"2132:48:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2164:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2175:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2160:3:115"},"nodeType":"YulFunctionCall","src":"2160:19:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2147:12:115"},"nodeType":"YulFunctionCall","src":"2147:33:115"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"2136:7:115","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"2216:7:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2189:26:115"},"nodeType":"YulFunctionCall","src":"2189:35:115"},"nodeType":"YulExpressionStatement","src":"2189:35:115"},{"nodeType":"YulAssignment","src":"2233:17:115","value":{"name":"value_2","nodeType":"YulIdentifier","src":"2243:7:115"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"2233:6:115"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_addresst_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1645:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1656:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1668:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1676:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1684:6:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1692:6:115","type":""},{"name":"value4","nodeType":"YulTypedName","src":"1700:6:115","type":""}],"src":"1573:683:115"},{"body":{"nodeType":"YulBlock","src":"2414:556:115","statements":[{"body":{"nodeType":"YulBlock","src":"2461:26:115","statements":[{"expression":{"arguments":[{"name":"value5","nodeType":"YulIdentifier","src":"2470:6:115"},{"name":"value5","nodeType":"YulIdentifier","src":"2478:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2463:6:115"},"nodeType":"YulFunctionCall","src":"2463:22:115"},"nodeType":"YulExpressionStatement","src":"2463:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2435:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"2444:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2431:3:115"},"nodeType":"YulFunctionCall","src":"2431:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"2456:3:115","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2427:3:115"},"nodeType":"YulFunctionCall","src":"2427:33:115"},"nodeType":"YulIf","src":"2424:2:115"},{"nodeType":"YulVariableDeclaration","src":"2496:36:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2522:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2509:12:115"},"nodeType":"YulFunctionCall","src":"2509:23:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2500:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2568:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2541:26:115"},"nodeType":"YulFunctionCall","src":"2541:33:115"},"nodeType":"YulExpressionStatement","src":"2541:33:115"},{"nodeType":"YulAssignment","src":"2583:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"2593:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2583:6:115"}]},{"nodeType":"YulAssignment","src":"2607:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2634:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2645:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2630:3:115"},"nodeType":"YulFunctionCall","src":"2630:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2617:12:115"},"nodeType":"YulFunctionCall","src":"2617:32:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2607:6:115"}]},{"nodeType":"YulAssignment","src":"2658:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2685:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2696:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2681:3:115"},"nodeType":"YulFunctionCall","src":"2681:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2668:12:115"},"nodeType":"YulFunctionCall","src":"2668:32:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2658:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"2709:47:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2741:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2752:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2737:3:115"},"nodeType":"YulFunctionCall","src":"2737:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2724:12:115"},"nodeType":"YulFunctionCall","src":"2724:32:115"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"2713:7:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"2808:26:115","statements":[{"expression":{"arguments":[{"name":"value5","nodeType":"YulIdentifier","src":"2817:6:115"},{"name":"value5","nodeType":"YulIdentifier","src":"2825:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2810:6:115"},"nodeType":"YulFunctionCall","src":"2810:22:115"},"nodeType":"YulExpressionStatement","src":"2810:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2778:7:115"},{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2791:7:115"},{"kind":"number","nodeType":"YulLiteral","src":"2800:4:115","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2787:3:115"},"nodeType":"YulFunctionCall","src":"2787:18:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2775:2:115"},"nodeType":"YulFunctionCall","src":"2775:31:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2768:6:115"},"nodeType":"YulFunctionCall","src":"2768:39:115"},"nodeType":"YulIf","src":"2765:2:115"},{"nodeType":"YulAssignment","src":"2843:17:115","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2853:7:115"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"2843:6:115"}]},{"nodeType":"YulAssignment","src":"2869:43:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2896:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2907:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2892:3:115"},"nodeType":"YulFunctionCall","src":"2892:19:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2879:12:115"},"nodeType":"YulFunctionCall","src":"2879:33:115"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"2869:6:115"}]},{"nodeType":"YulAssignment","src":"2921:43:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2948:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2959:3:115","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2944:3:115"},"nodeType":"YulFunctionCall","src":"2944:19:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2931:12:115"},"nodeType":"YulFunctionCall","src":"2931:33:115"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"2921:6:115"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2340:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2351:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2363:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2371:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2379:6:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2387:6:115","type":""},{"name":"value4","nodeType":"YulTypedName","src":"2395:6:115","type":""},{"name":"value5","nodeType":"YulTypedName","src":"2403:6:115","type":""}],"src":"2261:709:115"},{"body":{"nodeType":"YulBlock","src":"3091:561:115","statements":[{"body":{"nodeType":"YulBlock","src":"3137:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3146:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3154:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3139:6:115"},"nodeType":"YulFunctionCall","src":"3139:22:115"},"nodeType":"YulExpressionStatement","src":"3139:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3112:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"3121:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3108:3:115"},"nodeType":"YulFunctionCall","src":"3108:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"3133:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3104:3:115"},"nodeType":"YulFunctionCall","src":"3104:32:115"},"nodeType":"YulIf","src":"3101:2:115"},{"nodeType":"YulVariableDeclaration","src":"3172:37:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3199:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3186:12:115"},"nodeType":"YulFunctionCall","src":"3186:23:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3176:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3218:28:115","value":{"kind":"number","nodeType":"YulLiteral","src":"3228:18:115","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3222:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"3273:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3282:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3290:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3275:6:115"},"nodeType":"YulFunctionCall","src":"3275:22:115"},"nodeType":"YulExpressionStatement","src":"3275:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3261:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3269:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3258:2:115"},"nodeType":"YulFunctionCall","src":"3258:14:115"},"nodeType":"YulIf","src":"3255:2:115"},{"nodeType":"YulVariableDeclaration","src":"3308:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3322:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"3333:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3318:3:115"},"nodeType":"YulFunctionCall","src":"3318:22:115"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3312:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"3388:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3397:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3405:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3390:6:115"},"nodeType":"YulFunctionCall","src":"3390:22:115"},"nodeType":"YulExpressionStatement","src":"3390:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3367:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"3371:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3363:3:115"},"nodeType":"YulFunctionCall","src":"3363:13:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3378:7:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3359:3:115"},"nodeType":"YulFunctionCall","src":"3359:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3352:6:115"},"nodeType":"YulFunctionCall","src":"3352:35:115"},"nodeType":"YulIf","src":"3349:2:115"},{"nodeType":"YulVariableDeclaration","src":"3423:30:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3450:2:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3437:12:115"},"nodeType":"YulFunctionCall","src":"3437:16:115"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3427:6:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"3480:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3489:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3497:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3482:6:115"},"nodeType":"YulFunctionCall","src":"3482:22:115"},"nodeType":"YulExpressionStatement","src":"3482:22:115"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3468:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3476:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3465:2:115"},"nodeType":"YulFunctionCall","src":"3465:14:115"},"nodeType":"YulIf","src":"3462:2:115"},{"body":{"nodeType":"YulBlock","src":"3565:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3574:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3582:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3567:6:115"},"nodeType":"YulFunctionCall","src":"3567:22:115"},"nodeType":"YulExpressionStatement","src":"3567:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3529:2:115"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3537:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"3545:2:115","type":"","value":"32"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3533:3:115"},"nodeType":"YulFunctionCall","src":"3533:15:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3525:3:115"},"nodeType":"YulFunctionCall","src":"3525:24:115"},{"kind":"number","nodeType":"YulLiteral","src":"3551:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3521:3:115"},"nodeType":"YulFunctionCall","src":"3521:33:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3556:7:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3518:2:115"},"nodeType":"YulFunctionCall","src":"3518:46:115"},"nodeType":"YulIf","src":"3515:2:115"},{"nodeType":"YulAssignment","src":"3600:21:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3614:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"3618:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3610:3:115"},"nodeType":"YulFunctionCall","src":"3610:11:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3600:6:115"}]},{"nodeType":"YulAssignment","src":"3630:16:115","value":{"name":"length","nodeType":"YulIdentifier","src":"3640:6:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3630:6:115"}]}]},"name":"abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3049:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3060:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3072:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3080:6:115","type":""}],"src":"2975:677:115"},{"body":{"nodeType":"YulBlock","src":"3753:157:115","statements":[{"body":{"nodeType":"YulBlock","src":"3799:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3808:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3816:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3801:6:115"},"nodeType":"YulFunctionCall","src":"3801:22:115"},"nodeType":"YulExpressionStatement","src":"3801:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3774:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"3783:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3770:3:115"},"nodeType":"YulFunctionCall","src":"3770:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"3795:2:115","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3766:3:115"},"nodeType":"YulFunctionCall","src":"3766:32:115"},"nodeType":"YulIf","src":"3763:2:115"},{"nodeType":"YulAssignment","src":"3834:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3850:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3844:5:115"},"nodeType":"YulFunctionCall","src":"3844:16:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3834:6:115"}]},{"nodeType":"YulAssignment","src":"3869:35:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3889:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"3900:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3885:3:115"},"nodeType":"YulFunctionCall","src":"3885:18:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3879:5:115"},"nodeType":"YulFunctionCall","src":"3879:25:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3869:6:115"}]}]},"name":"abi_decode_tuple_t_int256t_int256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3711:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3722:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3734:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3742:6:115","type":""}],"src":"3657:253:115"},{"body":{"nodeType":"YulBlock","src":"4036:654:115","statements":[{"body":{"nodeType":"YulBlock","src":"4082:26:115","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4091:6:115"},{"name":"value2","nodeType":"YulIdentifier","src":"4099:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4084:6:115"},"nodeType":"YulFunctionCall","src":"4084:22:115"},"nodeType":"YulExpressionStatement","src":"4084:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4057:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"4066:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4053:3:115"},"nodeType":"YulFunctionCall","src":"4053:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"4078:2:115","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4049:3:115"},"nodeType":"YulFunctionCall","src":"4049:32:115"},"nodeType":"YulIf","src":"4046:2:115"},{"nodeType":"YulAssignment","src":"4117:33:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4140:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4127:12:115"},"nodeType":"YulFunctionCall","src":"4127:23:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4117:6:115"}]},{"nodeType":"YulAssignment","src":"4159:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4186:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4197:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4182:3:115"},"nodeType":"YulFunctionCall","src":"4182:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4169:12:115"},"nodeType":"YulFunctionCall","src":"4169:32:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4159:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"4210:46:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4241:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4252:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4237:3:115"},"nodeType":"YulFunctionCall","src":"4237:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4224:12:115"},"nodeType":"YulFunctionCall","src":"4224:32:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4214:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4265:28:115","value":{"kind":"number","nodeType":"YulLiteral","src":"4275:18:115","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4269:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"4320:26:115","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4329:6:115"},{"name":"value2","nodeType":"YulIdentifier","src":"4337:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4322:6:115"},"nodeType":"YulFunctionCall","src":"4322:22:115"},"nodeType":"YulExpressionStatement","src":"4322:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4308:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"4316:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4305:2:115"},"nodeType":"YulFunctionCall","src":"4305:14:115"},"nodeType":"YulIf","src":"4302:2:115"},{"nodeType":"YulVariableDeclaration","src":"4355:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4369:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"4380:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4365:3:115"},"nodeType":"YulFunctionCall","src":"4365:22:115"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"4359:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"4435:26:115","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4444:6:115"},{"name":"value2","nodeType":"YulIdentifier","src":"4452:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4437:6:115"},"nodeType":"YulFunctionCall","src":"4437:22:115"},"nodeType":"YulExpressionStatement","src":"4437:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4414:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"4418:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4410:3:115"},"nodeType":"YulFunctionCall","src":"4410:13:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4425:7:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4406:3:115"},"nodeType":"YulFunctionCall","src":"4406:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4399:6:115"},"nodeType":"YulFunctionCall","src":"4399:35:115"},"nodeType":"YulIf","src":"4396:2:115"},{"nodeType":"YulVariableDeclaration","src":"4470:30:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4497:2:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4484:12:115"},"nodeType":"YulFunctionCall","src":"4484:16:115"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4474:6:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"4527:26:115","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4536:6:115"},{"name":"value2","nodeType":"YulIdentifier","src":"4544:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4529:6:115"},"nodeType":"YulFunctionCall","src":"4529:22:115"},"nodeType":"YulExpressionStatement","src":"4529:22:115"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4515:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"4523:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4512:2:115"},"nodeType":"YulFunctionCall","src":"4512:14:115"},"nodeType":"YulIf","src":"4509:2:115"},{"body":{"nodeType":"YulBlock","src":"4603:26:115","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4612:6:115"},{"name":"value2","nodeType":"YulIdentifier","src":"4620:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4605:6:115"},"nodeType":"YulFunctionCall","src":"4605:22:115"},"nodeType":"YulExpressionStatement","src":"4605:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4576:2:115"},{"name":"length","nodeType":"YulIdentifier","src":"4580:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4572:3:115"},"nodeType":"YulFunctionCall","src":"4572:15:115"},{"kind":"number","nodeType":"YulLiteral","src":"4589:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4568:3:115"},"nodeType":"YulFunctionCall","src":"4568:24:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4594:7:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4565:2:115"},"nodeType":"YulFunctionCall","src":"4565:37:115"},"nodeType":"YulIf","src":"4562:2:115"},{"nodeType":"YulAssignment","src":"4638:21:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4652:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"4656:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4648:3:115"},"nodeType":"YulFunctionCall","src":"4648:11:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4638:6:115"}]},{"nodeType":"YulAssignment","src":"4668:16:115","value":{"name":"length","nodeType":"YulIdentifier","src":"4678:6:115"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4668:6:115"}]}]},"name":"abi_decode_tuple_t_int256t_int256t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3978:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3989:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4001:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4009:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4017:6:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4025:6:115","type":""}],"src":"3915:775:115"},{"body":{"nodeType":"YulBlock","src":"4786:585:115","statements":[{"body":{"nodeType":"YulBlock","src":"4832:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4841:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"4849:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4834:6:115"},"nodeType":"YulFunctionCall","src":"4834:22:115"},"nodeType":"YulExpressionStatement","src":"4834:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4807:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"4816:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4803:3:115"},"nodeType":"YulFunctionCall","src":"4803:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"4828:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4799:3:115"},"nodeType":"YulFunctionCall","src":"4799:32:115"},"nodeType":"YulIf","src":"4796:2:115"},{"nodeType":"YulVariableDeclaration","src":"4867:30:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4887:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4881:5:115"},"nodeType":"YulFunctionCall","src":"4881:16:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4871:6:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"4940:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4949:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"4957:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4942:6:115"},"nodeType":"YulFunctionCall","src":"4942:22:115"},"nodeType":"YulExpressionStatement","src":"4942:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4912:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"4920:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4909:2:115"},"nodeType":"YulFunctionCall","src":"4909:30:115"},"nodeType":"YulIf","src":"4906:2:115"},{"nodeType":"YulVariableDeclaration","src":"4975:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4989:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"5000:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4985:3:115"},"nodeType":"YulFunctionCall","src":"4985:22:115"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4979:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"5055:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5064:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"5072:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5057:6:115"},"nodeType":"YulFunctionCall","src":"5057:22:115"},"nodeType":"YulExpressionStatement","src":"5057:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"5034:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"5038:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5030:3:115"},"nodeType":"YulFunctionCall","src":"5030:13:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5045:7:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5026:3:115"},"nodeType":"YulFunctionCall","src":"5026:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5019:6:115"},"nodeType":"YulFunctionCall","src":"5019:35:115"},"nodeType":"YulIf","src":"5016:2:115"},{"nodeType":"YulVariableDeclaration","src":"5090:19:115","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"5106:2:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5100:5:115"},"nodeType":"YulFunctionCall","src":"5100:9:115"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"5094:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5118:62:115","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5176:2:115"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"5146:29:115"},"nodeType":"YulFunctionCall","src":"5146:33:115"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"5131:14:115"},"nodeType":"YulFunctionCall","src":"5131:49:115"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"5122:5:115","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"5196:5:115"},{"name":"_2","nodeType":"YulIdentifier","src":"5203:2:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5189:6:115"},"nodeType":"YulFunctionCall","src":"5189:17:115"},"nodeType":"YulExpressionStatement","src":"5189:17:115"},{"body":{"nodeType":"YulBlock","src":"5252:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5261:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"5269:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5254:6:115"},"nodeType":"YulFunctionCall","src":"5254:22:115"},"nodeType":"YulExpressionStatement","src":"5254:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"5229:2:115"},{"name":"_2","nodeType":"YulIdentifier","src":"5233:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5225:3:115"},"nodeType":"YulFunctionCall","src":"5225:11:115"},{"kind":"number","nodeType":"YulLiteral","src":"5238:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5221:3:115"},"nodeType":"YulFunctionCall","src":"5221:20:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5243:7:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5218:2:115"},"nodeType":"YulFunctionCall","src":"5218:33:115"},"nodeType":"YulIf","src":"5215:2:115"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"5313:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"5317:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5309:3:115"},"nodeType":"YulFunctionCall","src":"5309:11:115"},{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"5326:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"5333:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5322:3:115"},"nodeType":"YulFunctionCall","src":"5322:14:115"},{"name":"_2","nodeType":"YulIdentifier","src":"5338:2:115"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"5287:21:115"},"nodeType":"YulFunctionCall","src":"5287:54:115"},"nodeType":"YulExpressionStatement","src":"5287:54:115"},{"nodeType":"YulAssignment","src":"5350:15:115","value":{"name":"array","nodeType":"YulIdentifier","src":"5360:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5350:6:115"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4752:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4763:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4775:6:115","type":""}],"src":"4695:676:115"},{"body":{"nodeType":"YulBlock","src":"5481:938:115","statements":[{"body":{"nodeType":"YulBlock","src":"5527:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5536:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"5544:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5529:6:115"},"nodeType":"YulFunctionCall","src":"5529:22:115"},"nodeType":"YulExpressionStatement","src":"5529:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5502:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"5511:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5498:3:115"},"nodeType":"YulFunctionCall","src":"5498:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"5523:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5494:3:115"},"nodeType":"YulFunctionCall","src":"5494:32:115"},"nodeType":"YulIf","src":"5491:2:115"},{"nodeType":"YulVariableDeclaration","src":"5562:37:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5589:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5576:12:115"},"nodeType":"YulFunctionCall","src":"5576:23:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5566:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5608:28:115","value":{"kind":"number","nodeType":"YulLiteral","src":"5618:18:115","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5612:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"5663:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5672:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"5680:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5665:6:115"},"nodeType":"YulFunctionCall","src":"5665:22:115"},"nodeType":"YulExpressionStatement","src":"5665:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5651:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"5659:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5648:2:115"},"nodeType":"YulFunctionCall","src":"5648:14:115"},"nodeType":"YulIf","src":"5645:2:115"},{"nodeType":"YulVariableDeclaration","src":"5698:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5712:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"5723:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5708:3:115"},"nodeType":"YulFunctionCall","src":"5708:22:115"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"5702:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"5770:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5779:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"5787:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5772:6:115"},"nodeType":"YulFunctionCall","src":"5772:22:115"},"nodeType":"YulExpressionStatement","src":"5772:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5750:7:115"},{"name":"_2","nodeType":"YulIdentifier","src":"5759:2:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5746:3:115"},"nodeType":"YulFunctionCall","src":"5746:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"5764:4:115","type":"","value":"0xa0"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5742:3:115"},"nodeType":"YulFunctionCall","src":"5742:27:115"},"nodeType":"YulIf","src":"5739:2:115"},{"nodeType":"YulVariableDeclaration","src":"5805:23:115","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5825:2:115","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5819:5:115"},"nodeType":"YulFunctionCall","src":"5819:9:115"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"5809:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5837:35:115","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5859:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"5867:4:115","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5855:3:115"},"nodeType":"YulFunctionCall","src":"5855:17:115"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"5841:10:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"5931:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"5933:7:115"},"nodeType":"YulFunctionCall","src":"5933:9:115"},"nodeType":"YulExpressionStatement","src":"5933:9:115"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5890:10:115"},{"name":"_1","nodeType":"YulIdentifier","src":"5902:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5887:2:115"},"nodeType":"YulFunctionCall","src":"5887:18:115"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5910:10:115"},{"name":"memPtr","nodeType":"YulIdentifier","src":"5922:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5907:2:115"},"nodeType":"YulFunctionCall","src":"5907:22:115"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5884:2:115"},"nodeType":"YulFunctionCall","src":"5884:46:115"},"nodeType":"YulIf","src":"5881:2:115"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5960:2:115","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5964:10:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5953:6:115"},"nodeType":"YulFunctionCall","src":"5953:22:115"},"nodeType":"YulExpressionStatement","src":"5953:22:115"},{"nodeType":"YulVariableDeclaration","src":"5984:32:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6013:2:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6000:12:115"},"nodeType":"YulFunctionCall","src":"6000:16:115"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"5988:8:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"6045:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6054:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"6062:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6047:6:115"},"nodeType":"YulFunctionCall","src":"6047:22:115"},"nodeType":"YulExpressionStatement","src":"6047:22:115"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"6031:8:115"},{"name":"_1","nodeType":"YulIdentifier","src":"6041:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6028:2:115"},"nodeType":"YulFunctionCall","src":"6028:16:115"},"nodeType":"YulIf","src":"6025:2:115"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6087:6:115"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6118:2:115"},{"name":"offset_1","nodeType":"YulIdentifier","src":"6122:8:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6114:3:115"},"nodeType":"YulFunctionCall","src":"6114:17:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6133:7:115"}],"functionName":{"name":"abi_decode_t_bytes","nodeType":"YulIdentifier","src":"6095:18:115"},"nodeType":"YulFunctionCall","src":"6095:46:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6080:6:115"},"nodeType":"YulFunctionCall","src":"6080:62:115"},"nodeType":"YulExpressionStatement","src":"6080:62:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6162:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6170:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6158:3:115"},"nodeType":"YulFunctionCall","src":"6158:15:115"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6200:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"6204:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6196:3:115"},"nodeType":"YulFunctionCall","src":"6196:11:115"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6175:20:115"},"nodeType":"YulFunctionCall","src":"6175:33:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6151:6:115"},"nodeType":"YulFunctionCall","src":"6151:58:115"},"nodeType":"YulExpressionStatement","src":"6151:58:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6229:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6237:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6225:3:115"},"nodeType":"YulFunctionCall","src":"6225:15:115"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6259:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"6263:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6255:3:115"},"nodeType":"YulFunctionCall","src":"6255:11:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6242:12:115"},"nodeType":"YulFunctionCall","src":"6242:25:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6218:6:115"},"nodeType":"YulFunctionCall","src":"6218:50:115"},"nodeType":"YulExpressionStatement","src":"6218:50:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6288:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6296:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6284:3:115"},"nodeType":"YulFunctionCall","src":"6284:15:115"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6318:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"6322:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6314:3:115"},"nodeType":"YulFunctionCall","src":"6314:11:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6301:12:115"},"nodeType":"YulFunctionCall","src":"6301:25:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6277:6:115"},"nodeType":"YulFunctionCall","src":"6277:50:115"},"nodeType":"YulExpressionStatement","src":"6277:50:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6347:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6355:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6343:3:115"},"nodeType":"YulFunctionCall","src":"6343:16:115"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6378:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"6382:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6374:3:115"},"nodeType":"YulFunctionCall","src":"6374:12:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6361:12:115"},"nodeType":"YulFunctionCall","src":"6361:26:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6336:6:115"},"nodeType":"YulFunctionCall","src":"6336:52:115"},"nodeType":"YulExpressionStatement","src":"6336:52:115"},{"nodeType":"YulAssignment","src":"6397:16:115","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"6407:6:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6397:6:115"}]}]},"name":"abi_decode_tuple_t_struct$_ExactInputParams_$10088_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5447:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5458:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5470:6:115","type":""}],"src":"5376:1043:115"},{"body":{"nodeType":"YulBlock","src":"6537:170:115","statements":[{"body":{"nodeType":"YulBlock","src":"6584:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6593:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"6601:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6586:6:115"},"nodeType":"YulFunctionCall","src":"6586:22:115"},"nodeType":"YulExpressionStatement","src":"6586:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6558:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"6567:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6554:3:115"},"nodeType":"YulFunctionCall","src":"6554:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"6579:3:115","type":"","value":"256"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6550:3:115"},"nodeType":"YulFunctionCall","src":"6550:33:115"},"nodeType":"YulIf","src":"6547:2:115"},{"nodeType":"YulAssignment","src":"6619:82:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6682:9:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6693:7:115"}],"functionName":{"name":"abi_decode_t_struct$_ExactInputSingleParams_calldata","nodeType":"YulIdentifier","src":"6629:52:115"},"nodeType":"YulFunctionCall","src":"6629:72:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6619:6:115"}]}]},"name":"abi_decode_tuple_t_struct$_ExactInputSingleParams_$10069_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6503:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6514:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6526:6:115","type":""}],"src":"6424:283:115"},{"body":{"nodeType":"YulBlock","src":"6820:320:115","statements":[{"body":{"nodeType":"YulBlock","src":"6866:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6875:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"6883:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6868:6:115"},"nodeType":"YulFunctionCall","src":"6868:22:115"},"nodeType":"YulExpressionStatement","src":"6868:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6841:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"6850:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6837:3:115"},"nodeType":"YulFunctionCall","src":"6837:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"6862:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6833:3:115"},"nodeType":"YulFunctionCall","src":"6833:32:115"},"nodeType":"YulIf","src":"6830:2:115"},{"nodeType":"YulVariableDeclaration","src":"6901:37:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6928:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6915:12:115"},"nodeType":"YulFunctionCall","src":"6915:23:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6905:6:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"6981:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6990:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"6998:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6983:6:115"},"nodeType":"YulFunctionCall","src":"6983:22:115"},"nodeType":"YulExpressionStatement","src":"6983:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6953:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6961:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6950:2:115"},"nodeType":"YulFunctionCall","src":"6950:30:115"},"nodeType":"YulIf","src":"6947:2:115"},{"nodeType":"YulVariableDeclaration","src":"7016:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7030:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"7041:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7026:3:115"},"nodeType":"YulFunctionCall","src":"7026:22:115"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7020:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"7087:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7096:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"7104:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7089:6:115"},"nodeType":"YulFunctionCall","src":"7089:22:115"},"nodeType":"YulExpressionStatement","src":"7089:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7068:7:115"},{"name":"_1","nodeType":"YulIdentifier","src":"7077:2:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7064:3:115"},"nodeType":"YulFunctionCall","src":"7064:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"7082:3:115","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7060:3:115"},"nodeType":"YulFunctionCall","src":"7060:26:115"},"nodeType":"YulIf","src":"7057:2:115"},{"nodeType":"YulAssignment","src":"7122:12:115","value":{"name":"_1","nodeType":"YulIdentifier","src":"7132:2:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7122:6:115"}]}]},"name":"abi_decode_tuple_t_struct$_ExactOutputParams_$10132_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6786:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6797:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6809:6:115","type":""}],"src":"6712:428:115"},{"body":{"nodeType":"YulBlock","src":"7259:170:115","statements":[{"body":{"nodeType":"YulBlock","src":"7306:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7315:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"7323:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7308:6:115"},"nodeType":"YulFunctionCall","src":"7308:22:115"},"nodeType":"YulExpressionStatement","src":"7308:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7280:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"7289:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7276:3:115"},"nodeType":"YulFunctionCall","src":"7276:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"7301:3:115","type":"","value":"256"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7272:3:115"},"nodeType":"YulFunctionCall","src":"7272:33:115"},"nodeType":"YulIf","src":"7269:2:115"},{"nodeType":"YulAssignment","src":"7341:82:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7404:9:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7415:7:115"}],"functionName":{"name":"abi_decode_t_struct$_ExactInputSingleParams_calldata","nodeType":"YulIdentifier","src":"7351:52:115"},"nodeType":"YulFunctionCall","src":"7351:72:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7341:6:115"}]}]},"name":"abi_decode_tuple_t_struct$_ExactOutputSingleParams_$10113_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7225:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7236:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7248:6:115","type":""}],"src":"7145:284:115"},{"body":{"nodeType":"YulBlock","src":"7538:824:115","statements":[{"body":{"nodeType":"YulBlock","src":"7584:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7593:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"7601:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7586:6:115"},"nodeType":"YulFunctionCall","src":"7586:22:115"},"nodeType":"YulExpressionStatement","src":"7586:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7559:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"7568:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7555:3:115"},"nodeType":"YulFunctionCall","src":"7555:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"7580:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7551:3:115"},"nodeType":"YulFunctionCall","src":"7551:32:115"},"nodeType":"YulIf","src":"7548:2:115"},{"nodeType":"YulVariableDeclaration","src":"7619:37:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7646:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7633:12:115"},"nodeType":"YulFunctionCall","src":"7633:23:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7623:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7665:28:115","value":{"kind":"number","nodeType":"YulLiteral","src":"7675:18:115","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7669:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"7720:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7729:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"7737:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7722:6:115"},"nodeType":"YulFunctionCall","src":"7722:22:115"},"nodeType":"YulExpressionStatement","src":"7722:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7708:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"7716:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7705:2:115"},"nodeType":"YulFunctionCall","src":"7705:14:115"},"nodeType":"YulIf","src":"7702:2:115"},{"nodeType":"YulVariableDeclaration","src":"7755:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7769:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"7780:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7765:3:115"},"nodeType":"YulFunctionCall","src":"7765:22:115"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"7759:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"7827:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7836:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"7844:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7829:6:115"},"nodeType":"YulFunctionCall","src":"7829:22:115"},"nodeType":"YulExpressionStatement","src":"7829:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7807:7:115"},{"name":"_2","nodeType":"YulIdentifier","src":"7816:2:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7803:3:115"},"nodeType":"YulFunctionCall","src":"7803:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"7821:4:115","type":"","value":"0x40"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7799:3:115"},"nodeType":"YulFunctionCall","src":"7799:27:115"},"nodeType":"YulIf","src":"7796:2:115"},{"nodeType":"YulVariableDeclaration","src":"7862:25:115","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7882:4:115","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7876:5:115"},"nodeType":"YulFunctionCall","src":"7876:11:115"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7866:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7896:35:115","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7918:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"7926:4:115","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7914:3:115"},"nodeType":"YulFunctionCall","src":"7914:17:115"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7900:10:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"7990:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"7992:7:115"},"nodeType":"YulFunctionCall","src":"7992:9:115"},"nodeType":"YulExpressionStatement","src":"7992:9:115"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7949:10:115"},{"name":"_1","nodeType":"YulIdentifier","src":"7961:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7946:2:115"},"nodeType":"YulFunctionCall","src":"7946:18:115"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7969:10:115"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7981:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7966:2:115"},"nodeType":"YulFunctionCall","src":"7966:22:115"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7943:2:115"},"nodeType":"YulFunctionCall","src":"7943:46:115"},"nodeType":"YulIf","src":"7940:2:115"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8019:4:115","type":"","value":"0x40"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8025:10:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8012:6:115"},"nodeType":"YulFunctionCall","src":"8012:24:115"},"nodeType":"YulExpressionStatement","src":"8012:24:115"},{"nodeType":"YulVariableDeclaration","src":"8045:32:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"8074:2:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8061:12:115"},"nodeType":"YulFunctionCall","src":"8061:16:115"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"8049:8:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"8106:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8115:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"8123:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8108:6:115"},"nodeType":"YulFunctionCall","src":"8108:22:115"},"nodeType":"YulExpressionStatement","src":"8108:22:115"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"8092:8:115"},{"name":"_1","nodeType":"YulIdentifier","src":"8102:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8089:2:115"},"nodeType":"YulFunctionCall","src":"8089:16:115"},"nodeType":"YulIf","src":"8086:2:115"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8148:6:115"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"8179:2:115"},{"name":"offset_1","nodeType":"YulIdentifier","src":"8183:8:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8175:3:115"},"nodeType":"YulFunctionCall","src":"8175:17:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8194:7:115"}],"functionName":{"name":"abi_decode_t_bytes","nodeType":"YulIdentifier","src":"8156:18:115"},"nodeType":"YulFunctionCall","src":"8156:46:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8141:6:115"},"nodeType":"YulFunctionCall","src":"8141:62:115"},"nodeType":"YulExpressionStatement","src":"8141:62:115"},{"nodeType":"YulVariableDeclaration","src":"8212:38:115","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"8242:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"8246:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8238:3:115"},"nodeType":"YulFunctionCall","src":"8238:11:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8225:12:115"},"nodeType":"YulFunctionCall","src":"8225:25:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8216:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8286:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"8259:26:115"},"nodeType":"YulFunctionCall","src":"8259:33:115"},"nodeType":"YulExpressionStatement","src":"8259:33:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8312:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"8320:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8308:3:115"},"nodeType":"YulFunctionCall","src":"8308:15:115"},{"name":"value","nodeType":"YulIdentifier","src":"8325:5:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8301:6:115"},"nodeType":"YulFunctionCall","src":"8301:30:115"},"nodeType":"YulExpressionStatement","src":"8301:30:115"},{"nodeType":"YulAssignment","src":"8340:16:115","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"8350:6:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8340:6:115"}]}]},"name":"abi_decode_tuple_t_struct$_SwapCallbackData_$7269_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7504:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7515:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7527:6:115","type":""}],"src":"7434:928:115"},{"body":{"nodeType":"YulBlock","src":"8437:189:115","statements":[{"body":{"nodeType":"YulBlock","src":"8483:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8492:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"8500:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8485:6:115"},"nodeType":"YulFunctionCall","src":"8485:22:115"},"nodeType":"YulExpressionStatement","src":"8485:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8458:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"8467:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8454:3:115"},"nodeType":"YulFunctionCall","src":"8454:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"8479:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8450:3:115"},"nodeType":"YulFunctionCall","src":"8450:32:115"},"nodeType":"YulIf","src":"8447:2:115"},{"nodeType":"YulVariableDeclaration","src":"8518:36:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8544:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8531:12:115"},"nodeType":"YulFunctionCall","src":"8531:23:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8522:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8590:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"8563:26:115"},"nodeType":"YulFunctionCall","src":"8563:33:115"},"nodeType":"YulExpressionStatement","src":"8563:33:115"},{"nodeType":"YulAssignment","src":"8605:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"8615:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8605:6:115"}]}]},"name":"abi_decode_tuple_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8403:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8414:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8426:6:115","type":""}],"src":"8367:259:115"},{"body":{"nodeType":"YulBlock","src":"8700:225:115","statements":[{"body":{"nodeType":"YulBlock","src":"8746:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8755:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"8763:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8748:6:115"},"nodeType":"YulFunctionCall","src":"8748:22:115"},"nodeType":"YulExpressionStatement","src":"8748:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8721:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"8730:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8717:3:115"},"nodeType":"YulFunctionCall","src":"8717:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"8742:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8713:3:115"},"nodeType":"YulFunctionCall","src":"8713:32:115"},"nodeType":"YulIf","src":"8710:2:115"},{"nodeType":"YulVariableDeclaration","src":"8781:36:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8807:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8794:12:115"},"nodeType":"YulFunctionCall","src":"8794:23:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8785:5:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"8869:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8878:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"8886:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8871:6:115"},"nodeType":"YulFunctionCall","src":"8871:22:115"},"nodeType":"YulExpressionStatement","src":"8871:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8839:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8850:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"8857:8:115","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8846:3:115"},"nodeType":"YulFunctionCall","src":"8846:20:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8836:2:115"},"nodeType":"YulFunctionCall","src":"8836:31:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8829:6:115"},"nodeType":"YulFunctionCall","src":"8829:39:115"},"nodeType":"YulIf","src":"8826:2:115"},{"nodeType":"YulAssignment","src":"8904:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"8914:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8904:6:115"}]}]},"name":"abi_decode_tuple_t_uint24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8666:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8677:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8689:6:115","type":""}],"src":"8631:294:115"},{"body":{"nodeType":"YulBlock","src":"9017:240:115","statements":[{"body":{"nodeType":"YulBlock","src":"9063:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9072:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"9080:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9065:6:115"},"nodeType":"YulFunctionCall","src":"9065:22:115"},"nodeType":"YulExpressionStatement","src":"9065:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9038:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"9047:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9034:3:115"},"nodeType":"YulFunctionCall","src":"9034:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"9059:2:115","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9030:3:115"},"nodeType":"YulFunctionCall","src":"9030:32:115"},"nodeType":"YulIf","src":"9027:2:115"},{"nodeType":"YulAssignment","src":"9098:33:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9121:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9108:12:115"},"nodeType":"YulFunctionCall","src":"9108:23:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9098:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"9140:45:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9170:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9181:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9166:3:115"},"nodeType":"YulFunctionCall","src":"9166:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9153:12:115"},"nodeType":"YulFunctionCall","src":"9153:32:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"9144:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9221:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"9194:26:115"},"nodeType":"YulFunctionCall","src":"9194:33:115"},"nodeType":"YulExpressionStatement","src":"9194:33:115"},{"nodeType":"YulAssignment","src":"9236:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"9246:5:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9236:6:115"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8975:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8986:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8998:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9006:6:115","type":""}],"src":"8930:327:115"},{"body":{"nodeType":"YulBlock","src":"9383:418:115","statements":[{"body":{"nodeType":"YulBlock","src":"9430:26:115","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"9439:6:115"},{"name":"value2","nodeType":"YulIdentifier","src":"9447:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9432:6:115"},"nodeType":"YulFunctionCall","src":"9432:22:115"},"nodeType":"YulExpressionStatement","src":"9432:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9404:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"9413:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9400:3:115"},"nodeType":"YulFunctionCall","src":"9400:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"9425:3:115","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9396:3:115"},"nodeType":"YulFunctionCall","src":"9396:33:115"},"nodeType":"YulIf","src":"9393:2:115"},{"nodeType":"YulAssignment","src":"9465:33:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9488:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9475:12:115"},"nodeType":"YulFunctionCall","src":"9475:23:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9465:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"9507:45:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9537:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9548:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9533:3:115"},"nodeType":"YulFunctionCall","src":"9533:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9520:12:115"},"nodeType":"YulFunctionCall","src":"9520:32:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"9511:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9588:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"9561:26:115"},"nodeType":"YulFunctionCall","src":"9561:33:115"},"nodeType":"YulExpressionStatement","src":"9561:33:115"},{"nodeType":"YulAssignment","src":"9603:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"9613:5:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9603:6:115"}]},{"nodeType":"YulAssignment","src":"9627:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9654:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9665:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9650:3:115"},"nodeType":"YulFunctionCall","src":"9650:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9637:12:115"},"nodeType":"YulFunctionCall","src":"9637:32:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"9627:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"9678:47:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9710:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9721:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9706:3:115"},"nodeType":"YulFunctionCall","src":"9706:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9693:12:115"},"nodeType":"YulFunctionCall","src":"9693:32:115"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"9682:7:115","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"9761:7:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"9734:26:115"},"nodeType":"YulFunctionCall","src":"9734:35:115"},"nodeType":"YulExpressionStatement","src":"9734:35:115"},{"nodeType":"YulAssignment","src":"9778:17:115","value":{"name":"value_1","nodeType":"YulIdentifier","src":"9788:7:115"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"9778:6:115"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9325:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9336:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9348:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9356:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9364:6:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9372:6:115","type":""}],"src":"9262:539:115"},{"body":{"nodeType":"YulBlock","src":"9857:267:115","statements":[{"nodeType":"YulVariableDeclaration","src":"9867:26:115","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9887:5:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9881:5:115"},"nodeType":"YulFunctionCall","src":"9881:12:115"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9871:6:115","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9909:3:115"},{"name":"length","nodeType":"YulIdentifier","src":"9914:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9902:6:115"},"nodeType":"YulFunctionCall","src":"9902:19:115"},"nodeType":"YulExpressionStatement","src":"9902:19:115"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9956:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"9963:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9952:3:115"},"nodeType":"YulFunctionCall","src":"9952:16:115"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9974:3:115"},{"kind":"number","nodeType":"YulLiteral","src":"9979:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9970:3:115"},"nodeType":"YulFunctionCall","src":"9970:14:115"},{"name":"length","nodeType":"YulIdentifier","src":"9986:6:115"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"9930:21:115"},"nodeType":"YulFunctionCall","src":"9930:63:115"},"nodeType":"YulExpressionStatement","src":"9930:63:115"},{"nodeType":"YulAssignment","src":"10002:116:115","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10017:3:115"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10030:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"10038:2:115","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10026:3:115"},"nodeType":"YulFunctionCall","src":"10026:15:115"},{"kind":"number","nodeType":"YulLiteral","src":"10043:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10022:3:115"},"nodeType":"YulFunctionCall","src":"10022:88:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10013:3:115"},"nodeType":"YulFunctionCall","src":"10013:98:115"},{"kind":"number","nodeType":"YulLiteral","src":"10113:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10009:3:115"},"nodeType":"YulFunctionCall","src":"10009:109:115"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10002:3:115"}]}]},"name":"abi_encode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9834:5:115","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9841:3:115","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9849:3:115","type":""}],"src":"9806:318:115"},{"body":{"nodeType":"YulBlock","src":"10302:341:115","statements":[{"nodeType":"YulVariableDeclaration","src":"10312:76:115","value":{"kind":"number","nodeType":"YulLiteral","src":"10322:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"10316:2:115","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10404:3:115"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10417:2:115","type":"","value":"96"},{"name":"value0","nodeType":"YulIdentifier","src":"10421:6:115"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10413:3:115"},"nodeType":"YulFunctionCall","src":"10413:15:115"},{"name":"_1","nodeType":"YulIdentifier","src":"10430:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10409:3:115"},"nodeType":"YulFunctionCall","src":"10409:24:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10397:6:115"},"nodeType":"YulFunctionCall","src":"10397:37:115"},"nodeType":"YulExpressionStatement","src":"10397:37:115"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10454:3:115"},{"kind":"number","nodeType":"YulLiteral","src":"10459:2:115","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10450:3:115"},"nodeType":"YulFunctionCall","src":"10450:12:115"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10472:3:115","type":"","value":"232"},{"name":"value1","nodeType":"YulIdentifier","src":"10477:6:115"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10468:3:115"},"nodeType":"YulFunctionCall","src":"10468:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"10486:66:115","type":"","value":"0xffffff0000000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10464:3:115"},"nodeType":"YulFunctionCall","src":"10464:89:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10443:6:115"},"nodeType":"YulFunctionCall","src":"10443:111:115"},"nodeType":"YulExpressionStatement","src":"10443:111:115"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10574:3:115"},{"kind":"number","nodeType":"YulLiteral","src":"10579:2:115","type":"","value":"23"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10570:3:115"},"nodeType":"YulFunctionCall","src":"10570:12:115"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10592:2:115","type":"","value":"96"},{"name":"value2","nodeType":"YulIdentifier","src":"10596:6:115"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10588:3:115"},"nodeType":"YulFunctionCall","src":"10588:15:115"},{"name":"_1","nodeType":"YulIdentifier","src":"10605:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10584:3:115"},"nodeType":"YulFunctionCall","src":"10584:24:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10563:6:115"},"nodeType":"YulFunctionCall","src":"10563:46:115"},"nodeType":"YulExpressionStatement","src":"10563:46:115"},{"nodeType":"YulAssignment","src":"10618:19:115","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10629:3:115"},{"kind":"number","nodeType":"YulLiteral","src":"10634:2:115","type":"","value":"43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10625:3:115"},"nodeType":"YulFunctionCall","src":"10625:12:115"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10618:3:115"}]}]},"name":"abi_encode_tuple_packed_t_address_t_uint24_t_address__to_t_address_t_uint24_t_address__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"10262:3:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10267:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10275:6:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10283:6:115","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10294:3:115","type":""}],"src":"10129:514:115"},{"body":{"nodeType":"YulBlock","src":"10795:126:115","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10818:3:115"},{"name":"value0","nodeType":"YulIdentifier","src":"10823:6:115"},{"name":"value1","nodeType":"YulIdentifier","src":"10831:6:115"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"10805:12:115"},"nodeType":"YulFunctionCall","src":"10805:33:115"},"nodeType":"YulExpressionStatement","src":"10805:33:115"},{"nodeType":"YulVariableDeclaration","src":"10847:26:115","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10861:3:115"},{"name":"value1","nodeType":"YulIdentifier","src":"10866:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10857:3:115"},"nodeType":"YulFunctionCall","src":"10857:16:115"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"10851:2:115","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"10889:2:115"},{"name":"end","nodeType":"YulIdentifier","src":"10893:3:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10882:6:115"},"nodeType":"YulFunctionCall","src":"10882:15:115"},"nodeType":"YulExpressionStatement","src":"10882:15:115"},{"nodeType":"YulAssignment","src":"10906:9:115","value":{"name":"_1","nodeType":"YulIdentifier","src":"10913:2:115"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10906:3:115"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"10763:3:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10768:6:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10776:6:115","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10787:3:115","type":""}],"src":"10648:273:115"},{"body":{"nodeType":"YulBlock","src":"11027:125:115","statements":[{"nodeType":"YulAssignment","src":"11037:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11049:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"11060:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11045:3:115"},"nodeType":"YulFunctionCall","src":"11045:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11037:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11079:9:115"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11094:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"11102:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11090:3:115"},"nodeType":"YulFunctionCall","src":"11090:55:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11072:6:115"},"nodeType":"YulFunctionCall","src":"11072:74:115"},"nodeType":"YulExpressionStatement","src":"11072:74:115"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10996:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11007:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11018:4:115","type":""}],"src":"10926:226:115"},{"body":{"nodeType":"YulBlock","src":"11380:370:115","statements":[{"nodeType":"YulVariableDeclaration","src":"11390:52:115","value":{"kind":"number","nodeType":"YulLiteral","src":"11400:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"11394:2:115","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11458:9:115"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11473:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"11481:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11469:3:115"},"nodeType":"YulFunctionCall","src":"11469:15:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11451:6:115"},"nodeType":"YulFunctionCall","src":"11451:34:115"},"nodeType":"YulExpressionStatement","src":"11451:34:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11505:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"11516:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11501:3:115"},"nodeType":"YulFunctionCall","src":"11501:18:115"},{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11535:6:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11528:6:115"},"nodeType":"YulFunctionCall","src":"11528:14:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11521:6:115"},"nodeType":"YulFunctionCall","src":"11521:22:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11494:6:115"},"nodeType":"YulFunctionCall","src":"11494:50:115"},"nodeType":"YulExpressionStatement","src":"11494:50:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11564:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"11575:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11560:3:115"},"nodeType":"YulFunctionCall","src":"11560:18:115"},{"name":"value2","nodeType":"YulIdentifier","src":"11580:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11553:6:115"},"nodeType":"YulFunctionCall","src":"11553:34:115"},"nodeType":"YulExpressionStatement","src":"11553:34:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11607:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"11618:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11603:3:115"},"nodeType":"YulFunctionCall","src":"11603:18:115"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"11627:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"11635:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11623:3:115"},"nodeType":"YulFunctionCall","src":"11623:15:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11596:6:115"},"nodeType":"YulFunctionCall","src":"11596:43:115"},"nodeType":"YulExpressionStatement","src":"11596:43:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11659:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"11670:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11655:3:115"},"nodeType":"YulFunctionCall","src":"11655:19:115"},{"kind":"number","nodeType":"YulLiteral","src":"11676:3:115","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11648:6:115"},"nodeType":"YulFunctionCall","src":"11648:32:115"},"nodeType":"YulExpressionStatement","src":"11648:32:115"},{"nodeType":"YulAssignment","src":"11689:55:115","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"11716:6:115"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11728:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"11739:3:115","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11724:3:115"},"nodeType":"YulFunctionCall","src":"11724:19:115"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"11697:18:115"},"nodeType":"YulFunctionCall","src":"11697:47:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11689:4:115"}]}]},"name":"abi_encode_tuple_t_address_t_bool_t_int256_t_uint160_t_bytes_memory_ptr__to_t_address_t_bool_t_int256_t_uint160_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11317:9:115","type":""},{"name":"value4","nodeType":"YulTypedName","src":"11328:6:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"11336:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11344:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11352:6:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11360:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11371:4:115","type":""}],"src":"11157:593:115"},{"body":{"nodeType":"YulBlock","src":"11924:696:115","statements":[{"nodeType":"YulVariableDeclaration","src":"11934:12:115","value":{"kind":"number","nodeType":"YulLiteral","src":"11944:2:115","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"11938:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11955:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11973:9:115"},{"name":"_1","nodeType":"YulIdentifier","src":"11984:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11969:3:115"},"nodeType":"YulFunctionCall","src":"11969:18:115"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"11959:6:115","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12003:9:115"},{"name":"_1","nodeType":"YulIdentifier","src":"12014:2:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11996:6:115"},"nodeType":"YulFunctionCall","src":"11996:21:115"},"nodeType":"YulExpressionStatement","src":"11996:21:115"},{"nodeType":"YulVariableDeclaration","src":"12026:17:115","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"12037:6:115"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"12030:3:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12052:27:115","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12072:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12066:5:115"},"nodeType":"YulFunctionCall","src":"12066:13:115"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"12056:6:115","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"12095:6:115"},{"name":"length","nodeType":"YulIdentifier","src":"12103:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12088:6:115"},"nodeType":"YulFunctionCall","src":"12088:22:115"},"nodeType":"YulExpressionStatement","src":"12088:22:115"},{"nodeType":"YulAssignment","src":"12119:25:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12130:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"12141:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12126:3:115"},"nodeType":"YulFunctionCall","src":"12126:18:115"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12119:3:115"}]},{"nodeType":"YulVariableDeclaration","src":"12153:54:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12175:9:115"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12190:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"12198:2:115"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"12186:3:115"},"nodeType":"YulFunctionCall","src":"12186:15:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12171:3:115"},"nodeType":"YulFunctionCall","src":"12171:31:115"},{"kind":"number","nodeType":"YulLiteral","src":"12204:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12167:3:115"},"nodeType":"YulFunctionCall","src":"12167:40:115"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"12157:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12216:29:115","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12234:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"12242:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12230:3:115"},"nodeType":"YulFunctionCall","src":"12230:15:115"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"12220:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12254:13:115","value":{"name":"tail","nodeType":"YulIdentifier","src":"12263:4:115"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"12258:1:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"12325:266:115","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12346:3:115"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12359:6:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"12367:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12355:3:115"},"nodeType":"YulFunctionCall","src":"12355:22:115"},{"kind":"number","nodeType":"YulLiteral","src":"12379:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12351:3:115"},"nodeType":"YulFunctionCall","src":"12351:95:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12339:6:115"},"nodeType":"YulFunctionCall","src":"12339:108:115"},"nodeType":"YulExpressionStatement","src":"12339:108:115"},{"nodeType":"YulAssignment","src":"12460:51:115","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"12495:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12489:5:115"},"nodeType":"YulFunctionCall","src":"12489:13:115"},{"name":"tail_2","nodeType":"YulIdentifier","src":"12504:6:115"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"12470:18:115"},"nodeType":"YulFunctionCall","src":"12470:41:115"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12460:6:115"}]},{"nodeType":"YulAssignment","src":"12524:25:115","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"12538:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"12546:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12534:3:115"},"nodeType":"YulFunctionCall","src":"12534:15:115"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"12524:6:115"}]},{"nodeType":"YulAssignment","src":"12562:19:115","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12573:3:115"},{"name":"_1","nodeType":"YulIdentifier","src":"12578:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12569:3:115"},"nodeType":"YulFunctionCall","src":"12569:12:115"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12562:3:115"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"12287:1:115"},{"name":"length","nodeType":"YulIdentifier","src":"12290:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"12284:2:115"},"nodeType":"YulFunctionCall","src":"12284:13:115"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"12298:18:115","statements":[{"nodeType":"YulAssignment","src":"12300:14:115","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"12309:1:115"},{"kind":"number","nodeType":"YulLiteral","src":"12312:1:115","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12305:3:115"},"nodeType":"YulFunctionCall","src":"12305:9:115"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"12300:1:115"}]}]},"pre":{"nodeType":"YulBlock","src":"12280:3:115","statements":[]},"src":"12276:315:115"},{"nodeType":"YulAssignment","src":"12600:14:115","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"12608:6:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12600:4:115"}]}]},"name":"abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11893:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11904:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11915:4:115","type":""}],"src":"11755:865:115"},{"body":{"nodeType":"YulBlock","src":"12746:100:115","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12763:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"12774:2:115","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12756:6:115"},"nodeType":"YulFunctionCall","src":"12756:21:115"},"nodeType":"YulExpressionStatement","src":"12756:21:115"},{"nodeType":"YulAssignment","src":"12786:54:115","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12813:6:115"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12825:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"12836:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12821:3:115"},"nodeType":"YulFunctionCall","src":"12821:18:115"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"12794:18:115"},"nodeType":"YulFunctionCall","src":"12794:46:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12786:4:115"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12715:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12726:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12737:4:115","type":""}],"src":"12625:221:115"},{"body":{"nodeType":"YulBlock","src":"13025:168:115","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13042:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13053:2:115","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13035:6:115"},"nodeType":"YulFunctionCall","src":"13035:21:115"},"nodeType":"YulExpressionStatement","src":"13035:21:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13076:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13087:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13072:3:115"},"nodeType":"YulFunctionCall","src":"13072:18:115"},{"kind":"number","nodeType":"YulLiteral","src":"13092:2:115","type":"","value":"18"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13065:6:115"},"nodeType":"YulFunctionCall","src":"13065:30:115"},"nodeType":"YulExpressionStatement","src":"13065:30:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13115:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13126:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13111:3:115"},"nodeType":"YulFunctionCall","src":"13111:18:115"},{"kind":"string","nodeType":"YulLiteral","src":"13131:20:115","type":"","value":"Too much requested"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13104:6:115"},"nodeType":"YulFunctionCall","src":"13104:48:115"},"nodeType":"YulExpressionStatement","src":"13104:48:115"},{"nodeType":"YulAssignment","src":"13161:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13173:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13184:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13169:3:115"},"nodeType":"YulFunctionCall","src":"13169:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13161:4:115"}]}]},"name":"abi_encode_tuple_t_stringliteral_a5c1362ddf12293b907d8907d79f16e40792a7ddc4f09ee6d70cfec4ad443305__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13002:9:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13016:4:115","type":""}],"src":"12851:342:115"},{"body":{"nodeType":"YulBlock","src":"13372:169:115","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13389:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13400:2:115","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13382:6:115"},"nodeType":"YulFunctionCall","src":"13382:21:115"},"nodeType":"YulExpressionStatement","src":"13382:21:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13423:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13434:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13419:3:115"},"nodeType":"YulFunctionCall","src":"13419:18:115"},{"kind":"number","nodeType":"YulLiteral","src":"13439:2:115","type":"","value":"19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13412:6:115"},"nodeType":"YulFunctionCall","src":"13412:30:115"},"nodeType":"YulExpressionStatement","src":"13412:30:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13462:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13473:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13458:3:115"},"nodeType":"YulFunctionCall","src":"13458:18:115"},{"kind":"string","nodeType":"YulLiteral","src":"13478:21:115","type":"","value":"Too little received"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13451:6:115"},"nodeType":"YulFunctionCall","src":"13451:49:115"},"nodeType":"YulExpressionStatement","src":"13451:49:115"},{"nodeType":"YulAssignment","src":"13509:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13521:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13532:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13517:3:115"},"nodeType":"YulFunctionCall","src":"13517:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13509:4:115"}]}]},"name":"abi_encode_tuple_t_stringliteral_f037a9cbca9be03859489f289f0cf5f85c0414bbfdd9785bc7ab31bd734e249c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13349:9:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13363:4:115","type":""}],"src":"13198:343:115"},{"body":{"nodeType":"YulBlock","src":"13715:328:115","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13732:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13743:2:115","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13725:6:115"},"nodeType":"YulFunctionCall","src":"13725:21:115"},"nodeType":"YulExpressionStatement","src":"13725:21:115"},{"nodeType":"YulVariableDeclaration","src":"13755:33:115","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13781:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13775:5:115"},"nodeType":"YulFunctionCall","src":"13775:13:115"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"13759:12:115","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13808:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13819:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13804:3:115"},"nodeType":"YulFunctionCall","src":"13804:18:115"},{"kind":"number","nodeType":"YulLiteral","src":"13824:4:115","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13797:6:115"},"nodeType":"YulFunctionCall","src":"13797:32:115"},"nodeType":"YulExpressionStatement","src":"13797:32:115"},{"nodeType":"YulVariableDeclaration","src":"13838:66:115","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"13871:12:115"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13889:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13900:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13885:3:115"},"nodeType":"YulFunctionCall","src":"13885:18:115"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"13852:18:115"},"nodeType":"YulFunctionCall","src":"13852:52:115"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"13842:6:115","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13924:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13935:4:115","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13920:3:115"},"nodeType":"YulFunctionCall","src":"13920:20:115"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13956:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"13964:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13952:3:115"},"nodeType":"YulFunctionCall","src":"13952:15:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13946:5:115"},"nodeType":"YulFunctionCall","src":"13946:22:115"},{"kind":"number","nodeType":"YulLiteral","src":"13970:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13942:3:115"},"nodeType":"YulFunctionCall","src":"13942:71:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13913:6:115"},"nodeType":"YulFunctionCall","src":"13913:101:115"},"nodeType":"YulExpressionStatement","src":"13913:101:115"},{"nodeType":"YulAssignment","src":"14023:14:115","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"14031:6:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14023:4:115"}]}]},"name":"abi_encode_tuple_t_struct$_SwapCallbackData_$7269_memory_ptr__to_t_struct$_SwapCallbackData_$7269_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13684:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13695:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13706:4:115","type":""}],"src":"13546:497:115"},{"body":{"nodeType":"YulBlock","src":"14149:76:115","statements":[{"nodeType":"YulAssignment","src":"14159:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14171:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"14182:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14167:3:115"},"nodeType":"YulFunctionCall","src":"14167:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14159:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14201:9:115"},{"name":"value0","nodeType":"YulIdentifier","src":"14212:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14194:6:115"},"nodeType":"YulFunctionCall","src":"14194:25:115"},"nodeType":"YulExpressionStatement","src":"14194:25:115"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14118:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14129:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14140:4:115","type":""}],"src":"14048:177:115"},{"body":{"nodeType":"YulBlock","src":"14324:498:115","statements":[{"nodeType":"YulVariableDeclaration","src":"14334:51:115","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"14373:11:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"14360:12:115"},"nodeType":"YulFunctionCall","src":"14360:25:115"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"14338:18:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"14533:22:115","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"14542:4:115"},{"name":"addr","nodeType":"YulIdentifier","src":"14548:4:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14535:6:115"},"nodeType":"YulFunctionCall","src":"14535:18:115"},"nodeType":"YulExpressionStatement","src":"14535:18:115"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"14408:18:115"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"14436:12:115"},"nodeType":"YulFunctionCall","src":"14436:14:115"},{"name":"base_ref","nodeType":"YulIdentifier","src":"14452:8:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14432:3:115"},"nodeType":"YulFunctionCall","src":"14432:29:115"},{"kind":"number","nodeType":"YulLiteral","src":"14463:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14428:3:115"},"nodeType":"YulFunctionCall","src":"14428:102:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"14404:3:115"},"nodeType":"YulFunctionCall","src":"14404:127:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"14397:6:115"},"nodeType":"YulFunctionCall","src":"14397:135:115"},"nodeType":"YulIf","src":"14394:2:115"},{"nodeType":"YulVariableDeclaration","src":"14564:47:115","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"14582:8:115"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"14592:18:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14578:3:115"},"nodeType":"YulFunctionCall","src":"14578:33:115"},"variables":[{"name":"addr_1","nodeType":"YulTypedName","src":"14568:6:115","type":""}]},{"nodeType":"YulAssignment","src":"14620:30:115","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"14643:6:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"14630:12:115"},"nodeType":"YulFunctionCall","src":"14630:20:115"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"14620:6:115"}]},{"body":{"nodeType":"YulBlock","src":"14693:22:115","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"14702:4:115"},{"name":"addr","nodeType":"YulIdentifier","src":"14708:4:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14695:6:115"},"nodeType":"YulFunctionCall","src":"14695:18:115"},"nodeType":"YulExpressionStatement","src":"14695:18:115"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14665:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"14673:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14662:2:115"},"nodeType":"YulFunctionCall","src":"14662:30:115"},"nodeType":"YulIf","src":"14659:2:115"},{"nodeType":"YulAssignment","src":"14724:25:115","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"14736:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"14744:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14732:3:115"},"nodeType":"YulFunctionCall","src":"14732:17:115"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"14724:4:115"}]},{"body":{"nodeType":"YulBlock","src":"14800:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14809:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14812:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14802:6:115"},"nodeType":"YulFunctionCall","src":"14802:12:115"},"nodeType":"YulExpressionStatement","src":"14802:12:115"}]},"condition":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"14765:4:115"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"14775:12:115"},"nodeType":"YulFunctionCall","src":"14775:14:115"},{"name":"length","nodeType":"YulIdentifier","src":"14791:6:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14771:3:115"},"nodeType":"YulFunctionCall","src":"14771:27:115"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"14761:3:115"},"nodeType":"YulFunctionCall","src":"14761:38:115"},"nodeType":"YulIf","src":"14758:2:115"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"14281:8:115","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"14291:11:115","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"14307:4:115","type":""},{"name":"length","nodeType":"YulTypedName","src":"14313:6:115","type":""}],"src":"14230:592:115"},{"body":{"nodeType":"YulBlock","src":"14871:198:115","statements":[{"nodeType":"YulAssignment","src":"14881:19:115","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14897:2:115","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14891:5:115"},"nodeType":"YulFunctionCall","src":"14891:9:115"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14881:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"14909:35:115","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14931:6:115"},{"name":"size","nodeType":"YulIdentifier","src":"14939:4:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14927:3:115"},"nodeType":"YulFunctionCall","src":"14927:17:115"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"14913:10:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"15019:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"15021:7:115"},"nodeType":"YulFunctionCall","src":"15021:9:115"},"nodeType":"YulExpressionStatement","src":"15021:9:115"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"14962:10:115"},{"kind":"number","nodeType":"YulLiteral","src":"14974:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14959:2:115"},"nodeType":"YulFunctionCall","src":"14959:34:115"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"14998:10:115"},{"name":"memPtr","nodeType":"YulIdentifier","src":"15010:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"14995:2:115"},"nodeType":"YulFunctionCall","src":"14995:22:115"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"14956:2:115"},"nodeType":"YulFunctionCall","src":"14956:62:115"},"nodeType":"YulIf","src":"14953:2:115"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15048:2:115","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"15052:10:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15041:6:115"},"nodeType":"YulFunctionCall","src":"15041:22:115"},"nodeType":"YulExpressionStatement","src":"15041:22:115"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"14851:4:115","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"14860:6:115","type":""}],"src":"14827:242:115"},{"body":{"nodeType":"YulBlock","src":"15133:181:115","statements":[{"body":{"nodeType":"YulBlock","src":"15177:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"15179:7:115"},"nodeType":"YulFunctionCall","src":"15179:9:115"},"nodeType":"YulExpressionStatement","src":"15179:9:115"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"15149:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"15157:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15146:2:115"},"nodeType":"YulFunctionCall","src":"15146:30:115"},"nodeType":"YulIf","src":"15143:2:115"},{"nodeType":"YulAssignment","src":"15199:109:115","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"15219:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"15227:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15215:3:115"},"nodeType":"YulFunctionCall","src":"15215:17:115"},{"kind":"number","nodeType":"YulLiteral","src":"15234:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15211:3:115"},"nodeType":"YulFunctionCall","src":"15211:90:115"},{"kind":"number","nodeType":"YulLiteral","src":"15303:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15207:3:115"},"nodeType":"YulFunctionCall","src":"15207:101:115"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"15199:4:115"}]}]},"name":"array_allocation_size_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"15113:6:115","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"15124:4:115","type":""}],"src":"15074:240:115"},{"body":{"nodeType":"YulBlock","src":"15372:205:115","statements":[{"nodeType":"YulVariableDeclaration","src":"15382:10:115","value":{"kind":"number","nodeType":"YulLiteral","src":"15391:1:115","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"15386:1:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"15451:63:115","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"15476:3:115"},{"name":"i","nodeType":"YulIdentifier","src":"15481:1:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15472:3:115"},"nodeType":"YulFunctionCall","src":"15472:11:115"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"15495:3:115"},{"name":"i","nodeType":"YulIdentifier","src":"15500:1:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15491:3:115"},"nodeType":"YulFunctionCall","src":"15491:11:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15485:5:115"},"nodeType":"YulFunctionCall","src":"15485:18:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15465:6:115"},"nodeType":"YulFunctionCall","src":"15465:39:115"},"nodeType":"YulExpressionStatement","src":"15465:39:115"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"15412:1:115"},{"name":"length","nodeType":"YulIdentifier","src":"15415:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"15409:2:115"},"nodeType":"YulFunctionCall","src":"15409:13:115"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"15423:19:115","statements":[{"nodeType":"YulAssignment","src":"15425:15:115","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"15434:1:115"},{"kind":"number","nodeType":"YulLiteral","src":"15437:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15430:3:115"},"nodeType":"YulFunctionCall","src":"15430:10:115"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"15425:1:115"}]}]},"pre":{"nodeType":"YulBlock","src":"15405:3:115","statements":[]},"src":"15401:113:115"},{"body":{"nodeType":"YulBlock","src":"15540:31:115","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"15553:3:115"},{"name":"length","nodeType":"YulIdentifier","src":"15558:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15549:3:115"},"nodeType":"YulFunctionCall","src":"15549:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"15567:1:115","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15542:6:115"},"nodeType":"YulFunctionCall","src":"15542:27:115"},"nodeType":"YulExpressionStatement","src":"15542:27:115"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"15529:1:115"},{"name":"length","nodeType":"YulIdentifier","src":"15532:6:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15526:2:115"},"nodeType":"YulFunctionCall","src":"15526:13:115"},"nodeType":"YulIf","src":"15523:2:115"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"15350:3:115","type":""},{"name":"dst","nodeType":"YulTypedName","src":"15355:3:115","type":""},{"name":"length","nodeType":"YulTypedName","src":"15360:6:115","type":""}],"src":"15319:258:115"},{"body":{"nodeType":"YulBlock","src":"15629:109:115","statements":[{"body":{"nodeType":"YulBlock","src":"15716:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15725:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15728:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"15718:6:115"},"nodeType":"YulFunctionCall","src":"15718:12:115"},"nodeType":"YulExpressionStatement","src":"15718:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15652:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15663:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"15670:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15659:3:115"},"nodeType":"YulFunctionCall","src":"15659:54:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"15649:2:115"},"nodeType":"YulFunctionCall","src":"15649:65:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"15642:6:115"},"nodeType":"YulFunctionCall","src":"15642:73:115"},"nodeType":"YulIf","src":"15639:2:115"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15618:5:115","type":""}],"src":"15582:156:115"}]},"contents":"{\n    { }\n    function abi_decode_t_address(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_t_address(value)\n    }\n    function abi_decode_t_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        let array_1 := allocateMemory(array_allocation_size_t_bytes(_1))\n        mstore(array_1, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(array, array) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(array_1, _1), 0x20), array)\n        array := array_1\n    }\n    function abi_decode_t_struct$_ExactInputSingleParams_calldata(offset, end) -> value\n    {\n        if slt(sub(end, offset), 256) { revert(value, value) }\n        value := offset\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_addresst_uint256t_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value1, value1) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_t_address(value_1)\n        value2 := value_1\n    }\n    function abi_decode_tuple_t_addresst_uint256t_addresst_uint256t_address(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_t_address(value_1)\n        value2 := value_1\n        value3 := calldataload(add(headStart, 96))\n        let value_2 := calldataload(add(headStart, 128))\n        validator_revert_t_address(value_2)\n        value4 := value_2\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(value5, value5) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let value_1 := calldataload(add(headStart, 96))\n        if iszero(eq(value_1, and(value_1, 0xff))) { revert(value5, value5) }\n        value3 := value_1\n        value4 := calldataload(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n    }\n    function abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value0, value0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(value0, value0) }\n        if gt(add(add(_2, mul(length, 32)), 32), dataEnd) { revert(value0, value0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_decode_tuple_t_int256t_int256_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_int256t_int256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value2, value2) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value2, value2) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(value2, value2) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(value2, value2) }\n        value2 := add(_2, 32)\n        value3 := length\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _2 := mload(_1)\n        let array := allocateMemory(array_allocation_size_t_bytes(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(value0, value0) }\n        copy_memory_to_memory(add(_1, 32), add(array, 32), _2)\n        value0 := array\n    }\n    function abi_decode_tuple_t_struct$_ExactInputParams_$10088_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if slt(sub(dataEnd, _2), 0xa0) { revert(value0, value0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0xa0)\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n        let offset_1 := calldataload(_2)\n        if gt(offset_1, _1) { revert(value0, value0) }\n        mstore(memPtr, abi_decode_t_bytes(add(_2, offset_1), dataEnd))\n        mstore(add(memPtr, 32), abi_decode_t_address(add(_2, 32)))\n        mstore(add(memPtr, 64), calldataload(add(_2, 64)))\n        mstore(add(memPtr, 96), calldataload(add(_2, 96)))\n        mstore(add(memPtr, 128), calldataload(add(_2, 128)))\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_struct$_ExactInputSingleParams_$10069_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 256) { revert(value0, value0) }\n        value0 := abi_decode_t_struct$_ExactInputSingleParams_calldata(headStart, dataEnd)\n    }\n    function abi_decode_tuple_t_struct$_ExactOutputParams_$10132_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        let _1 := add(headStart, offset)\n        if slt(sub(dataEnd, _1), 160) { revert(value0, value0) }\n        value0 := _1\n    }\n    function abi_decode_tuple_t_struct$_ExactOutputSingleParams_$10113_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 256) { revert(value0, value0) }\n        value0 := abi_decode_t_struct$_ExactInputSingleParams_calldata(headStart, dataEnd)\n    }\n    function abi_decode_tuple_t_struct$_SwapCallbackData_$7269_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if slt(sub(dataEnd, _2), 0x40) { revert(value0, value0) }\n        let memPtr := mload(0x40)\n        let newFreePtr := add(memPtr, 0x40)\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(0x40, newFreePtr)\n        let offset_1 := calldataload(_2)\n        if gt(offset_1, _1) { revert(value0, value0) }\n        mstore(memPtr, abi_decode_t_bytes(add(_2, offset_1), dataEnd))\n        let value := calldataload(add(_2, 32))\n        validator_revert_t_address(value)\n        mstore(add(memPtr, 32), value)\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_uint160(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint24(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffff))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_t_address(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_uint256t_addresst_uint256t_address(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value2, value2) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_t_address(value)\n        value1 := value\n        value2 := calldataload(add(headStart, 64))\n        let value_1 := calldataload(add(headStart, 96))\n        validator_revert_t_address(value_1)\n        value3 := value_1\n    }\n    function abi_encode_t_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_packed_t_address_t_uint24_t_address__to_t_address_t_uint24_t_address__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000\n        mstore(pos, and(shl(96, value0), _1))\n        mstore(add(pos, 20), and(shl(232, value1), 0xffffff0000000000000000000000000000000000000000000000000000000000))\n        mstore(add(pos, 23), and(shl(96, value2), _1))\n        end := add(pos, 43)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, end)\n        end := _1\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_bool_t_int256_t_uint160_t_bytes_memory_ptr__to_t_address_t_bool_t_int256_t_uint160_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), iszero(iszero(value1)))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), 160)\n        tail := abi_encode_t_bytes(value4, add(headStart, 160))\n    }\n    function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let tail_2 := add(add(headStart, mul(length, _1)), 64)\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0))\n            tail_2 := abi_encode_t_bytes(mload(srcPtr), tail_2)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        tail := tail_2\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_t_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_a5c1362ddf12293b907d8907d79f16e40792a7ddc4f09ee6d70cfec4ad443305__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 18)\n        mstore(add(headStart, 64), \"Too much requested\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f037a9cbca9be03859489f289f0cf5f85c0414bbfdd9785bc7ab31bd734e249c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"Too little received\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_struct$_SwapCallbackData_$7269_memory_ptr__to_t_struct$_SwapCallbackData_$7269_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let memberValue0 := mload(value0)\n        mstore(add(headStart, 32), 0x40)\n        let tail_1 := abi_encode_t_bytes(memberValue0, add(headStart, 96))\n        mstore(add(headStart, 0x40), and(mload(add(value0, 32)), 0xffffffffffffffffffffffffffffffffffffffff))\n        tail := tail_1\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(addr, addr) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(addr, addr) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function allocateMemory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, size)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_t_bytes(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        size := add(and(add(length, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function validator_revert_t_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n}","id":115,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"8379":[{"length":32,"start":896},{"length":32,"start":3835},{"length":32,"start":9351}],"8383":[{"length":32,"start":303},{"length":32,"start":1718},{"length":32,"start":1782},{"length":32,"start":2080},{"length":32,"start":2505},{"length":32,"start":2803},{"length":32,"start":5472},{"length":32,"start":5568},{"length":32,"start":5697}]},"linkReferences":{},"object":"6080604052600436106101125760003560e01c8063c04b8d59116100a5578063db3e219811610074578063e0e189a011610059578063e0e189a014610302578063f28c049814610315578063f3995c6714610328576101bd565b8063db3e2198146102dc578063df2ab5bb146102ef576101bd565b8063c04b8d5914610299578063c2e3140a146102ac578063c45a0155146102bf578063c53af304146102d4576101bd565b806397e87d9d116100e157806397e87d9d14610240578063a4a78f0c14610253578063a98ce37f14610266578063ac9650d814610279576101bd565b806311c17848146101c2578063414bf389146101e25780634659a4941461020b57806390793ea81461021e576101bd565b366101bd573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101bb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e6f742053414d42000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b3480156101ce57600080fd5b506101bb6101dd366004612868565b61033b565b6101f56101f03660046129f8565b61048e565b6040516102029190612df1565b60405180910390f35b6101bb610219366004612776565b610600565b34801561022a57600080fd5b506102336106b4565b6040516102029190612c37565b6101bb61024e366004612b2e565b6106d8565b6101bb610261366004612776565b6108f0565b6101bb610274366004612aff565b6109c5565b61028c6102873660046127d6565b610b8b565b6040516102029190612caa565b6101f56102a736600461294d565b610ce5565b6101bb6102ba366004612776565b610e44565b3480156102cb57600080fd5b50610233610ef9565b6101bb610f1d565b6101f56102ea3660046129f8565b610f2f565b6101bb6102fd3660046126d7565b6110bf565b6101bb610310366004612718565b6111dc565b6101f5610323366004612a14565b611342565b6101bb610336366004612776565b611476565b600084138061034a5750600083135b61035357600080fd5b600061036182840184612a4c565b90506000806000610375846000015161150e565b9250925092506103a77f000000000000000000000000000000000000000000000000000000000000000084848461153f565b5060008060008a136103e8578473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161089610419565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16108a5b91509150811561043857610433858760200151338461155e565b610482565b85516104439061173c565b1561046857855161045390611748565b86526104628133600089611783565b50610482565b80600081905550839450610482858760200151338461155e565b50505050505050505050565b600081608001358061049e61193f565b111561050b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b6105b160a084013561052360808601606087016126b4565b610534610100870160e088016126b4565b604080518082019091528061054c60208a018a6126b4565b61055c60608b0160408c01612adc565b61056c60408c0160208d016126b4565b60405160200161057e93929190612bc1565b60405160208183030381529060405281526020013373ffffffffffffffffffffffffffffffffffffffff16815250611943565b91508260c001358210156105fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f190612d72565b60405180910390fd5b50919050565b604080517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e48101839052905173ffffffffffffffffffffffffffffffffffffffff881691638fcbaf0c9161010480830192600092919082900301818387803b1580156106a057600080fd5b505af1158015610482573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000821180156106e9575060648211155b6106f257600080fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561077b57600080fd5b505afa15801561078f573d6000803e3d6000fd5b505050506040513d60208110156107a557600080fd5b505190508481101561081857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e73756666696369656e742053414d42000000000000000000000000000000604482015290519081900360640190fd5b80156108e9577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561089157600080fd5b505af11580156108a5573d6000803e3d6000fd5b5050505060006127106108c18584611ac990919063ffffffff16565b816108c857fe5b04905080156108db576108db8382611aed565b6108e785828403611aed565b505b5050505050565b604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b15801561098557600080fd5b505afa158015610999573d6000803e3d6000fd5b505050506040513d60208110156109af57600080fd5b505110156108e7576108e7868686868686610600565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a4e57600080fd5b505afa158015610a62573d6000803e3d6000fd5b505050506040513d6020811015610a7857600080fd5b5051905082811015610aeb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e73756666696369656e742053414d42000000000000000000000000000000604482015290519081900360640190fd5b8015610b86577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b50505050610b868282611aed565b505050565b60608167ffffffffffffffff81118015610ba457600080fd5b50604051908082528060200260200182016040528015610bd857816020015b6060815260200190600190039081610bc35790505b50905060005b82811015610cde5760008030868685818110610bf657fe5b9050602002810190610c089190612dfa565b604051610c16929190612c27565b600060405180830381855af49150503d8060008114610c51576040519150601f19603f3d011682016040523d82523d6000602084013e610c56565b606091505b509150915081610cbc57604481511015610c6f57600080fd5b60048101905080806020019051810190610c8991906128e3565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f19190612d28565b80848481518110610cc957fe5b60209081029190910101525050600101610bde565b5092915050565b6000816040015180610cf561193f565b1115610d6257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b335b6000610d73856000015161173c565b9050610dcc856060015182610d8c578660200151610d8e565b305b60006040518060400160405280610da88b60000151611c3b565b81526020018773ffffffffffffffffffffffffffffffffffffffff16815250611943565b60608601528015610dec578451309250610de590611748565b8552610df9565b8460600151935050610dff565b50610d64565b8360800151831015610e3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f190612d72565b5050919050565b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051869173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b158015610eb957600080fd5b505afa158015610ecd573d6000803e3d6000fd5b505050506040513d6020811015610ee357600080fd5b505110156108e7576108e7868686868686611476565b7f000000000000000000000000000000000000000000000000000000000000000081565b4715610f2d57610f2d3347611aed565b565b6000816080013580610f3f61193f565b1115610fac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b61105560a0840135610fc460808601606087016126b4565b610fd5610100870160e088016126b4565b6040518060400160405280886020016020810190610ff391906126b4565b61100360608b0160408c01612adc565b61101060208c018c6126b4565b60405160200161102293929190612bc1565b60405160208183030381529060405281526020013373ffffffffffffffffffffffffffffffffffffffff16815250611783565b91508260c00135821115611095576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f190612d3b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600055919050565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561112857600080fd5b505afa15801561113c573d6000803e3d6000fd5b505050506040513d602081101561115257600080fd5b50519050828110156111c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b80156111d6576111d6848383611c4a565b50505050565b6000821180156111ed575060648211155b6111f657600080fd5b60008573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561125f57600080fd5b505afa158015611273573d6000803e3d6000fd5b505050506040513d602081101561128957600080fd5b50519050848110156112fc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b80156108e75760006127106113118386611ac9565b8161131857fe5b049050801561132c5761132c878483611c4a565b6113398786838503611c4a565b50505050505050565b600081604001358061135261193f565b11156113bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b61143260608401356113d760408601602087016126b4565b60408051808201909152600090806113ef8980612dfa565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525033602090910152611783565b5060005491508260800135821115611095576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f190612d3b565b604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c48101839052905173ffffffffffffffffffffffffffffffffffffffff88169163d505accf9160e480830192600092919082900301818387803b1580156106a057600080fd5b6000808061151c8482611e1f565b9250611529846014611f1f565b9050611536846017611e1f565b91509193909250565b60006115558561155086868661200f565b61208c565b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156115b95750804710155b15611702577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561162657600080fd5b505af115801561163a573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156116d057600080fd5b505af11580156116e4573d6000803e3d6000fd5b505050506040513d60208110156116fa57600080fd5b506111d69050565b73ffffffffffffffffffffffffffffffffffffffff83163014156117305761172b848383611c4a565b6111d6565b6111d6848484846120bc565b8051604211155b919050565b805160609061177d9083906017907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe901612299565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff84166117a4573093505b60008060006117b6856000015161150e565b9194509250905073ffffffffffffffffffffffffffffffffffffffff808416908316106000806117e7858786612480565b73ffffffffffffffffffffffffffffffffffffffff1663128acb088b8561180d8f6124be565b60000373ffffffffffffffffffffffffffffffffffffffff8e1615611832578d611858565b876118515773fffd8963efd1fc6a506488495d951d5263988d25611858565b6401000276a45b8d6040516020016118699190612da9565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401611898959493929190612c58565b6040805180830381600087803b1580156118b157600080fd5b505af11580156118c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e99190612845565b915091506000836118fe578183600003611904565b82826000035b909850905073ffffffffffffffffffffffffffffffffffffffff8a16611930578b811461193057600080fd5b50505050505050949350505050565b4290565b600073ffffffffffffffffffffffffffffffffffffffff8416611964573093505b6000806000611976856000015161150e565b9194509250905073ffffffffffffffffffffffffffffffffffffffff808316908416106000806119a7868686612480565b73ffffffffffffffffffffffffffffffffffffffff1663128acb088b856119cd8f6124be565b73ffffffffffffffffffffffffffffffffffffffff8e16156119ef578d611a15565b87611a0e5773fffd8963efd1fc6a506488495d951d5263988d25611a15565b6401000276a45b8d604051602001611a269190612da9565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401611a55959493929190612c58565b6040805180830381600087803b158015611a6e57600080fd5b505af1158015611a82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa69190612845565b9150915082611ab55781611ab7565b805b6000039b9a5050505050505050505050565b6000821580611ae457505081810281838281611ae157fe5b04145b61177d57600080fd5b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310611b6457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611b27565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611bc6576040519150601f19603f3d011682016040523d82523d6000602084013e611bcb565b606091505b5050905080610b8657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b606061177d826000602b612299565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b60208310611d1f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611ce2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611d81576040519150601f19603f3d011682016040523d82523d6000602084013e611d86565b606091505b5091509150818015611db4575080511580611db45750808060200190516020811015611db157600080fd5b50515b6108e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600081826014011015611e9357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015611f0657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015611f9357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b816003018351101561200657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b612017612626565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16111561204f579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b600061209883836124f0565b90503373ffffffffffffffffffffffffffffffffffffffff82161461177d57600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000178152925182516000948594938a169392918291908083835b6020831061219957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161215c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146121fb576040519150601f19603f3d011682016040523d82523d6000602084013e612200565b606091505b509150915081801561222e57508051158061222e575080806020019051602081101561222b57600080fd5b50515b6108e757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354460000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60608182601f01101561230d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b82828401101561237e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b818301845110156123f057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b60608215801561240f5760405191506000825260208201604052612477565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612448578051835260209283019201612430565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b60006124b67f00000000000000000000000000000000000000000000000000000000000000006124b186868661200f565b6124f0565b949350505050565b60007f800000000000000000000000000000000000000000000000000000000000000082106124ec57600080fd5b5090565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff161061253257600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0460d5808301919091528251808303909101815260f5909101909152805191012090565b604080516060810182526000808252602082018190529181019190915290565b803561174381612ef4565b600082601f830112612661578081fd5b813561267461266f82612e88565b612e64565b818152846020838601011115612688578283fd5b816020850160208301379081016020019190915292915050565b600061010082840312156105fa578081fd5b6000602082840312156126c5578081fd5b81356126d081612ef4565b9392505050565b6000806000606084860312156126eb578182fd5b83356126f681612ef4565b925060208401359150604084013561270d81612ef4565b809150509250925092565b600080600080600060a0868803121561272f578081fd5b853561273a81612ef4565b945060208601359350604086013561275181612ef4565b925060608601359150608086013561276881612ef4565b809150509295509295909350565b60008060008060008060c0878903121561278e578081fd5b863561279981612ef4565b95506020870135945060408701359350606087013560ff811681146127bc578182fd5b9598949750929560808101359460a0909101359350915050565b600080602083850312156127e8578182fd5b823567ffffffffffffffff808211156127ff578384fd5b818501915085601f830112612812578384fd5b813581811115612820578485fd5b8660208083028501011115612833578485fd5b60209290920196919550909350505050565b60008060408385031215612857578182fd5b505080516020909101519092909150565b6000806000806060858703121561287d578182fd5b8435935060208501359250604085013567ffffffffffffffff808211156128a2578384fd5b818701915087601f8301126128b5578384fd5b8135818111156128c3578485fd5b8860208285010111156128d4578485fd5b95989497505060200194505050565b6000602082840312156128f4578081fd5b815167ffffffffffffffff81111561290a578182fd5b8201601f8101841361291a578182fd5b805161292861266f82612e88565b81815285602083850101111561293c578384fd5b611555826020830160208601612ec8565b60006020828403121561295e578081fd5b813567ffffffffffffffff80821115612975578283fd5b9083019060a08286031215612988578283fd5b60405160a08101818110838211171561299d57fe5b6040528235828111156129ae578485fd5b6129ba87828601612651565b8252506129c960208401612646565b602082015260408301356040820152606083013560608201526080830135608082015280935050505092915050565b60006101008284031215612a0a578081fd5b6126d083836126a2565b600060208284031215612a25578081fd5b813567ffffffffffffffff811115612a3b578182fd5b820160a081850312156126d0578182fd5b600060208284031215612a5d578081fd5b813567ffffffffffffffff80821115612a74578283fd5b9083019060408286031215612a87578283fd5b604051604081018181108382111715612a9c57fe5b604052823582811115612aad578485fd5b612ab987828601612651565b82525060208301359250612acc83612ef4565b6020810192909252509392505050565b600060208284031215612aed578081fd5b813562ffffff811681146126d0578182fd5b60008060408385031215612b11578182fd5b823591506020830135612b2381612ef4565b809150509250929050565b60008060008060808587031215612b43578182fd5b843593506020850135612b5581612ef4565b9250604085013591506060850135612b6c81612ef4565b939692955090935050565b60008151808452612b8f816020860160208601612ec8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6000828483379101908152919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a06080830152612c9f60a0830184612b77565b979650505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015612d1b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452612d09858351612b77565b94509285019290850190600101612ccf565b5092979650505050505050565b6000602082526126d06020830184612b77565b60208082526012908201527f546f6f206d756368207265717565737465640000000000000000000000000000604082015260600190565b60208082526013908201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604082015260600190565b600060208252825160406020840152612dc56060840182612b77565b905073ffffffffffffffffffffffffffffffffffffffff60208501511660408401528091505092915050565b90815260200190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e2e578283fd5b83018035915067ffffffffffffffff821115612e48578283fd5b602001915036819003821315612e5d57600080fd5b9250929050565b60405181810167ffffffffffffffff81118282101715612e8057fe5b604052919050565b600067ffffffffffffffff821115612e9c57fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015612ee3578181015183820152602001612ecb565b838111156111d65750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114612f1657600080fd5b5056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x112 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC04B8D59 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xDB3E2198 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xE0E189A0 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE0E189A0 EQ PUSH2 0x302 JUMPI DUP1 PUSH4 0xF28C0498 EQ PUSH2 0x315 JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x328 JUMPI PUSH2 0x1BD JUMP JUMPDEST DUP1 PUSH4 0xDB3E2198 EQ PUSH2 0x2DC JUMPI DUP1 PUSH4 0xDF2AB5BB EQ PUSH2 0x2EF JUMPI PUSH2 0x1BD JUMP JUMPDEST DUP1 PUSH4 0xC04B8D59 EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0xC53AF304 EQ PUSH2 0x2D4 JUMPI PUSH2 0x1BD JUMP JUMPDEST DUP1 PUSH4 0x97E87D9D GT PUSH2 0xE1 JUMPI DUP1 PUSH4 0x97E87D9D EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0xA98CE37F EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x279 JUMPI PUSH2 0x1BD JUMP JUMPDEST DUP1 PUSH4 0x11C17848 EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x414BF389 EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0x4659A494 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x90793EA8 EQ PUSH2 0x21E JUMPI PUSH2 0x1BD JUMP JUMPDEST CALLDATASIZE PUSH2 0x1BD JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x1BB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F742053414D42000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BB PUSH2 0x1DD CALLDATASIZE PUSH1 0x4 PUSH2 0x2868 JUMP JUMPDEST PUSH2 0x33B JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x1F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x29F8 JUMP JUMPDEST PUSH2 0x48E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x202 SWAP2 SWAP1 PUSH2 0x2DF1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BB PUSH2 0x219 CALLDATASIZE PUSH1 0x4 PUSH2 0x2776 JUMP JUMPDEST PUSH2 0x600 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x6B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x202 SWAP2 SWAP1 PUSH2 0x2C37 JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x24E CALLDATASIZE PUSH1 0x4 PUSH2 0x2B2E JUMP JUMPDEST PUSH2 0x6D8 JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x261 CALLDATASIZE PUSH1 0x4 PUSH2 0x2776 JUMP JUMPDEST PUSH2 0x8F0 JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x274 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AFF JUMP JUMPDEST PUSH2 0x9C5 JUMP JUMPDEST PUSH2 0x28C PUSH2 0x287 CALLDATASIZE PUSH1 0x4 PUSH2 0x27D6 JUMP JUMPDEST PUSH2 0xB8B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x202 SWAP2 SWAP1 PUSH2 0x2CAA JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x2A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x294D JUMP JUMPDEST PUSH2 0xCE5 JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x2BA CALLDATASIZE PUSH1 0x4 PUSH2 0x2776 JUMP JUMPDEST PUSH2 0xE44 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0xEF9 JUMP JUMPDEST PUSH2 0x1BB PUSH2 0xF1D JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x2EA CALLDATASIZE PUSH1 0x4 PUSH2 0x29F8 JUMP JUMPDEST PUSH2 0xF2F JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x2FD CALLDATASIZE PUSH1 0x4 PUSH2 0x26D7 JUMP JUMPDEST PUSH2 0x10BF JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x310 CALLDATASIZE PUSH1 0x4 PUSH2 0x2718 JUMP JUMPDEST PUSH2 0x11DC JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x323 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A14 JUMP JUMPDEST PUSH2 0x1342 JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x336 CALLDATASIZE PUSH1 0x4 PUSH2 0x2776 JUMP JUMPDEST PUSH2 0x1476 JUMP JUMPDEST PUSH1 0x0 DUP5 SGT DUP1 PUSH2 0x34A JUMPI POP PUSH1 0x0 DUP4 SGT JUMPDEST PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x361 DUP3 DUP5 ADD DUP5 PUSH2 0x2A4C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x375 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x150E JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x3A7 PUSH32 0x0 DUP5 DUP5 DUP5 PUSH2 0x153F JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP11 SGT PUSH2 0x3E8 JUMPI DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT DUP10 PUSH2 0x419 JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT DUP11 JUMPDEST SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x438 JUMPI PUSH2 0x433 DUP6 DUP8 PUSH1 0x20 ADD MLOAD CALLER DUP5 PUSH2 0x155E JUMP JUMPDEST PUSH2 0x482 JUMP JUMPDEST DUP6 MLOAD PUSH2 0x443 SWAP1 PUSH2 0x173C JUMP JUMPDEST ISZERO PUSH2 0x468 JUMPI DUP6 MLOAD PUSH2 0x453 SWAP1 PUSH2 0x1748 JUMP JUMPDEST DUP7 MSTORE PUSH2 0x462 DUP2 CALLER PUSH1 0x0 DUP10 PUSH2 0x1783 JUMP JUMPDEST POP PUSH2 0x482 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP DUP4 SWAP5 POP PUSH2 0x482 DUP6 DUP8 PUSH1 0x20 ADD MLOAD CALLER DUP5 PUSH2 0x155E JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x80 ADD CALLDATALOAD DUP1 PUSH2 0x49E PUSH2 0x193F JUMP JUMPDEST GT ISZERO PUSH2 0x50B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x5B1 PUSH1 0xA0 DUP5 ADD CALLDATALOAD PUSH2 0x523 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x26B4 JUMP JUMPDEST PUSH2 0x534 PUSH2 0x100 DUP8 ADD PUSH1 0xE0 DUP9 ADD PUSH2 0x26B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH2 0x54C PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x26B4 JUMP JUMPDEST PUSH2 0x55C PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x2ADC JUMP JUMPDEST PUSH2 0x56C PUSH1 0x40 DUP13 ADD PUSH1 0x20 DUP14 ADD PUSH2 0x26B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x57E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2BC1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x1943 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0xC0 ADD CALLDATALOAD DUP3 LT ISZERO PUSH2 0x5FA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5F1 SWAP1 PUSH2 0x2D72 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x8FCBAF0C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xFF DUP6 AND PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xC4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xE4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0x8FCBAF0C SWAP2 PUSH2 0x104 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x482 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x6E9 JUMPI POP PUSH1 0x64 DUP3 GT ISZERO JUMPDEST PUSH2 0x6F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x77B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x78F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP5 DUP2 LT ISZERO PUSH2 0x818 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742053414D42000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x8E9 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x891 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x2710 PUSH2 0x8C1 DUP6 DUP5 PUSH2 0x1AC9 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x8C8 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x8DB JUMPI PUSH2 0x8DB DUP4 DUP3 PUSH2 0x1AED JUMP JUMPDEST PUSH2 0x8E7 DUP6 DUP3 DUP5 SUB PUSH2 0x1AED JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x985 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x999 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x8E7 JUMPI PUSH2 0x8E7 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x600 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA62 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0xAEB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742053414D42000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0xB86 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB78 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xB86 DUP3 DUP3 PUSH2 0x1AED JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xBA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xBD8 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xBC3 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xCDE JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0xBF6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xC08 SWAP2 SWAP1 PUSH2 0x2DFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC16 SWAP3 SWAP2 SWAP1 PUSH2 0x2C27 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xC51 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xC56 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xCBC JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0xC6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xC89 SWAP2 SWAP1 PUSH2 0x28E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5F1 SWAP2 SWAP1 PUSH2 0x2D28 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xCC9 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0xBDE JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD DUP1 PUSH2 0xCF5 PUSH2 0x193F JUMP JUMPDEST GT ISZERO PUSH2 0xD62 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER JUMPDEST PUSH1 0x0 PUSH2 0xD73 DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x173C JUMP JUMPDEST SWAP1 POP PUSH2 0xDCC DUP6 PUSH1 0x60 ADD MLOAD DUP3 PUSH2 0xD8C JUMPI DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0xD8E JUMP JUMPDEST ADDRESS JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xDA8 DUP12 PUSH1 0x0 ADD MLOAD PUSH2 0x1C3B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x1943 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE DUP1 ISZERO PUSH2 0xDEC JUMPI DUP5 MLOAD ADDRESS SWAP3 POP PUSH2 0xDE5 SWAP1 PUSH2 0x1748 JUMP JUMPDEST DUP6 MSTORE PUSH2 0xDF9 JUMP JUMPDEST DUP5 PUSH1 0x60 ADD MLOAD SWAP4 POP POP PUSH2 0xDFF JUMP JUMPDEST POP PUSH2 0xD64 JUMP JUMPDEST DUP4 PUSH1 0x80 ADD MLOAD DUP4 LT ISZERO PUSH2 0xE3D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5F1 SWAP1 PUSH2 0x2D72 JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xECD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x8E7 JUMPI PUSH2 0x8E7 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x1476 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST SELFBALANCE ISZERO PUSH2 0xF2D JUMPI PUSH2 0xF2D CALLER SELFBALANCE PUSH2 0x1AED JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x80 ADD CALLDATALOAD DUP1 PUSH2 0xF3F PUSH2 0x193F JUMP JUMPDEST GT ISZERO PUSH2 0xFAC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1055 PUSH1 0xA0 DUP5 ADD CALLDATALOAD PUSH2 0xFC4 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x26B4 JUMP JUMPDEST PUSH2 0xFD5 PUSH2 0x100 DUP8 ADD PUSH1 0xE0 DUP9 ADD PUSH2 0x26B4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xFF3 SWAP2 SWAP1 PUSH2 0x26B4 JUMP JUMPDEST PUSH2 0x1003 PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x2ADC JUMP JUMPDEST PUSH2 0x1010 PUSH1 0x20 DUP13 ADD DUP13 PUSH2 0x26B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1022 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2BC1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x1783 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0xC0 ADD CALLDATALOAD DUP3 GT ISZERO PUSH2 0x1095 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5F1 SWAP1 PUSH2 0x2D3B JUMP JUMPDEST POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x0 SSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1128 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x113C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x11C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E7420746F6B656E0000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x11D6 JUMPI PUSH2 0x11D6 DUP5 DUP4 DUP4 PUSH2 0x1C4A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x11ED JUMPI POP PUSH1 0x64 DUP3 GT ISZERO JUMPDEST PUSH2 0x11F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x125F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1273 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP5 DUP2 LT ISZERO PUSH2 0x12FC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E7420746F6B656E0000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x8E7 JUMPI PUSH1 0x0 PUSH2 0x2710 PUSH2 0x1311 DUP4 DUP7 PUSH2 0x1AC9 JUMP JUMPDEST DUP2 PUSH2 0x1318 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x132C JUMPI PUSH2 0x132C DUP8 DUP5 DUP4 PUSH2 0x1C4A JUMP JUMPDEST PUSH2 0x1339 DUP8 DUP7 DUP4 DUP6 SUB PUSH2 0x1C4A JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD CALLDATALOAD DUP1 PUSH2 0x1352 PUSH2 0x193F JUMP JUMPDEST GT ISZERO PUSH2 0x13BF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1432 PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH2 0x13D7 PUSH1 0x40 DUP7 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x26B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 DUP1 PUSH2 0x13EF DUP10 DUP1 PUSH2 0x2DFA JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP SWAP1 DUP3 MSTORE POP CALLER PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE PUSH2 0x1783 JUMP JUMPDEST POP PUSH1 0x0 SLOAD SWAP2 POP DUP3 PUSH1 0x80 ADD CALLDATALOAD DUP3 GT ISZERO PUSH2 0x1095 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5F1 SWAP1 PUSH2 0x2D3B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xFF DUP6 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x151C DUP5 DUP3 PUSH2 0x1E1F JUMP JUMPDEST SWAP3 POP PUSH2 0x1529 DUP5 PUSH1 0x14 PUSH2 0x1F1F JUMP JUMPDEST SWAP1 POP PUSH2 0x1536 DUP5 PUSH1 0x17 PUSH2 0x1E1F JUMP JUMPDEST SWAP2 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1555 DUP6 PUSH2 0x1550 DUP7 DUP7 DUP7 PUSH2 0x200F JUMP JUMPDEST PUSH2 0x208C JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x15B9 JUMPI POP DUP1 SELFBALANCE LT ISZERO JUMPDEST ISZERO PUSH2 0x1702 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1626 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x163A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11D6 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ADDRESS EQ ISZERO PUSH2 0x1730 JUMPI PUSH2 0x172B DUP5 DUP4 DUP4 PUSH2 0x1C4A JUMP JUMPDEST PUSH2 0x11D6 JUMP JUMPDEST PUSH2 0x11D6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x20BC JUMP JUMPDEST DUP1 MLOAD PUSH1 0x42 GT ISZERO JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x177D SWAP1 DUP4 SWAP1 PUSH1 0x17 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 ADD PUSH2 0x2299 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x17A4 JUMPI ADDRESS SWAP4 POP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x17B6 DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x150E JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND SWAP1 DUP4 AND LT PUSH1 0x0 DUP1 PUSH2 0x17E7 DUP6 DUP8 DUP7 PUSH2 0x2480 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 DUP12 DUP6 PUSH2 0x180D DUP16 PUSH2 0x24BE JUMP JUMPDEST PUSH1 0x0 SUB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND ISZERO PUSH2 0x1832 JUMPI DUP14 PUSH2 0x1858 JUMP JUMPDEST DUP8 PUSH2 0x1851 JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x1858 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1869 SWAP2 SWAP1 PUSH2 0x2DA9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1898 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C58 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18E9 SWAP2 SWAP1 PUSH2 0x2845 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP4 PUSH2 0x18FE JUMPI DUP2 DUP4 PUSH1 0x0 SUB PUSH2 0x1904 JUMP JUMPDEST DUP3 DUP3 PUSH1 0x0 SUB JUMPDEST SWAP1 SWAP9 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH2 0x1930 JUMPI DUP12 DUP2 EQ PUSH2 0x1930 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x1964 JUMPI ADDRESS SWAP4 POP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1976 DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x150E JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP1 DUP5 AND LT PUSH1 0x0 DUP1 PUSH2 0x19A7 DUP7 DUP7 DUP7 PUSH2 0x2480 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 DUP12 DUP6 PUSH2 0x19CD DUP16 PUSH2 0x24BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND ISZERO PUSH2 0x19EF JUMPI DUP14 PUSH2 0x1A15 JUMP JUMPDEST DUP8 PUSH2 0x1A0E JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x1A15 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1A26 SWAP2 SWAP1 PUSH2 0x2DA9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A55 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C58 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A82 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1AA6 SWAP2 SWAP1 PUSH2 0x2845 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 PUSH2 0x1AB5 JUMPI DUP2 PUSH2 0x1AB7 JUMP JUMPDEST DUP1 JUMPDEST PUSH1 0x0 SUB SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x1AE4 JUMPI POP POP DUP2 DUP2 MUL DUP2 DUP4 DUP3 DUP2 PUSH2 0x1AE1 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x177D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1B64 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1B27 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1BC6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1BCB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xB86 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354450000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH2 0x177D DUP3 PUSH1 0x0 PUSH1 0x2B PUSH2 0x2299 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1D1F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1CE2 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1D81 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1D86 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1DB4 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1DB4 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x8E9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x14 ADD LT ISZERO PUSH2 0x1E93 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F416464726573735F6F766572666C6F770000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x14 ADD DUP4 MLOAD LT ISZERO PUSH2 0x1F06 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F416464726573735F6F75744F66426F756E64730000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH13 0x1000000000000000000000000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x3 ADD LT ISZERO PUSH2 0x1F93 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F55696E7432345F6F766572666C6F77000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 ADD DUP4 MLOAD LT ISZERO PUSH2 0x2006 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F55696E7432345F6F75744F66426F756E6473000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x3 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2017 PUSH2 0x2626 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x204F JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH3 0xFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2098 DUP4 DUP4 PUSH2 0x24F0 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x177D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2199 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x215C JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x21FB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2200 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x222E JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x222E JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x222B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x8E7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354460000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP2 DUP3 PUSH1 0x1F ADD LT ISZERO PUSH2 0x230D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F766572666C6F77000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 DUP5 ADD LT ISZERO PUSH2 0x237E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F766572666C6F77000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 ADD DUP5 MLOAD LT ISZERO PUSH2 0x23F0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F75744F66426F756E6473000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO DUP1 ISZERO PUSH2 0x240F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x0 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2477 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F DUP5 AND DUP1 ISZERO PUSH1 0x20 MUL DUP2 DUP5 ADD ADD DUP6 DUP2 ADD DUP8 DUP4 ISZERO PUSH1 0x20 MUL DUP5 DUP12 ADD ADD ADD JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x2448 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x2430 JUMP JUMPDEST POP POP DUP6 DUP5 MSTORE PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x40 MSTORE POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24B6 PUSH32 0x0 PUSH2 0x24B1 DUP7 DUP7 DUP7 PUSH2 0x200F JUMP JUMPDEST PUSH2 0x24F0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 LT PUSH2 0x24EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x2532 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 DUP6 ADD MSTORE SWAP4 SWAP1 SWAP2 AND DUP4 DUP6 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x80 DUP5 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 PUSH1 0xD5 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xF5 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1743 DUP2 PUSH2 0x2EF4 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2661 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2674 PUSH2 0x266F DUP3 PUSH2 0x2E88 JUMP JUMPDEST PUSH2 0x2E64 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x2688 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5FA JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26C5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x26D0 DUP2 PUSH2 0x2EF4 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x26EB JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x26F6 DUP2 PUSH2 0x2EF4 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x270D DUP2 PUSH2 0x2EF4 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x272F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x273A DUP2 PUSH2 0x2EF4 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x2751 DUP2 PUSH2 0x2EF4 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x2768 DUP2 PUSH2 0x2EF4 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x278E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2799 DUP2 PUSH2 0x2EF4 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x27BC JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP5 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x27E8 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x27FF JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2812 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2820 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x2833 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2857 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x287D JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x28A2 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28B5 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x28C3 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x28D4 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28F4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x290A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x291A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x2928 PUSH2 0x266F DUP3 PUSH2 0x2E88 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x293C JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1555 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2EC8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x295E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2975 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0xA0 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x2988 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x299D JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x29AE JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x29BA DUP8 DUP3 DUP7 ADD PUSH2 0x2651 JUMP JUMPDEST DUP3 MSTORE POP PUSH2 0x29C9 PUSH1 0x20 DUP5 ADD PUSH2 0x2646 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A0A JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x26D0 DUP4 DUP4 PUSH2 0x26A2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A25 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A3B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0xA0 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x26D0 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A5D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2A74 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x40 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x2A87 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x2A9C JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x2AAD JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2AB9 DUP8 DUP3 DUP7 ADD PUSH2 0x2651 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP3 POP PUSH2 0x2ACC DUP4 PUSH2 0x2EF4 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AED JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x26D0 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B11 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2B23 DUP2 PUSH2 0x2EF4 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2B43 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x2B55 DUP2 PUSH2 0x2EF4 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x2B6C DUP2 PUSH2 0x2EF4 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2B8F DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2EC8 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SWAP4 DUP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0xE8 SWAP4 SWAP1 SWAP4 SHL PUSH32 0xFFFFFF0000000000000000000000000000000000000000000000000000000000 AND PUSH1 0x14 DUP3 ADD MSTORE SWAP3 SHL AND PUSH1 0x17 DUP3 ADD MSTORE PUSH1 0x2B ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND DUP4 MSTORE DUP7 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE DUP6 PUSH1 0x40 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x60 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x2C9F PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x2B77 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2D1B JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x2D09 DUP6 DUP4 MLOAD PUSH2 0x2B77 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2CCF JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x26D0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2B77 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x546F6F206D756368207265717565737465640000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x546F6F206C6974746C6520726563656976656400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD PUSH1 0x40 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2DC5 PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0x2B77 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2E2E JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2E48 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2E5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2E80 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2E9C JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2EE3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2ECB JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x11D6 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2F16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"948:8042:45:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;438:10:51;:18;452:4;438:18;;430:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;948:8042:45;;;;;2115:1242;;;;;;;;;;-1:-1:-1;2115:1242:45;;;;;:::i;:::-;;:::i;4339:517::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1325:289:55;;;;;;:::i;:::-;;:::i;420:38:50:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;610:686:52:-;;;;;;:::i;:::-;;:::i;1652:348:55:-;;;;;;:::i;:::-;;:::i;521:386:51:-;;;;;;:::i;:::-;;:::i;308:653:49:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4894:1245:45:-;;;;;;:::i;:::-;;:::i;973:314:55:-;;;;;;:::i;:::-;;:::i;328:41:50:-;;;;;;;;;;;;;:::i;1362:160:51:-;;;:::i;7522:702:45:-;;;;;;:::i;:::-;;:::i;952:365:51:-;;;;;;:::i;:::-;;:::i;1348:678:52:-;;;;;;:::i;:::-;;:::i;8262:726:45:-;;;;;;:::i;:::-;;:::i;662:273:55:-;;;;;;:::i;:::-;;:::i;2115:1242:45:-;2259:1;2244:12;:16;:36;;;;2279:1;2264:12;:16;2244:36;2236:45;;;;;;2354:28;2385:37;;;;2396:5;2385:37;:::i;:::-;2354:68;;2433:15;2450:16;2468:10;2482:27;:4;:9;;;:25;:27::i;:::-;2432:77;;;;;;2519:66;2553:7;2562;2571:8;2581:3;2519:33;:66::i;:::-;;2597:17;2616:19;2654:1;2639:12;:16;:132;;2740:7;2729:18;;:8;:18;;;2757:12;2639:132;;;2681:8;2671:18;;:7;:18;;;2699:12;2639:132;2596:175;;;;2785:12;2781:570;;;2813:49;2817:7;2826:4;:10;;;2838;2850:11;2813:3;:49::i;:::-;2781:570;;;2949:9;;:28;;:26;:28::i;:::-;2945:396;;;3009:9;;:21;;:19;:21::i;:::-;2997:33;;3048:53;3068:11;3081:10;2997:9;:4;3048:19;:53::i;:::-;;2945:396;;;3157:11;3140:14;:28;;;;3196:8;3186:18;;3277:49;3281:7;3290:4;:10;;;3302;3314:11;3277:3;:49::i;:::-;2115:1242;;;;;;;;;;:::o;4339:517::-;4485:17;4459:6;:15;;;244:8:53;223:17;:15;:17::i;:::-;:29;;215:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4526:245:45::1;4558:15;::::0;::::1;;4587:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;4617:24;::::0;;;::::1;::::0;::::1;;:::i;:::-;4655:106;::::0;;;;::::1;::::0;;;;4696:14:::1;;::::0;::::1;:6:::0;:14:::1;:::i;:::-;4712:10;::::0;;;::::1;::::0;::::1;;:::i;:::-;4724:15;::::0;;;::::1;::::0;::::1;;:::i;:::-;4679:61;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4655:106;;;;4749:10;4655:106;;;;::::0;4526:18:::1;:245::i;:::-;4514:257;;4802:6;:23;;;4789:9;:36;;4781:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4339:517:::0;;;;:::o;1325:289:55:-;1517:90;;;;;;1551:10;1517:90;;;;1571:4;1517:90;;;;;;;;;;;;;;;;1593:4;1517:90;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;;;:90;;;;;-1:-1:-1;;1517:90:55;;;;;;;-1:-1:-1;1517:33:55;:90;;;;;;;;;;;;;;;;;;;;;;;;;;420:38:50;;;:::o;610:686:52:-;808:1;798:7;:11;:29;;;;;824:3;813:7;:14;;798:29;790:38;;;;;;839:19;867:4;861:21;;;891:4;861:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;861:36:52;;-1:-1:-1;915:28:52;;;;907:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;980:15;;976:314;;1017:4;1011:20;;;1032:11;1011:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1058:17;1105:6;1078:24;1094:7;1078:11;:15;;:24;;;;:::i;:::-;:33;;;;;;;-1:-1:-1;1129:13:52;;1125:74;;1144:55;1175:12;1189:9;1144:30;:55::i;:::-;1213:66;1244:9;1269;1255:11;:23;1213:30;:66::i;:::-;976:314;;610:686;;;;;:::o;1652:348:55:-;1861:50;;;;;;1885:10;1861:50;;;;1905:4;1861:50;;;;;;1914:17;;1861:23;;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1861:50:55;:70;1857:136;;;1945:48;1963:5;1970;1977:6;1985:1;1988;1991;1945:17;:48::i;521:386:51:-;617:19;645:4;639:21;;;669:4;639:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;639:36:51;;-1:-1:-1;693:28:51;;;;685:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;758:15;;754:147;;795:4;789:20;;;810:11;789:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;836:54;867:9;878:11;836:30;:54::i;:::-;521:386;;;:::o;308:653:49:-;383:22;439:4;427:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;417:34;;466:9;461:494;481:15;;;461:494;;;518:12;;563:4;582;;587:1;582:7;;;;;;;;;;;;;;;;;;:::i;:::-;555:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;517:73;;;;610:7;605:306;;737:2;721:6;:13;:18;717:32;;;741:8;;;717:32;820:4;812:6;808:17;798:27;;878:6;867:28;;;;;;;;;;;;:::i;:::-;860:36;;;;;;;;;;;:::i;605:306::-;938:6;925:7;933:1;925:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;498:3:49;;461:494;;;;308:653;;;;:::o;4894:1245:45:-;5026:17;5000:6;:15;;;244:8:53;223:17;:15;:17::i;:::-;:29;;215:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5071:10:45::1;5129:925;5156:21;5180:30;:6;:11;;;:28;:30::i;:::-;5156:54;;5322:394;5358:6;:15;;;5391:16;:51;;5426:6;:16;;;5391:51;;;5418:4;5391:51;5511:1;5530:172;;;;;;;;5575:26;:6;:11;;;:24;:26::i;:::-;5530:172;;;;5678:5;5530:172;;;;::::0;5322:18:::1;:394::i;:::-;5304:15;::::0;::::1;:412:::0;5786:258;::::1;;;5917:11:::0;;5842:4:::1;::::0;-1:-1:-1;5917:23:45::1;::::0;:21:::1;:23::i;:::-;5903:37:::0;;5786:258:::1;;;5991:6;:15;;;5979:27;;6024:5;;;5786:258;5129:925;;;;6085:6;:23;;;6072:9;:36;;6064:68;;;;;;;;;;;;:::i;:::-;286:1:53;4894:1245:45::0;;;;:::o;973:314:55:-;1177:50;;;;;;1201:10;1177:50;;;;1221:4;1177:50;;;;;;1230:5;;1177:23;;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1177:50:55;:58;1173:107;;;1237:43;1248:5;1255;1262:8;1272:1;1275;1278;1237:10;:43::i;328:41:50:-;;;:::o;1362:160:51:-;1423:21;:25;1419:96;;1450:65;1481:10;1493:21;1450:30;:65::i;:::-;1362:160::o;7522:702:45:-;7670:16;7644:6;:15;;;244:8:53;223:17;:15;:17::i;:::-;:29;;215:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7765:247:45::1;7798:16;::::0;::::1;;7828;::::0;;;::::1;::::0;::::1;;:::i;:::-;7858:24;::::0;;;::::1;::::0;::::1;;:::i;:::-;7896:106;;;;;;;;7937:6;:15;;;;;;;;;;:::i;:::-;7954:10;::::0;;;::::1;::::0;::::1;;:::i;:::-;7966:14;;::::0;::::1;:6:::0;:14:::1;:::i;:::-;7920:61;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7896:106;;;;7990:10;7896:106;;;;::::0;7765:19:::1;:247::i;:::-;7754:258;;8043:6;:22;;;8031:8;:34;;8023:65;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;1379:17:45::1;8176:14;:41:::0;7522:702;;-1:-1:-1;7522:702:45:o;952:365:51:-;1063:20;1093:5;1086:23;;;1118:4;1086:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1086:38:51;;-1:-1:-1;1142:29:51;;;;1134:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1209:16;;1205:106;;1241:59;1269:5;1276:9;1287:12;1241:27;:59::i;:::-;952:365;;;;:::o;1348:678:52:-;1569:1;1559:7;:11;:29;;;;;1585:3;1574:7;:14;;1559:29;1551:38;;;;;;1600:20;1630:5;1623:23;;;1655:4;1623:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1623:38:52;;-1:-1:-1;1679:29:52;;;;1671:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1746:16;;1742:278;;1778:17;1826:6;1798:25;:12;1815:7;1798:16;:25::i;:::-;:34;;;;;;;-1:-1:-1;1850:13:52;;1846:78;;1865:59;1893:5;1900:12;1914:9;1865:27;:59::i;:::-;1938:71;1966:5;1973:9;1999;1984:12;:24;1938:27;:71::i;:::-;1742:278;1348:678;;;;;;:::o;8262:726:45:-;8398:16;8372:6;:15;;;244:8:53;223:17;:15;:17::i;:::-;:29;;215:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8645:174:45::1;8678:16;::::0;::::1;;8708;::::0;;;::::1;::::0;::::1;;:::i;:::-;8753:56;::::0;;;;::::1;::::0;;;8738:1:::1;::::0;8753:56;8777:11:::1;:6:::0;;:11:::1;:::i;:::-;8753:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;8753:56:45;;;-1:-1:-1;8797:10:45::1;8753:56;::::0;;::::1;::::0;8645:19:::1;:174::i;:::-;;8841:14;;8830:25;;8885:6;:22;;;8873:8;:34;;8865:65;;;;;;;;;;;;:::i;662:273:55:-:0;849:79;;;;;;876:10;849:79;;;;896:4;849:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;;;:79;;;;;-1:-1:-1;;849:79:55;;;;;;;-1:-1:-1;849:26:55;:79;;;;;;;;;;1779:240:87;1846:14;;;1909:17;:4;1846:14;1909;:17::i;:::-;1900:26;-1:-1:-1;1942:24:87;:4;304:2;1942:13;:24::i;:::-;1936:30;-1:-1:-1;1985:27:87;:4;507:20;1985:14;:27::i;:::-;1976:36;;1779:240;;;;;:::o;742:257:81:-;888:17;924:68;939:7;948:43;971:6;979;987:3;948:22;:43::i;:::-;924:14;:68::i;:::-;917:75;742:257;-1:-1:-1;;;;;742:257:81:o;1713:655:51:-;1822:4;1813:13;;:5;:13;;;:47;;;;;1855:5;1830:21;:30;;1813:47;1809:553;;;1911:4;1905:19;;;1932:5;1905:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1995:4;1989:20;;;2010:9;2021:5;1989:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1809:553:51;;-1:-1:-1;1809:553:51;;2048:22;;;2065:4;2048:22;2044:318;;;2177:52;2205:5;2212:9;2223:5;2177:27;:52::i;:::-;2044:318;;;2288:63;2320:5;2327;2334:9;2345:5;2288:31;:63::i;992:138:87:-;1083:11;;777:24;-1:-1:-1;1083:40:87;992:138;;;;:::o;2561:149::-;2677:11;;2622:12;;2653:50;;2677:4;;507:20;;2677:25;;2653:10;:50::i;:::-;2646:57;2561:149;-1:-1:-1;;2561:149:87:o;6194:1290:45:-;6373:16;6468:23;;;6464:54;;6513:4;6493:25;;6464:54;6530:16;6548:15;6565:10;6579:27;:4;:9;;;:25;:27::i;:::-;6529:77;;-1:-1:-1;6529:77:45;-1:-1:-1;6529:77:45;-1:-1:-1;6635:18:45;;;;;;;;6617:15;;6709:31;6529:77;;;6709:7;:31::i;:::-;:36;;;6759:9;6782:10;6807:20;:9;:18;:20::i;:::-;6806:21;;6841:22;;;;:149;;6973:17;6841:149;;;6883:10;:70;;6926:27;6883:70;;;6896:27;6883:70;7015:4;7004:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;6709:321;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6664:366;;;;7041:25;7108:10;:134;;7204:12;7228;7227:13;;7108:134;;;7142:12;7166;7165:13;;7108:134;7076:166;;-1:-1:-1;7076:166:45;-1:-1:-1;7414:22:45;;;7410:67;;7467:9;7446:17;:30;7438:39;;;;;;6194:1290;;;;;;;;;;;;;:::o;319:106:46:-;403:15;319:106;:::o;3411:890:45:-;3588:17;3684:23;;;3680:54;;3729:4;3709:25;;3680:54;3746:15;3763:16;3781:10;3795:27;:4;:9;;;:25;:27::i;:::-;3745:77;;-1:-1:-1;3745:77:45;-1:-1:-1;3745:77:45;-1:-1:-1;3851:18:45;;;;;;;;3833:15;;3915:31;3745:77;;;3915:7;:31::i;:::-;:36;;;3965:9;3988:10;4012:19;:8;:17;:19::i;:::-;4045:22;;;;:149;;4177:17;4045:149;;;4087:10;:70;;4130:27;4087:70;;;4100:27;4087:70;4219:4;4208:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;3915:319;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3880:354;;;;4262:10;:30;;4285:7;4262:30;;;4275:7;4262:30;4260:33;;;3411:890;-1:-1:-1;;;;;;;;;;;3411:890:45:o;986:125:16:-;1044:9;1073:6;;;:30;;-1:-1:-1;;1088:5:16;;;1102:1;1097;1088:5;1097:1;1083:15;;;;;:20;1073:30;1065:39;;;;;2282:165:95;2394:12;;;2354;2394;;;;;;;;;2372:7;;;;2387:5;;2372:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2353:54;;;2425:7;2417:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:127:87;2309:12;2340:25;:4;2351:1;618:23;2340:10;:25::i;1183:279:95:-;1313:59;;;1302:10;1313:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1336:24;1313:59;;;1302:71;;;;1267:12;;;;1302:10;;;;1313:59;1302:71;;;1313:59;1302:71;;1313:59;1302:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1266:107;;;;1391:7;:57;;;;-1:-1:-1;1403:11:95;;:16;;:44;;;1434:4;1423:24;;;;;;;;;;;;;;;-1:-1:-1;1423:24:95;1403:44;1383:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3214:416:80;3293:7;3335:6;3320;3329:2;3320:11;:21;;3312:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3399:6;3408:2;3399:11;3382:6;:13;:28;;3374:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3524:30:80;3540:4;3524:30;3518:37;3557:27;3514:71;;;3214:416::o;3636:365::-;3714:6;3754;3740;3749:1;3740:10;:20;;3732:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3817:6;3826:1;3817:10;3800:6;:13;:27;;3792:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3929:29:80;3945:3;3929:29;3923:36;;3636:365::o;784:244:88:-;871:14;;:::i;:::-;910:6;901:15;;:6;:15;;;897:56;;;938:6;;946;897:56;-1:-1:-1;970:51:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;784:244::o;1248:269:81:-;1370:17;1419:44;1446:7;1455;1419:26;:44::i;:::-;1399:65;-1:-1:-1;1482:10:81;:27;;;;1474:36;;;;;561:330:95;722:69;;;698:10;722:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;745:28;722:69;;;698:103;;;;663:12;;;;698:10;;;;722:69;698:103;;;722:69;698:103;;722:69;698:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;662:139;;;;819:7;:57;;;;-1:-1:-1;831:11:95;;:16;;:44;;;862:4;851:24;;;;;;;;;;;;;;;-1:-1:-1;851:24:95;831:44;811:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;399:2809:80;491:12;539:7;523;533:2;523:12;:23;;515:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;603:6;592:7;583:6;:16;:26;;575:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;672:7;663:6;:16;646:6;:13;:33;;638:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;712:22;775:15;;803:1967;;;;2911:4;2905:11;2892:24;;3097:1;3086:9;3079:20;3145:4;3134:9;3130:20;3124:4;3117:34;768:2397;;803:1967;985:4;979:11;966:24;;1644:2;1635:7;1631:16;2026:9;2019:17;2013:4;2009:28;1997:9;1986;1982:25;1978:60;2074:7;2070:2;2066:16;2326:6;2312:9;2305:17;2299:4;2295:28;2283:9;2275:6;2271:22;2267:57;2263:70;2100:425;2359:3;2355:2;2352:11;2100:425;;;2497:9;;2486:21;;2400:4;2392:13;;;;2432;2100:425;;;-1:-1:-1;;2543:26:80;;;2751:2;2734:11;2747:7;2730:25;2724:4;2717:39;-1:-1:-1;768:2397:80;-1:-1:-1;3192:9:80;399:2809;-1:-1:-1;;;;399:2809:80:o;1773:215:45:-;1856:12;1900:80;1927:7;1936:43;1959:6;1967;1975:3;1936:22;:43::i;:::-;1900:26;:80::i;:::-;1880:101;1773:215;-1:-1:-1;;;;1773:215:45:o;924:123:17:-;976:8;1008;1004:1;:12;996:21;;;;;;-1:-1:-1;1038:1:17;924:123::o;1276:512:88:-;1360:12;1405:3;:10;;;1392:23;;:3;:10;;;:23;;;1384:32;;;;;;-1:-1:-1;1639:10:88;;1651;;;;;1663:7;;;;;1628:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1618:54;;;;;;1510:229;;;;;;;;;;;;;;;;;;;;;241:66;1510:229;;;;;;;;;;;;;;;;;;;;;;;;;1479:278;;;;;;1276:512::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:138:115:-;84:20;;113:33;84:20;113:33;:::i;157:485::-;;254:3;247:4;239:6;235:17;231:27;221:2;;276:5;269;262:20;221:2;316:6;303:20;347:49;362:33;392:2;362:33;:::i;:::-;347:49;:::i;:::-;421:2;412:7;405:19;467:3;460:4;455:2;447:6;443:15;439:26;436:35;433:2;;;488:5;481;474:20;433:2;557;550:4;542:6;538:17;531:4;522:7;518:18;505:55;580:16;;;598:4;576:27;569:42;;;;584:7;211:431;-1:-1:-1;;211:431:115:o;647:182::-;;770:3;761:6;756:3;752:16;748:26;745:2;;;791:5;784;777:20;834:259;;946:2;934:9;925:7;921:23;917:32;914:2;;;967:6;959;952:22;914:2;1011:9;998:23;1030:33;1057:5;1030:33;:::i;:::-;1082:5;904:189;-1:-1:-1;;;904:189:115:o;1098:470::-;;;;1244:2;1232:9;1223:7;1219:23;1215:32;1212:2;;;1265:6;1257;1250:22;1212:2;1309:9;1296:23;1328:33;1355:5;1328:33;:::i;:::-;1380:5;-1:-1:-1;1432:2:115;1417:18;;1404:32;;-1:-1:-1;1488:2:115;1473:18;;1460:32;1501:35;1460:32;1501:35;:::i;:::-;1555:7;1545:17;;;1202:366;;;;;:::o;1573:683::-;;;;;;1753:3;1741:9;1732:7;1728:23;1724:33;1721:2;;;1775:6;1767;1760:22;1721:2;1819:9;1806:23;1838:33;1865:5;1838:33;:::i;:::-;1890:5;-1:-1:-1;1942:2:115;1927:18;;1914:32;;-1:-1:-1;1998:2:115;1983:18;;1970:32;2011:35;1970:32;2011:35;:::i;:::-;2065:7;-1:-1:-1;2119:2:115;2104:18;;2091:32;;-1:-1:-1;2175:3:115;2160:19;;2147:33;2189:35;2147:33;2189:35;:::i;:::-;2243:7;2233:17;;;1711:545;;;;;;;;:::o;2261:709::-;;;;;;;2456:3;2444:9;2435:7;2431:23;2427:33;2424:2;;;2478:6;2470;2463:22;2424:2;2522:9;2509:23;2541:33;2568:5;2541:33;:::i;:::-;2593:5;-1:-1:-1;2645:2:115;2630:18;;2617:32;;-1:-1:-1;2696:2:115;2681:18;;2668:32;;-1:-1:-1;2752:2:115;2737:18;;2724:32;2800:4;2787:18;;2775:31;;2765:2;;2825:6;2817;2810:22;2765:2;2414:556;;;;-1:-1:-1;2414:556:115;;2907:3;2892:19;;2879:33;;2959:3;2944:19;;;2931:33;;-1:-1:-1;2414:556:115;-1:-1:-1;;2414:556:115:o;2975:677::-;;;3133:2;3121:9;3112:7;3108:23;3104:32;3101:2;;;3154:6;3146;3139:22;3101:2;3199:9;3186:23;3228:18;3269:2;3261:6;3258:14;3255:2;;;3290:6;3282;3275:22;3255:2;3333:6;3322:9;3318:22;3308:32;;3378:7;3371:4;3367:2;3363:13;3359:27;3349:2;;3405:6;3397;3390:22;3349:2;3450;3437:16;3476:2;3468:6;3465:14;3462:2;;;3497:6;3489;3482:22;3462:2;3556:7;3551:2;3545;3537:6;3533:15;3529:2;3525:24;3521:33;3518:46;3515:2;;;3582:6;3574;3567:22;3515:2;3618;3610:11;;;;;3640:6;;-1:-1:-1;3091:561:115;;-1:-1:-1;;;;3091:561:115:o;3657:253::-;;;3795:2;3783:9;3774:7;3770:23;3766:32;3763:2;;;3816:6;3808;3801:22;3763:2;-1:-1:-1;;3844:16:115;;3900:2;3885:18;;;3879:25;3844:16;;3879:25;;-1:-1:-1;3753:157:115:o;3915:775::-;;;;;4078:2;4066:9;4057:7;4053:23;4049:32;4046:2;;;4099:6;4091;4084:22;4046:2;4140:9;4127:23;4117:33;;4197:2;4186:9;4182:18;4169:32;4159:42;;4252:2;4241:9;4237:18;4224:32;4275:18;4316:2;4308:6;4305:14;4302:2;;;4337:6;4329;4322:22;4302:2;4380:6;4369:9;4365:22;4355:32;;4425:7;4418:4;4414:2;4410:13;4406:27;4396:2;;4452:6;4444;4437:22;4396:2;4497;4484:16;4523:2;4515:6;4512:14;4509:2;;;4544:6;4536;4529:22;4509:2;4594:7;4589:2;4580:6;4576:2;4572:15;4568:24;4565:37;4562:2;;;4620:6;4612;4605:22;4562:2;4036:654;;;;-1:-1:-1;;4656:2:115;4648:11;;-1:-1:-1;;;4036:654:115:o;4695:676::-;;4828:2;4816:9;4807:7;4803:23;4799:32;4796:2;;;4849:6;4841;4834:22;4796:2;4887:9;4881:16;4920:18;4912:6;4909:30;4906:2;;;4957:6;4949;4942:22;4906:2;4985:22;;5038:4;5030:13;;5026:27;-1:-1:-1;5016:2:115;;5072:6;5064;5057:22;5016:2;5106;5100:9;5131:49;5146:33;5176:2;5146:33;:::i;5131:49::-;5203:2;5196:5;5189:17;5243:7;5238:2;5233;5229;5225:11;5221:20;5218:33;5215:2;;;5269:6;5261;5254:22;5215:2;5287:54;5338:2;5333;5326:5;5322:14;5317:2;5313;5309:11;5287:54;:::i;5376:1043::-;;5523:2;5511:9;5502:7;5498:23;5494:32;5491:2;;;5544:6;5536;5529:22;5491:2;5589:9;5576:23;5618:18;5659:2;5651:6;5648:14;5645:2;;;5680:6;5672;5665:22;5645:2;5708:22;;;;5764:4;5746:16;;;5742:27;5739:2;;;5787:6;5779;5772:22;5739:2;5825;5819:9;5867:4;5859:6;5855:17;5922:6;5910:10;5907:22;5902:2;5890:10;5887:18;5884:46;5881:2;;;5933:9;5881:2;5960;5953:22;6000:16;;6028;;;6025:2;;;6062:6;6054;6047:22;6025:2;6095:46;6133:7;6122:8;6118:2;6114:17;6095:46;:::i;:::-;6087:6;6080:62;;6175:33;6204:2;6200;6196:11;6175:33;:::i;:::-;6170:2;6162:6;6158:15;6151:58;6263:2;6259;6255:11;6242:25;6237:2;6229:6;6225:15;6218:50;6322:2;6318;6314:11;6301:25;6296:2;6288:6;6284:15;6277:50;6382:3;6378:2;6374:12;6361:26;6355:3;6347:6;6343:16;6336:52;6407:6;6397:16;;;;;5481:938;;;;:::o;6424:283::-;;6579:3;6567:9;6558:7;6554:23;6550:33;6547:2;;;6601:6;6593;6586:22;6547:2;6629:72;6693:7;6682:9;6629:72;:::i;6712:428::-;;6862:2;6850:9;6841:7;6837:23;6833:32;6830:2;;;6883:6;6875;6868:22;6830:2;6928:9;6915:23;6961:18;6953:6;6950:30;6947:2;;;6998:6;6990;6983:22;6947:2;7026:22;;7082:3;7064:16;;;7060:26;7057:2;;;7104:6;7096;7089:22;7434:928;;7580:2;7568:9;7559:7;7555:23;7551:32;7548:2;;;7601:6;7593;7586:22;7548:2;7646:9;7633:23;7675:18;7716:2;7708:6;7705:14;7702:2;;;7737:6;7729;7722:22;7702:2;7765:22;;;;7821:4;7803:16;;;7799:27;7796:2;;;7844:6;7836;7829:22;7796:2;7882:4;7876:11;7926:4;7918:6;7914:17;7981:6;7969:10;7966:22;7961:2;7949:10;7946:18;7943:46;7940:2;;;7992:9;7940:2;8019:4;8012:24;8061:16;;8089;;;8086:2;;;8123:6;8115;8108:22;8086:2;8156:46;8194:7;8183:8;8179:2;8175:17;8156:46;:::i;:::-;8148:6;8141:62;;8246:2;8242;8238:11;8225:25;8212:38;;8259:33;8286:5;8259:33;:::i;:::-;8320:2;8308:15;;8301:30;;;;-1:-1:-1;8312:6:115;7538:824;-1:-1:-1;;;7538:824:115:o;8631:294::-;;8742:2;8730:9;8721:7;8717:23;8713:32;8710:2;;;8763:6;8755;8748:22;8710:2;8807:9;8794:23;8857:8;8850:5;8846:20;8839:5;8836:31;8826:2;;8886:6;8878;8871:22;8930:327;;;9059:2;9047:9;9038:7;9034:23;9030:32;9027:2;;;9080:6;9072;9065:22;9027:2;9121:9;9108:23;9098:33;;9181:2;9170:9;9166:18;9153:32;9194:33;9221:5;9194:33;:::i;:::-;9246:5;9236:15;;;9017:240;;;;;:::o;9262:539::-;;;;;9425:3;9413:9;9404:7;9400:23;9396:33;9393:2;;;9447:6;9439;9432:22;9393:2;9488:9;9475:23;9465:33;;9548:2;9537:9;9533:18;9520:32;9561:33;9588:5;9561:33;:::i;:::-;9613:5;-1:-1:-1;9665:2:115;9650:18;;9637:32;;-1:-1:-1;9721:2:115;9706:18;;9693:32;9734:35;9693:32;9734:35;:::i;:::-;9383:418;;;;-1:-1:-1;9383:418:115;;-1:-1:-1;;9383:418:115:o;9806:318::-;;9887:5;9881:12;9914:6;9909:3;9902:19;9930:63;9986:6;9979:4;9974:3;9970:14;9963:4;9956:5;9952:16;9930:63;:::i;:::-;10038:2;10026:15;10043:66;10022:88;10013:98;;;;10113:4;10009:109;;9857:267;-1:-1:-1;;9857:267:115:o;10129:514::-;10417:2;10413:15;;;10322:66;10409:24;;;10397:37;;10472:3;10468:16;;;;10486:66;10464:89;10459:2;10450:12;;10443:111;10588:15;;10584:24;10579:2;10570:12;;10563:46;10634:2;10625:12;;10302:341::o;10648:273::-;;10831:6;10823;10818:3;10805:33;10857:16;;10882:15;;;10857:16;10795:126;-1:-1:-1;10795:126:115:o;10926:226::-;11102:42;11090:55;;;;11072:74;;11060:2;11045:18;;11027:125::o;11157:593::-;;11400:42;11481:2;11473:6;11469:15;11458:9;11451:34;11535:6;11528:14;11521:22;11516:2;11505:9;11501:18;11494:50;11580:6;11575:2;11564:9;11560:18;11553:34;11635:2;11627:6;11623:15;11618:2;11607:9;11603:18;11596:43;;11676:3;11670;11659:9;11655:19;11648:32;11697:47;11739:3;11728:9;11724:19;11716:6;11697:47;:::i;:::-;11689:55;11380:370;-1:-1:-1;;;;;;;11380:370:115:o;11755:865::-;;11944:2;11984;11973:9;11969:18;12014:2;12003:9;11996:21;12037:6;12072;12066:13;12103:6;12095;12088:22;12141:2;12130:9;12126:18;12119:25;;12204:2;12198;12190:6;12186:15;12175:9;12171:31;12167:40;12153:54;;12242:2;12234:6;12230:15;12263:4;12276:315;12290:6;12287:1;12284:13;12276:315;;;12379:66;12367:9;12359:6;12355:22;12351:95;12346:3;12339:108;12470:41;12504:6;12495;12489:13;12470:41;:::i;:::-;12460:51;-1:-1:-1;12569:12:115;;;;12534:15;;;;12312:1;12305:9;12276:315;;;-1:-1:-1;12608:6:115;;11924:696;-1:-1:-1;;;;;;;11924:696:115:o;12625:221::-;;12774:2;12763:9;12756:21;12794:46;12836:2;12825:9;12821:18;12813:6;12794:46;:::i;12851:342::-;13053:2;13035:21;;;13092:2;13072:18;;;13065:30;13131:20;13126:2;13111:18;;13104:48;13184:2;13169:18;;13025:168::o;13198:343::-;13400:2;13382:21;;;13439:2;13419:18;;;13412:30;13478:21;13473:2;13458:18;;13451:49;13532:2;13517:18;;13372:169::o;13546:497::-;;13743:2;13732:9;13725:21;13781:6;13775:13;13824:4;13819:2;13808:9;13804:18;13797:32;13852:52;13900:2;13889:9;13885:18;13871:12;13852:52;:::i;:::-;13838:66;;13970:42;13964:2;13956:6;13952:15;13946:22;13942:71;13935:4;13924:9;13920:20;13913:101;14031:6;14023:14;;;13715:328;;;;:::o;14048:177::-;14194:25;;;14182:2;14167:18;;14149:76::o;14230:592::-;;;14373:11;14360:25;14463:66;14452:8;14436:14;14432:29;14428:102;14408:18;14404:127;14394:2;;14548:4;14542;14535:18;14394:2;14578:33;;14630:20;;;-1:-1:-1;14673:18:115;14662:30;;14659:2;;;14708:4;14702;14695:18;14659:2;14744:4;14732:17;;-1:-1:-1;14775:14:115;14771:27;;;14761:38;;14758:2;;;14812:1;14809;14802:12;14758:2;14324:498;;;;;:::o;14827:242::-;14897:2;14891:9;14927:17;;;14974:18;14959:34;;14995:22;;;14956:62;14953:2;;;15021:9;14953:2;15048;15041:22;14871:198;;-1:-1:-1;14871:198:115:o;15074:240::-;;15157:18;15149:6;15146:30;15143:2;;;15179:9;15143:2;-1:-1:-1;15227:4:115;15215:17;15234:66;15211:90;15303:4;15207:101;;15133:181::o;15319:258::-;15391:1;15401:113;15415:6;15412:1;15409:13;15401:113;;;15491:11;;;15485:18;15472:11;;;15465:39;15437:2;15430:10;15401:113;;;15532:6;15529:1;15526:13;15523:2;;;-1:-1:-1;;15567:1:115;15549:16;;15542:27;15372:205::o;15582:156::-;15670:42;15663:5;15659:54;15652:5;15649:65;15639:2;;15728:1;15725;15718:12;15639:2;15629:109;:::o"},"methodIdentifiers":{"SAMB()":"90793ea8","astraCLSwapCallback(int256,int256,bytes)":"11c17848","exactInput((bytes,address,uint256,uint256,uint256))":"c04b8d59","exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"414bf389","exactOutput((bytes,address,uint256,uint256,uint256))":"f28c0498","exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"db3e2198","factory()":"c45a0155","multicall(bytes[])":"ac9650d8","refundAMB()":"c53af304","selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)":"f3995c67","selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)":"4659a494","selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"a4a78f0c","selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"c2e3140a","sweepToken(address,uint256,address)":"df2ab5bb","sweepTokenWithFee(address,uint256,address,uint256,address)":"e0e189a0","unwrapSAMB(uint256,address)":"a98ce37f","unwrapSAMBWithFee(uint256,address,uint256,address)":"97e87d9d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_SAMB\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"SAMB\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"astraCLSwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapRouter.ExactInputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct ISwapRouter.ExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapRouter.ExactOutputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct ISwapRouter.ExactOutputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"refundAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowed\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowedIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"sweepToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeBips\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"sweepTokenWithFee\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"unwrapSAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeBips\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"unwrapSAMBWithFee\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IAstraCLPoolActions#swap call\"}},\"exactInput((bytes,address,uint256,uint256,uint256))\":{\"params\":{\"params\":\"The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\"},\"returns\":{\"amountOut\":\"The amount of the received token\"}},\"exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"params\":{\"params\":\"The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\"},\"returns\":{\"amountOut\":\"The amount of the received token\"}},\"exactOutput((bytes,address,uint256,uint256,uint256))\":{\"params\":{\"params\":\"The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\"},\"returns\":{\"amountIn\":\"The amount of the input token\"}},\"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"params\":{\"params\":\"The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\"},\"returns\":{\"amountIn\":\"The amount of the input token\"}},\"multicall(bytes[])\":{\"details\":\"The `msg.value` should not be trusted for any method callable from multicall.\",\"params\":{\"data\":\"The encoded function data for each of the calls to make to this contract\"},\"returns\":{\"results\":\"The results from each of the calls passed in via data\"}},\"refundAMB()\":{\"details\":\"Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps that use ether for the input amount\"},\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this).\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this)\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this) Can be used instead of #selfPermitAllowed to prevent calls from failing due to a frontrun of a call to #selfPermitAllowed.\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this). Can be used instead of #selfPermit to prevent calls from failing due to a frontrun of a call to #selfPermit\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}},\"sweepToken(address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing the token from users\",\"params\":{\"amountMinimum\":\"The minimum amount of token required for a transfer\",\"recipient\":\"The destination address of the token\",\"token\":\"The contract address of the token which will be transferred to `recipient`\"}},\"sweepTokenWithFee(address,uint256,address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing the token from users\"},\"unwrapSAMB(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of SAMB to unwrap\",\"recipient\":\"The address receiving AMB\"}},\"unwrapSAMBWithFee(uint256,address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\"}},\"stateVariables\":{\"DEFAULT_AMOUNT_IN_CACHED\":{\"details\":\"Used as the placeholder value for amountInCached, because the computed amount in for an exact output swap can never actually be this value\"},\"amountInCached\":{\"details\":\"Transient storage variable used for returning the computed amount in for an exact output swap.\"}},\"title\":\"AstraDEX CL Swap Router\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IAstraCLPool#swap.\"},\"exactInput((bytes,address,uint256,uint256,uint256))\":{\"notice\":\"Swaps `amountIn` of one token for as much as possible of another along the specified path\"},\"exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"notice\":\"Swaps `amountIn` of one token for as much as possible of another token\"},\"exactOutput((bytes,address,uint256,uint256,uint256))\":{\"notice\":\"Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)\"},\"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"notice\":\"Swaps as little as possible of one token for `amountOut` of another token\"},\"multicall(bytes[])\":{\"notice\":\"Call multiple functions in the current contract and return the data from all of them if they all succeed\"},\"refundAMB()\":{\"notice\":\"Refunds any AMB balance held by this contract to the `msg.sender`\"},\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"},\"sweepToken(address,uint256,address)\":{\"notice\":\"Transfers the full amount of a token held by this contract to recipient\"},\"sweepTokenWithFee(address,uint256,address,uint256,address)\":{\"notice\":\"Transfers the full amount of a token held by this contract to recipient, with a percentage between 0 (exclusive) and 1 (inclusive) going to feeRecipient\"},\"unwrapSAMB(uint256,address)\":{\"notice\":\"Unwraps the contract's SAMB balance and sends it to recipient as AMB.\"},\"unwrapSAMBWithFee(uint256,address,uint256,address)\":{\"notice\":\"Unwraps the contract's SAMB balance and sends it to recipient as AMB, with a percentage between 0 (exclusive), and 1 (inclusive) going to feeRecipient\"}},\"notice\":\"Router for stateless execution of swaps against AstraDEX CL\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/SwapRouter.sol\":\"SwapRouter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol\":{\"keccak256\":\"0xaa82f63f0c930e51d6aaae0d59e7bf3ef5b32371ac0549f6e07bfcab5b4dcb16\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://73419af0b4f35f02c3b89d387d6ac46041637a7133e249de617103b7567bf4c4\",\"dweb:/ipfs/QmTfwEX1dCoUUUMaMFzDnqDcFXihHQnEG1fbkBFpidRs8o\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0x86715eb960f18e01ac94e3bba4614ed51a887fa3c5bd1c43bf80aa98e019cf2d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfc1d5d58e59015086b0e65a6c3a2ddad312e2350480510f6c0c8167f3d71a37\",\"dweb:/ipfs/QmQndULYjFsHKHjMAKLMfc12vWbVB5FawtioHtvwcWRJZp\"]},\"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0xd4c1c1b67f946b077d7c52a158113763a89a210fc2927b8491055a962ecd18c0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5344400c74320ca8dbe19241db7ff49babbd6c875c1b561c79d6e4315a9fb5f9\",\"dweb:/ipfs/QmRKCNTbkovxK1WvejXZr3iAHhGN97ZT1yWGsWCJFkrT5X\"]},\"@airdao/astra-cl-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0xe22d07f1ebf9c8468c81cb6905bfc8f8a54fa2f9b4a50742202a47cdbcb5af80\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d4773ca5008d2a2f496370695942c8ba3d6e1d487adbf5cda1149da12e3a6268\",\"dweb:/ipfs/QmcPYTLpEWfU8e3KAYBfHH7uYR4tGAkvnWrWS1CG8EkyLC\"]},\"@openzeppelin/contracts/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"contracts/SwapRouter.sol\":{\"keccak256\":\"0x80afe04104e037caa9f42f553c7c128a53cdcbf486e545ffb70525821d8d852f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://44b81b11854ebaeae36675d03bb17b86c9b7c10bf936219d2d368728d0b0af4f\",\"dweb:/ipfs/Qmb8NQ3Vkzn1uYzLUZKba6ogLUdz1HSSTRW8oaryt3AtKR\"]},\"contracts/base/BlockTimestamp.sol\":{\"keccak256\":\"0x1aa66f71234064a0c0976f62233f2edbd69554e5ad817dc97f318bc8e11f4da6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b3a40450e9d6b0f9cb91b40ffd6215612505bd74e7d954529958f4edc6ee7b93\",\"dweb:/ipfs/QmewsUCHK5N5KhNtqEwK8JgsXFADyFBrQRS5HoDWM5gi3b\"]},\"contracts/base/Multicall.sol\":{\"keccak256\":\"0xfcfd78c62d2145634a791d5680a1af7055fbd301c415d29c09333c99c37d9037\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0d1c8f4a18cec8ad49e5269c5b07c7f6fd497dfc1b7b777f8ddcfb8055efd803\",\"dweb:/ipfs/QmdeCTnfHM3RGtQuo3DMX9m7gPspGGwQp7ho6m9cJjjnER\"]},\"contracts/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x566b2f2f7bf89d107c66316e12b9cad9fade2f9cc2076bceb2090f54bada22da\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d13d485890a8eb6b2b6b38cf0b7fc39c7fc66462a9553159947ece2de55d9ba3\",\"dweb:/ipfs/QmaSEEBMjMvvrLqxmrskUmDwg86g7RHDa6SYiYiA77SJ1X\"]},\"contracts/base/PeripheryPayments.sol\":{\"keccak256\":\"0x88e12ecce0236f43cac955dee8ae50e8ffba7d133625ba18b590d51b9e030098\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://9f10d1317582a91e7842901c6888c4bb28939817cefa3d3f88458c2ec653b6ed\",\"dweb:/ipfs/QmP2qV22Uq6Pou1VkgNzRnXHzNJ71CBpVBYhYDnLccBx8U\"]},\"contracts/base/PeripheryPaymentsWithFee.sol\":{\"keccak256\":\"0x93f6d5b75cb4e7204ae63f45722eb82ac62f732d56cbf31f3a65ce2ea262cc6d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a23090fa2e584774818eeb9e548086b8c383acd9d35830845191fd114bfbf03b\",\"dweb:/ipfs/QmXr9EGVoUMCGttgsDFJZ5UBrBjY42qBV2FRakCDi8aeTs\"]},\"contracts/base/PeripheryValidation.sol\":{\"keccak256\":\"0xc736bab599912d6212e8414ee4ba7af0c1e08ff6aa11caa85f5f6e07f7d421c3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06f6c13a86900c71fa486fc029a59d1b7eb96162bb42885b5f845d995294893e\",\"dweb:/ipfs/QmUcBxMsmncw9n6eXhzzwSasGBvBGKH5FT8HSrAxrsXV4A\"]},\"contracts/base/SelfPermit.sol\":{\"keccak256\":\"0xe75aedfc1eff6c84adac82b2bc41d197127a74530f0c344a7a122a6c8ec186be\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://05150ae691e10f2c9c82ad46de86c8b6683d8eba995e6f9ff82eaefc064902e9\",\"dweb:/ipfs/QmdKxxmxCPxV7qe11MbRhpaQXDAnnKWH1BoTMmEXYPAA7g\"]},\"contracts/interfaces/IMulticall.sol\":{\"keccak256\":\"0xa8f9d0061ee730a522dc4bae6bd5cabb3e997e2c5983da183e912bdca93dfa7b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://496b68d4f72d58cc83cf51bd9cc9c99aaa46dc3c3df7c951a9e50ba29ee33016\",\"dweb:/ipfs/Qmc3bkXwuRP8mDpcKgvLgbCKn8tD8PGCaBjnLHSPMJCRGD\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x57bd5b069f6e66edd42a9b41e5864bfcd2aa7d404337d6c57a083fb589fc59bd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4efa92b18c295755437180f93a19179ef15dfe24a6db10ae876c41247fd4a907\",\"dweb:/ipfs/QmYJTRqE5BEjqyNoZqoctVFgxZF336cK9ba1RSd2LbgFkG\"]},\"contracts/interfaces/IPeripheryPaymentsWithFee.sol\":{\"keccak256\":\"0x95eb2970f74b59074666d156779b7eeb1a34228476ac26f987f6f563b834098d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bd17994291ec4231d4fa66af52e0cfd4f7883365ecb41f534acf08afffa8806d\",\"dweb:/ipfs/QmUjst3v8zu8DE9Ue3YHJJoRLcZGd9CXP3jVoC2tSAUjs9\"]},\"contracts/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0x402d04301ffd41853f4949a574b8853c46d076910ed734f5e4478bf64369a3ed\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6a5536d179ff3777920ff8ed60cfc457f7a4dda1373c8f0394b2a8e0fe537525\",\"dweb:/ipfs/QmdaYGikTmmi2vbECnoomZ8vS8PBiD4Bq8BoFCYqFZmKgR\"]},\"contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0xbcb66f65faf010af6a5314375428277818cd2648f6dc936970aee18711a4fdd2\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2a58b8e026a90bc84be07cfa9cbf64083f1bbde0d217ca4744650ba871122ff9\",\"dweb:/ipfs/QmRN4TqojnnF6wiupZZBYDATC6WmY9dx4p9Sorb9zXY9us\"]},\"contracts/interfaces/external/IERC20PermitAllowed.sol\":{\"keccak256\":\"0x8c4c1b8e724e0a78cb691d703dd37cd91b8bd6600537fb227807a194025a792d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://783be851155842a02cdb0483c3a69ecc0e7ae8545f65cec1d4aeb355b2026a7d\",\"dweb:/ipfs/QmZNBQosTjpGNKB3Eo2K6Zzye7FYiLVoEki5iPB2Y69jz2\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x5b5789677c6b7e447fd774a5c065d9547c85f22e950e18690f686a6b779d78dc\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c2e45681c8d5c704fbfef7369ff7878e6af2d987ba564eb97148ee6e8db87e49\",\"dweb:/ipfs/Qmeg4ynPmWipSVb6BRj4o8uZRbE2bQk8nCwp9apMAEq8Xk\"]},\"contracts/libraries/BytesLib.sol\":{\"keccak256\":\"0xed1b8acd0184eb321d5f4b5c2576608d1c12f5db1bb72d950054438f7f1946a6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f55d6aca86dcf1f1ab6413f48964f821306a29914c2117c16f20446faa5d6d0a\",\"dweb:/ipfs/QmWKbbg6kA9kkPVrCh6hJMnPhK1NhuVoHEd9s3vmYWsvTa\"]},\"contracts/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xf21a3d7e2bc14386ce7b072b124b580df53441a32591770845860e8947f942d0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6941e21d9bc52bddc65079c5e7bc9d6ffd6553f6ed7f3d3b340996a55115b46f\",\"dweb:/ipfs/QmaDJ9uafahho77WP5izBCRL4W3mVM7NFL5q5QR5YvAC3A\"]},\"contracts/libraries/Path.sol\":{\"keccak256\":\"0x0a6928608f48763796089e22dfc02a462cce63bb7727663961b3ed8c4f3eb862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://73bb4f107faf873db8700ce8950d2c4c88d41e0e1716da599bb733ad884f95eb\",\"dweb:/ipfs/QmZXSaPVpgDXpkKqYRdByJ3UXaMV2ATkr7V72nRZij8wmB\"]},\"contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xdd82100913bcb7c490e9e6912ab33994bd97d5a59e67209826ebf917bc8271c1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ecfc24c77d80aa718604d8a2c4d59460b76b5fd567d15206414e3838dd6698b7\",\"dweb:/ipfs/QmVtUC9dnade4RkzXaSqEFdAkiEftJ777jmT619LX2VLGv\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x0fef3409a5a161cd12b777fdfa86845d64b86f72c78b8312c9e3c92f9017e5c5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9df2c76e4581a1d343ea1dd1d0478df7f1c1eef1b476ccea452367ef5b75e65\",\"dweb:/ipfs/QmWZVBRQcn4ekrmCDFkM4BSRAZ1m72GHzUnfzUn39PwQow\"]}},\"version\":1}"}},"contracts/base/BlockTimestamp.sol":{"BlockTimestamp":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Base contract that is overridden for tests\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Function for getting block timestamp\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/base/BlockTimestamp.sol\":\"BlockTimestamp\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/base/BlockTimestamp.sol\":{\"keccak256\":\"0x1aa66f71234064a0c0976f62233f2edbd69554e5ad817dc97f318bc8e11f4da6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b3a40450e9d6b0f9cb91b40ffd6215612505bd74e7d954529958f4edc6ee7b93\",\"dweb:/ipfs/QmewsUCHK5N5KhNtqEwK8JgsXFADyFBrQRS5HoDWM5gi3b\"]}},\"version\":1}"}},"contracts/base/ERC721Permit.sol":{"ERC721Permit":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","PERMIT_TYPEHASH()":"30adf81f","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","baseURI()":"6c0360eb","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","permit(address,uint256,uint256,uint8,bytes32,bytes32)":"7ac2ff7b","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"returns\":{\"_0\":\"The domain seperator used in encoding of permit signature\"}},\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"baseURI()\":{\"details\":\"Returns the base URI set via {_setBaseURI}. This will be automatically added as a prefix in {tokenURI} to each token's URI, or to the token ID if no specific URI is set for that token ID.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"permit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"deadline\":\"The deadline timestamp by which the call must be mined for the approve to work\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"spender\":\"The account that is being approved\",\"tokenId\":\"The ID of the token that is being approved for spending\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"stateVariables\":{\"PERMIT_TYPEHASH\":{\"details\":\"Value is equal to keccak256(\\\"Permit(address spender,uint256 tokenId,uint256 nonce,uint256 deadline)\\\");\",\"return\":\"The typehash for the permit\"},\"nameHash\":{\"details\":\"The hash of the name used in the permit signature verification\"},\"versionHash\":{\"details\":\"The hash of the version string used in the permit signature verification\"}},\"title\":\"ERC721 with permit\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"The domain separator used in the permit signature\"},\"PERMIT_TYPEHASH()\":{\"notice\":\"The permit typehash used in the permit signature\"},\"constructor\":{\"notice\":\"Computes the nameHash and versionHash\"},\"permit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Approve of a specific token ID for spending by spender via signature\"}},\"notice\":\"Nonfungible tokens that support an approve via signature, i.e. permit\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/base/ERC721Permit.sol\":\"ERC721Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0x234cdf2c3efd5f0dc17d32fe65d33c21674ca17de1e945eb60ac1076d7152d96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd196df6ec4549923b4581fcb4be3d05237b5221067410d0bc34cb76d4174441\",\"dweb:/ipfs/Qmf2vFVgbfpD4FvAhQXkprg9sKSX3TXKRdbQTSjJVEmzWj\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x93e4f65a89c3c888afbaa3ee18c3fa4f51c422419bbcd9cca47676a0f8e507ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a9c54b2935c810e14b17d6b5d7adeb0e1733d172823f02c30e1be8729715841\",\"dweb:/ipfs/QmZGveXLQpqJQRjfeNws7mGSjxKpnfZCnKaXyH4soxDSkR\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x05604ffcf69e416b8a42728bb0e4fd75170d8fac70bf1a284afeb4752a9bc52f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8a7fd1043372336ecccdbcbcf4962c6df8958dc9c7c7f8361fc2b3dd23570cc\",\"dweb:/ipfs/QmYHKgZxnanBfu7Q8ZicVhDDuB7XRGxuwvmCjfQQ1E5j39\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf89f005a3d98f7768cdee2583707db0ac725cf567d455751af32ee68132f3db3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f963d438177764b5f43f637c02311c951c0f0025d12fe1ac7e62e295bf416c41\",\"dweb:/ipfs/QmcfVb9JsWrYeTwFUJsKVHpKB7EaWBKydAH9S4sKg2pzcK\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/utils/EnumerableMap.sol\":{\"keccak256\":\"0x2114555153edb5f273008b3d34205f511db9af06b88f752e4c280dd612c4c549\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8779df50f4f716c6adaa5f61880c572abb2b37197d690d6aad32e52a32d5f382\",\"dweb:/ipfs/QmVuZMGNFEo4gm1QB55gnCwCTc7XC5npkmgdfeJUgHbMiL\"]},\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0x9a2c1eebb65250f0e11882237038600f22a62376f0547db4acc0dfe0a3d8d34f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccafc1afbcbf54559beea9c029d0b7656c56a185813c5fa74c4ea3eb4b608419\",\"dweb:/ipfs/QmTKwdbenDfNwmwRVh8VKtA6mhFK2AyTFRoJF3BqLB81KM\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x08e38e034333372aea8cb1b8846085b7fbab42c6b77a0af464d2c6827827c4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22746e9348187309fb4fbd3f79f6ad88787103eac10f24bd18f67257fafdd8ad\",\"dweb:/ipfs/QmSLXfXg8b27Xstq58DFGvCpqgtTqpfrGbLMq19PtEKQJS\"]},\"contracts/base/BlockTimestamp.sol\":{\"keccak256\":\"0x1aa66f71234064a0c0976f62233f2edbd69554e5ad817dc97f318bc8e11f4da6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b3a40450e9d6b0f9cb91b40ffd6215612505bd74e7d954529958f4edc6ee7b93\",\"dweb:/ipfs/QmewsUCHK5N5KhNtqEwK8JgsXFADyFBrQRS5HoDWM5gi3b\"]},\"contracts/base/ERC721Permit.sol\":{\"keccak256\":\"0x5f49d22648b16a32881b1e22ecb6a396713c459dd9cf76ca263342fb0b07ba62\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://309ee7bc9dc3f03b42b80f196dc0a2df3b4536c4f6f2a8e422c020a982f53db8\",\"dweb:/ipfs/QmYEdL3JkPVuSyKhVm5MV7vyQh14xr5KqvtMiivJ5ydM9x\"]},\"contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x383d39a13ce10019d4ebd27a694d085c03a1498a1cc31ec1511fac91b5296342\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3d22d9cc7a33829bd31da42d96bd75401a675ef32c8eb4d9e3074c21ec1241b6\",\"dweb:/ipfs/QmNrvD2T3k3wH5kWz6Kss9mSjxdJhXAA6NTH1Evj8j3k6A\"]},\"contracts/interfaces/external/IERC1271.sol\":{\"keccak256\":\"0xfafb0a232f7410fa2fbcae4627e357dfa8f43a58dea6ba796d8bf5523c5c7b89\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f3877e40332b89fc7a14fa3266b4a2bd154725c322816a8985eabfbaeb6ab372\",\"dweb:/ipfs/QmVj7tjRKWdW9H6vhP2JTDgt82Pk8sGHEJHtJJwPqmgrRi\"]},\"contracts/libraries/ChainId.sol\":{\"keccak256\":\"0x19478399e251074e5c8835eccedca8d3c223479d025e75cd3730131c1f65bdac\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://21cf1f666bb74f1a4180324a4254918cf28d68236a1828140e7e6b21d4bfe857\",\"dweb:/ipfs/QmcTVMseerQiMm2cS5gQ3SEx9kprpyMgWCbiD9VL2kKS2u\"]}},\"version\":1}"}},"contracts/base/LiquidityManagement.sol":{"LiquidityManagement":{"abi":[{"inputs":[],"name":"SAMB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount0Owed","type":"uint256"},{"internalType":"uint256","name":"amount1Owed","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"astraCLMintCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refundAMB","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"sweepToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"unwrapSAMB","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"SAMB()":"90793ea8","astraCLMintCallback(uint256,uint256,bytes)":"4cb42d2d","factory()":"c45a0155","refundAMB()":"c53af304","sweepToken(address,uint256,address)":"df2ab5bb","unwrapSAMB(uint256,address)":"a98ce37f"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SAMB\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Owed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Owed\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"astraCLMintCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"refundAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"sweepToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"unwrapSAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"astraCLMintCallback(uint256,uint256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the minted liquidity. The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory.\",\"params\":{\"amount0Owed\":\"The amount of token0 due to the pool for the minted liquidity\",\"amount1Owed\":\"The amount of token1 due to the pool for the minted liquidity\",\"data\":\"Any data passed through by the caller via the IAstraCLPoolActions#mint call\"}},\"refundAMB()\":{\"details\":\"Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps that use ether for the input amount\"},\"sweepToken(address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing the token from users\",\"params\":{\"amountMinimum\":\"The minimum amount of token required for a transfer\",\"recipient\":\"The destination address of the token\",\"token\":\"The contract address of the token which will be transferred to `recipient`\"}},\"unwrapSAMB(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of SAMB to unwrap\",\"recipient\":\"The address receiving AMB\"}}},\"title\":\"Liquidity management functions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"astraCLMintCallback(uint256,uint256,bytes)\":{\"notice\":\"Called to `msg.sender` after minting liquidity to a position from IAstraCLPool#mint.\"},\"refundAMB()\":{\"notice\":\"Refunds any AMB balance held by this contract to the `msg.sender`\"},\"sweepToken(address,uint256,address)\":{\"notice\":\"Transfers the full amount of a token held by this contract to recipient\"},\"unwrapSAMB(uint256,address)\":{\"notice\":\"Unwraps the contract's SAMB balance and sends it to recipient as AMB.\"}},\"notice\":\"Internal functions for safely managing liquidity in AstraDEX CL\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/base/LiquidityManagement.sol\":\"LiquidityManagement\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol\":{\"keccak256\":\"0x380f33c6cac2893f4e290a3c1a63f9f0bb9d42aff4a74c9b0fe9eebceb5721c3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4cfd26554cf5fd3f7391e73ba4559fb1df2b8f3028c7f27d694b698250371c6c\",\"dweb:/ipfs/QmepfyejMAZbpJETuMC9naUwXLVihfXLXvCQsyMwYq1hy6\"]},\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLMintCallback.sol\":{\"keccak256\":\"0x85fb78c4f58adb7d5f6e37a1657cd94a050815c7e1ddbbcf8364062cb38b515c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4bce55c098b04edf1f75fedeba5ff323eac20e546ff7f8041d13aba9a3c7188e\",\"dweb:/ipfs/QmXFrKKyPhyvLdyyWRcafSMF6zD3tRjkPcVuPzZ7NU69E4\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"@airdao/astra-cl-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x5340256039418f5d03512a44173d3dcf1da277a73a461e06fb5668f49cfc46f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75dee99795d1125875233a7f1d356935099cc97b4085c0e451060d77db85d144\",\"dweb:/ipfs/QmTGqyrxVLQd8TBaarqSQDiYvq1QFutCdmTyXk6JpxzKTN\"]},\"@airdao/astra-cl-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0xe22d07f1ebf9c8468c81cb6905bfc8f8a54fa2f9b4a50742202a47cdbcb5af80\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d4773ca5008d2a2f496370695942c8ba3d6e1d487adbf5cda1149da12e3a6268\",\"dweb:/ipfs/QmcPYTLpEWfU8e3KAYBfHH7uYR4tGAkvnWrWS1CG8EkyLC\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"contracts/base/LiquidityManagement.sol\":{\"keccak256\":\"0x6a3ffb66ae47e1abc60e024a1356b50a157ce6b25ebb4a0d32f56fae5d1f603e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://531e5b2ca81216f179ac636f39e95f17ba709e46ea262db104ae02074df8ef50\",\"dweb:/ipfs/QmXCK7mL4738nbWeg4MFo8RrSA1wzhy2KpXU7TA45B4sRp\"]},\"contracts/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x566b2f2f7bf89d107c66316e12b9cad9fade2f9cc2076bceb2090f54bada22da\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d13d485890a8eb6b2b6b38cf0b7fc39c7fc66462a9553159947ece2de55d9ba3\",\"dweb:/ipfs/QmaSEEBMjMvvrLqxmrskUmDwg86g7RHDa6SYiYiA77SJ1X\"]},\"contracts/base/PeripheryPayments.sol\":{\"keccak256\":\"0x88e12ecce0236f43cac955dee8ae50e8ffba7d133625ba18b590d51b9e030098\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://9f10d1317582a91e7842901c6888c4bb28939817cefa3d3f88458c2ec653b6ed\",\"dweb:/ipfs/QmP2qV22Uq6Pou1VkgNzRnXHzNJ71CBpVBYhYDnLccBx8U\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x57bd5b069f6e66edd42a9b41e5864bfcd2aa7d404337d6c57a083fb589fc59bd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4efa92b18c295755437180f93a19179ef15dfe24a6db10ae876c41247fd4a907\",\"dweb:/ipfs/QmYJTRqE5BEjqyNoZqoctVFgxZF336cK9ba1RSd2LbgFkG\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x5b5789677c6b7e447fd774a5c065d9547c85f22e950e18690f686a6b779d78dc\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c2e45681c8d5c704fbfef7369ff7878e6af2d987ba564eb97148ee6e8db87e49\",\"dweb:/ipfs/Qmeg4ynPmWipSVb6BRj4o8uZRbE2bQk8nCwp9apMAEq8Xk\"]},\"contracts/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xf21a3d7e2bc14386ce7b072b124b580df53441a32591770845860e8947f942d0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6941e21d9bc52bddc65079c5e7bc9d6ffd6553f6ed7f3d3b340996a55115b46f\",\"dweb:/ipfs/QmaDJ9uafahho77WP5izBCRL4W3mVM7NFL5q5QR5YvAC3A\"]},\"contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0x0845f1c8b6a30b2c243a0d285a30ec5653442aec2bc88cd27c83215c6e0f577f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e6303005c2e69c3315875ace1d618459cd8edf4ea499a0f167a83680bd835ae5\",\"dweb:/ipfs/QmcMpVTkGZh6SJoFAbN29w2ABD25zACxRouuqAtCBHATyd\"]},\"contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xdd82100913bcb7c490e9e6912ab33994bd97d5a59e67209826ebf917bc8271c1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ecfc24c77d80aa718604d8a2c4d59460b76b5fd567d15206414e3838dd6698b7\",\"dweb:/ipfs/QmVtUC9dnade4RkzXaSqEFdAkiEftJ777jmT619LX2VLGv\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x0fef3409a5a161cd12b777fdfa86845d64b86f72c78b8312c9e3c92f9017e5c5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9df2c76e4581a1d343ea1dd1d0478df7f1c1eef1b476ccea452367ef5b75e65\",\"dweb:/ipfs/QmWZVBRQcn4ekrmCDFkM4BSRAZ1m72GHzUnfzUn39PwQow\"]}},\"version\":1}"}},"contracts/base/Multicall.sol":{"Multicall":{"abi":[{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"multicall(bytes[])":"ac9650d8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"multicall(bytes[])\":{\"details\":\"The `msg.value` should not be trusted for any method callable from multicall.\",\"params\":{\"data\":\"The encoded function data for each of the calls to make to this contract\"},\"returns\":{\"results\":\"The results from each of the calls passed in via data\"}}},\"title\":\"Multicall\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"multicall(bytes[])\":{\"notice\":\"Call multiple functions in the current contract and return the data from all of them if they all succeed\"}},\"notice\":\"Enables calling multiple methods in a single call to the contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/base/Multicall.sol\":\"Multicall\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/base/Multicall.sol\":{\"keccak256\":\"0xfcfd78c62d2145634a791d5680a1af7055fbd301c415d29c09333c99c37d9037\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0d1c8f4a18cec8ad49e5269c5b07c7f6fd497dfc1b7b777f8ddcfb8055efd803\",\"dweb:/ipfs/QmdeCTnfHM3RGtQuo3DMX9m7gPspGGwQp7ho6m9cJjjnER\"]},\"contracts/interfaces/IMulticall.sol\":{\"keccak256\":\"0xa8f9d0061ee730a522dc4bae6bd5cabb3e997e2c5983da183e912bdca93dfa7b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://496b68d4f72d58cc83cf51bd9cc9c99aaa46dc3c3df7c951a9e50ba29ee33016\",\"dweb:/ipfs/Qmc3bkXwuRP8mDpcKgvLgbCKn8tD8PGCaBjnLHSPMJCRGD\"]}},\"version\":1}"}},"contracts/base/PeripheryImmutableState.sol":{"PeripheryImmutableState":{"abi":[{"inputs":[],"name":"SAMB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"SAMB()":"90793ea8","factory()":"c45a0155"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SAMB\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"SAMB\":{\"return\":\"Returns the address of SAMB\"},\"factory\":{\"return\":\"Returns the address of the AstraDEX CL factory\"}},\"title\":\"Immutable state\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Immutable state used by periphery contracts\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/base/PeripheryImmutableState.sol\":\"PeripheryImmutableState\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x566b2f2f7bf89d107c66316e12b9cad9fade2f9cc2076bceb2090f54bada22da\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d13d485890a8eb6b2b6b38cf0b7fc39c7fc66462a9553159947ece2de55d9ba3\",\"dweb:/ipfs/QmaSEEBMjMvvrLqxmrskUmDwg86g7RHDa6SYiYiA77SJ1X\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]}},\"version\":1}"}},"contracts/base/PeripheryPayments.sol":{"PeripheryPayments":{"abi":[{"inputs":[],"name":"SAMB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refundAMB","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"sweepToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"unwrapSAMB","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"SAMB()":"90793ea8","factory()":"c45a0155","refundAMB()":"c53af304","sweepToken(address,uint256,address)":"df2ab5bb","unwrapSAMB(uint256,address)":"a98ce37f"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SAMB\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"refundAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"sweepToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"unwrapSAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"refundAMB()\":{\"details\":\"Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps that use ether for the input amount\"},\"sweepToken(address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing the token from users\",\"params\":{\"amountMinimum\":\"The minimum amount of token required for a transfer\",\"recipient\":\"The destination address of the token\",\"token\":\"The contract address of the token which will be transferred to `recipient`\"}},\"unwrapSAMB(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of SAMB to unwrap\",\"recipient\":\"The address receiving AMB\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"refundAMB()\":{\"notice\":\"Refunds any AMB balance held by this contract to the `msg.sender`\"},\"sweepToken(address,uint256,address)\":{\"notice\":\"Transfers the full amount of a token held by this contract to recipient\"},\"unwrapSAMB(uint256,address)\":{\"notice\":\"Unwraps the contract's SAMB balance and sends it to recipient as AMB.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/base/PeripheryPayments.sol\":\"PeripheryPayments\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"contracts/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x566b2f2f7bf89d107c66316e12b9cad9fade2f9cc2076bceb2090f54bada22da\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d13d485890a8eb6b2b6b38cf0b7fc39c7fc66462a9553159947ece2de55d9ba3\",\"dweb:/ipfs/QmaSEEBMjMvvrLqxmrskUmDwg86g7RHDa6SYiYiA77SJ1X\"]},\"contracts/base/PeripheryPayments.sol\":{\"keccak256\":\"0x88e12ecce0236f43cac955dee8ae50e8ffba7d133625ba18b590d51b9e030098\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://9f10d1317582a91e7842901c6888c4bb28939817cefa3d3f88458c2ec653b6ed\",\"dweb:/ipfs/QmP2qV22Uq6Pou1VkgNzRnXHzNJ71CBpVBYhYDnLccBx8U\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x57bd5b069f6e66edd42a9b41e5864bfcd2aa7d404337d6c57a083fb589fc59bd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4efa92b18c295755437180f93a19179ef15dfe24a6db10ae876c41247fd4a907\",\"dweb:/ipfs/QmYJTRqE5BEjqyNoZqoctVFgxZF336cK9ba1RSd2LbgFkG\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x5b5789677c6b7e447fd774a5c065d9547c85f22e950e18690f686a6b779d78dc\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c2e45681c8d5c704fbfef7369ff7878e6af2d987ba564eb97148ee6e8db87e49\",\"dweb:/ipfs/Qmeg4ynPmWipSVb6BRj4o8uZRbE2bQk8nCwp9apMAEq8Xk\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x0fef3409a5a161cd12b777fdfa86845d64b86f72c78b8312c9e3c92f9017e5c5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9df2c76e4581a1d343ea1dd1d0478df7f1c1eef1b476ccea452367ef5b75e65\",\"dweb:/ipfs/QmWZVBRQcn4ekrmCDFkM4BSRAZ1m72GHzUnfzUn39PwQow\"]}},\"version\":1}"}},"contracts/base/PeripheryPaymentsWithFee.sol":{"PeripheryPaymentsWithFee":{"abi":[{"inputs":[],"name":"SAMB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refundAMB","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"sweepToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"feeBips","type":"uint256"},{"internalType":"address","name":"feeRecipient","type":"address"}],"name":"sweepTokenWithFee","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"unwrapSAMB","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"feeBips","type":"uint256"},{"internalType":"address","name":"feeRecipient","type":"address"}],"name":"unwrapSAMBWithFee","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"SAMB()":"90793ea8","factory()":"c45a0155","refundAMB()":"c53af304","sweepToken(address,uint256,address)":"df2ab5bb","sweepTokenWithFee(address,uint256,address,uint256,address)":"e0e189a0","unwrapSAMB(uint256,address)":"a98ce37f","unwrapSAMBWithFee(uint256,address,uint256,address)":"97e87d9d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SAMB\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"refundAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"sweepToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeBips\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"sweepTokenWithFee\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"unwrapSAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeBips\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"unwrapSAMBWithFee\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"refundAMB()\":{\"details\":\"Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps that use ether for the input amount\"},\"sweepToken(address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing the token from users\",\"params\":{\"amountMinimum\":\"The minimum amount of token required for a transfer\",\"recipient\":\"The destination address of the token\",\"token\":\"The contract address of the token which will be transferred to `recipient`\"}},\"sweepTokenWithFee(address,uint256,address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing the token from users\"},\"unwrapSAMB(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of SAMB to unwrap\",\"recipient\":\"The address receiving AMB\"}},\"unwrapSAMBWithFee(uint256,address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"refundAMB()\":{\"notice\":\"Refunds any AMB balance held by this contract to the `msg.sender`\"},\"sweepToken(address,uint256,address)\":{\"notice\":\"Transfers the full amount of a token held by this contract to recipient\"},\"sweepTokenWithFee(address,uint256,address,uint256,address)\":{\"notice\":\"Transfers the full amount of a token held by this contract to recipient, with a percentage between 0 (exclusive) and 1 (inclusive) going to feeRecipient\"},\"unwrapSAMB(uint256,address)\":{\"notice\":\"Unwraps the contract's SAMB balance and sends it to recipient as AMB.\"},\"unwrapSAMBWithFee(uint256,address,uint256,address)\":{\"notice\":\"Unwraps the contract's SAMB balance and sends it to recipient as AMB, with a percentage between 0 (exclusive), and 1 (inclusive) going to feeRecipient\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/base/PeripheryPaymentsWithFee.sol\":\"PeripheryPaymentsWithFee\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0x86715eb960f18e01ac94e3bba4614ed51a887fa3c5bd1c43bf80aa98e019cf2d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfc1d5d58e59015086b0e65a6c3a2ddad312e2350480510f6c0c8167f3d71a37\",\"dweb:/ipfs/QmQndULYjFsHKHjMAKLMfc12vWbVB5FawtioHtvwcWRJZp\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"contracts/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x566b2f2f7bf89d107c66316e12b9cad9fade2f9cc2076bceb2090f54bada22da\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d13d485890a8eb6b2b6b38cf0b7fc39c7fc66462a9553159947ece2de55d9ba3\",\"dweb:/ipfs/QmaSEEBMjMvvrLqxmrskUmDwg86g7RHDa6SYiYiA77SJ1X\"]},\"contracts/base/PeripheryPayments.sol\":{\"keccak256\":\"0x88e12ecce0236f43cac955dee8ae50e8ffba7d133625ba18b590d51b9e030098\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://9f10d1317582a91e7842901c6888c4bb28939817cefa3d3f88458c2ec653b6ed\",\"dweb:/ipfs/QmP2qV22Uq6Pou1VkgNzRnXHzNJ71CBpVBYhYDnLccBx8U\"]},\"contracts/base/PeripheryPaymentsWithFee.sol\":{\"keccak256\":\"0x93f6d5b75cb4e7204ae63f45722eb82ac62f732d56cbf31f3a65ce2ea262cc6d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a23090fa2e584774818eeb9e548086b8c383acd9d35830845191fd114bfbf03b\",\"dweb:/ipfs/QmXr9EGVoUMCGttgsDFJZ5UBrBjY42qBV2FRakCDi8aeTs\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x57bd5b069f6e66edd42a9b41e5864bfcd2aa7d404337d6c57a083fb589fc59bd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4efa92b18c295755437180f93a19179ef15dfe24a6db10ae876c41247fd4a907\",\"dweb:/ipfs/QmYJTRqE5BEjqyNoZqoctVFgxZF336cK9ba1RSd2LbgFkG\"]},\"contracts/interfaces/IPeripheryPaymentsWithFee.sol\":{\"keccak256\":\"0x95eb2970f74b59074666d156779b7eeb1a34228476ac26f987f6f563b834098d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bd17994291ec4231d4fa66af52e0cfd4f7883365ecb41f534acf08afffa8806d\",\"dweb:/ipfs/QmUjst3v8zu8DE9Ue3YHJJoRLcZGd9CXP3jVoC2tSAUjs9\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x5b5789677c6b7e447fd774a5c065d9547c85f22e950e18690f686a6b779d78dc\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c2e45681c8d5c704fbfef7369ff7878e6af2d987ba564eb97148ee6e8db87e49\",\"dweb:/ipfs/Qmeg4ynPmWipSVb6BRj4o8uZRbE2bQk8nCwp9apMAEq8Xk\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x0fef3409a5a161cd12b777fdfa86845d64b86f72c78b8312c9e3c92f9017e5c5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9df2c76e4581a1d343ea1dd1d0478df7f1c1eef1b476ccea452367ef5b75e65\",\"dweb:/ipfs/QmWZVBRQcn4ekrmCDFkM4BSRAZ1m72GHzUnfzUn39PwQow\"]}},\"version\":1}"}},"contracts/base/PeripheryValidation.sol":{"PeripheryValidation":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/base/PeripheryValidation.sol\":\"PeripheryValidation\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/base/BlockTimestamp.sol\":{\"keccak256\":\"0x1aa66f71234064a0c0976f62233f2edbd69554e5ad817dc97f318bc8e11f4da6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b3a40450e9d6b0f9cb91b40ffd6215612505bd74e7d954529958f4edc6ee7b93\",\"dweb:/ipfs/QmewsUCHK5N5KhNtqEwK8JgsXFADyFBrQRS5HoDWM5gi3b\"]},\"contracts/base/PeripheryValidation.sol\":{\"keccak256\":\"0xc736bab599912d6212e8414ee4ba7af0c1e08ff6aa11caa85f5f6e07f7d421c3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06f6c13a86900c71fa486fc029a59d1b7eb96162bb42885b5f845d995294893e\",\"dweb:/ipfs/QmUcBxMsmncw9n6eXhzzwSasGBvBGKH5FT8HSrAxrsXV4A\"]}},\"version\":1}"}},"contracts/base/PoolInitializer.sol":{"PoolInitializer":{"abi":[{"inputs":[],"name":"SAMB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"createAndInitializePoolIfNecessary","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"SAMB()":"90793ea8","createAndInitializePoolIfNecessary(address,address,uint24,uint160)":"13ead562","factory()":"c45a0155"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SAMB\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"createAndInitializePoolIfNecessary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"details\":\"This method can be bundled with others via IMulticall for the first action (e.g. mint) performed against a pool\",\"params\":{\"fee\":\"The fee amount of the CL pool for the specified token pair\",\"sqrtPriceX96\":\"The initial square root price of the pool as a Q64.96 value\",\"token0\":\"The contract address of token0 of the pool\",\"token1\":\"The contract address of token1 of the pool\"},\"returns\":{\"pool\":\"Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary\"}}},\"title\":\"Creates and initializes CL Pools\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"notice\":\"Creates a new pool if it does not exist, then initializes if not initialized\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/base/PoolInitializer.sol\":\"PoolInitializer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLFactory.sol\":{\"keccak256\":\"0x380f33c6cac2893f4e290a3c1a63f9f0bb9d42aff4a74c9b0fe9eebceb5721c3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4cfd26554cf5fd3f7391e73ba4559fb1df2b8f3028c7f27d694b698250371c6c\",\"dweb:/ipfs/QmepfyejMAZbpJETuMC9naUwXLVihfXLXvCQsyMwYq1hy6\"]},\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"contracts/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x566b2f2f7bf89d107c66316e12b9cad9fade2f9cc2076bceb2090f54bada22da\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d13d485890a8eb6b2b6b38cf0b7fc39c7fc66462a9553159947ece2de55d9ba3\",\"dweb:/ipfs/QmaSEEBMjMvvrLqxmrskUmDwg86g7RHDa6SYiYiA77SJ1X\"]},\"contracts/base/PoolInitializer.sol\":{\"keccak256\":\"0x7a26153c5ae7025d34ba7bab5a9706b98aaada5a29b1805ec2801f058dea67ca\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://9b4f718d03540adab9c16d6df6dbccb7531ca6284f1e7fe1b0d07e5f0ef461ba\",\"dweb:/ipfs/QmXeeKEwUgAekboG7WXgxmr6QwMn3dFSsxEyoTBNoWooRw\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x5d9b76c0eed9d836f8ab1d65a37921c56c46a69802f28c312f239ce159634473\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ab60ec035cd2f600d7e89828bcf1427a674defdcb4c511679144aae42273ba2d\",\"dweb:/ipfs/QmYWy2dAG2Mq4BUwybjVCbGtXYRG8Lz1jRfK6L924YuwRa\"]}},\"version\":1}"}},"contracts/base/SelfPermit.sol":{"SelfPermit":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowed","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowedIfNecessary","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitIfNecessary","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)":"f3995c67","selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)":"4659a494","selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"a4a78f0c","selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"c2e3140a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowed\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowedIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"These functions are expected to be embedded in multicalls to allow EOAs to approve a contract and call a function that requires an approval in a single transaction.\",\"kind\":\"dev\",\"methods\":{\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this).\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this)\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this) Can be used instead of #selfPermitAllowed to prevent calls from failing due to a frontrun of a call to #selfPermitAllowed.\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this). Can be used instead of #selfPermit to prevent calls from failing due to a frontrun of a call to #selfPermit\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}}},\"title\":\"Self Permit\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"}},\"notice\":\"Functionality to call permit on any EIP-2612-compliant token for use in the route\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/base/SelfPermit.sol\":\"SelfPermit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"contracts/base/SelfPermit.sol\":{\"keccak256\":\"0xe75aedfc1eff6c84adac82b2bc41d197127a74530f0c344a7a122a6c8ec186be\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://05150ae691e10f2c9c82ad46de86c8b6683d8eba995e6f9ff82eaefc064902e9\",\"dweb:/ipfs/QmdKxxmxCPxV7qe11MbRhpaQXDAnnKWH1BoTMmEXYPAA7g\"]},\"contracts/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0x402d04301ffd41853f4949a574b8853c46d076910ed734f5e4478bf64369a3ed\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6a5536d179ff3777920ff8ed60cfc457f7a4dda1373c8f0394b2a8e0fe537525\",\"dweb:/ipfs/QmdaYGikTmmi2vbECnoomZ8vS8PBiD4Bq8BoFCYqFZmKgR\"]},\"contracts/interfaces/external/IERC20PermitAllowed.sol\":{\"keccak256\":\"0x8c4c1b8e724e0a78cb691d703dd37cd91b8bd6600537fb227807a194025a792d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://783be851155842a02cdb0483c3a69ecc0e7ae8545f65cec1d4aeb355b2026a7d\",\"dweb:/ipfs/QmZNBQosTjpGNKB3Eo2K6Zzye7FYiLVoEki5iPB2Y69jz2\"]}},\"version\":1}"}},"contracts/examples/PairFlash.sol":{"PairFlash":{"abi":[{"inputs":[{"internalType":"contract ISwapRouter","name":"_swapRouter","type":"address"},{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_SAMB","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"SAMB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee0","type":"uint256"},{"internalType":"uint256","name":"fee1","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"astraCLFlashCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee1","type":"uint24"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"uint24","name":"fee2","type":"uint24"},{"internalType":"uint24","name":"fee3","type":"uint24"}],"internalType":"struct PairFlash.FlashParams","name":"params","type":"tuple"}],"name":"initFlash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"refundAMB","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract ISwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"sweepToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"unwrapSAMB","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:710:115","statements":[{"nodeType":"YulBlock","src":"6:3:115","statements":[]},{"body":{"nodeType":"YulBlock","src":"150:420:115","statements":[{"body":{"nodeType":"YulBlock","src":"196:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"205:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"213:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"198:6:115"},"nodeType":"YulFunctionCall","src":"198:22:115"},"nodeType":"YulExpressionStatement","src":"198:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"171:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"167:3:115"},"nodeType":"YulFunctionCall","src":"167:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"192:2:115","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"163:3:115"},"nodeType":"YulFunctionCall","src":"163:32:115"},"nodeType":"YulIf","src":"160:2:115"},{"nodeType":"YulVariableDeclaration","src":"231:29:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"250:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"244:5:115"},"nodeType":"YulFunctionCall","src":"244:16:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"235:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"296:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"269:26:115"},"nodeType":"YulFunctionCall","src":"269:33:115"},"nodeType":"YulExpressionStatement","src":"269:33:115"},{"nodeType":"YulAssignment","src":"311:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"321:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"311:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"335:40:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"360:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"371:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"356:3:115"},"nodeType":"YulFunctionCall","src":"356:18:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"350:5:115"},"nodeType":"YulFunctionCall","src":"350:25:115"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"339:7:115","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"411:7:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"384:26:115"},"nodeType":"YulFunctionCall","src":"384:35:115"},"nodeType":"YulExpressionStatement","src":"384:35:115"},{"nodeType":"YulAssignment","src":"428:17:115","value":{"name":"value_1","nodeType":"YulIdentifier","src":"438:7:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"428:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"454:40:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"479:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"490:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"475:3:115"},"nodeType":"YulFunctionCall","src":"475:18:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"469:5:115"},"nodeType":"YulFunctionCall","src":"469:25:115"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"458:7:115","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"530:7:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"503:26:115"},"nodeType":"YulFunctionCall","src":"503:35:115"},"nodeType":"YulExpressionStatement","src":"503:35:115"},{"nodeType":"YulAssignment","src":"547:17:115","value":{"name":"value_2","nodeType":"YulIdentifier","src":"557:7:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"547:6:115"}]}]},"name":"abi_decode_tuple_t_contract$_ISwapRouter_$10141t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"100:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"111:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"123:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"131:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"139:6:115","type":""}],"src":"14:556:115"},{"body":{"nodeType":"YulBlock","src":"622:86:115","statements":[{"body":{"nodeType":"YulBlock","src":"686:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"695:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"698:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"688:6:115"},"nodeType":"YulFunctionCall","src":"688:12:115"},"nodeType":"YulExpressionStatement","src":"688:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"645:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"656:5:115"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"671:3:115","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"676:1:115","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"667:3:115"},"nodeType":"YulFunctionCall","src":"667:11:115"},{"kind":"number","nodeType":"YulLiteral","src":"680:1:115","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"663:3:115"},"nodeType":"YulFunctionCall","src":"663:19:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"652:3:115"},"nodeType":"YulFunctionCall","src":"652:31:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"642:2:115"},"nodeType":"YulFunctionCall","src":"642:42:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"635:6:115"},"nodeType":"YulFunctionCall","src":"635:50:115"},"nodeType":"YulIf","src":"632:2:115"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"611:5:115","type":""}],"src":"575:133:115"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_contract$_ISwapRouter_$10141t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        let value_2 := mload(add(headStart, 64))\n        validator_revert_t_address(value_2)\n        value2 := value_2\n    }\n    function validator_revert_t_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n}","id":115,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60e06040523480156200001157600080fd5b5060405162001a9338038062001a9383398101604081905262000034916200005c565b6001600160601b0319606092831b811660805290821b811660a05291901b1660c052620000c8565b60008060006060848603121562000071578283fd5b83516200007e81620000af565b60208501519093506200009181620000af565b6040850151909250620000a481620000af565b809150509250925092565b6001600160a01b0381168114620000c557600080fd5b50565b60805160601c60a05160601c60c05160601c61195a6200013960003980610561528061074b528061077852806108c85280610976525080609c5280610377528061039d52806104c752806110f0528061115052806111d1525080610255528061058552806106eb525061195a6000f3fe60806040526004361061007f5760003560e01c8063c45a01551161004e578063c45a0155146101a2578063c53af304146101b7578063df2ab5bb146101bf578063e5a389c1146101d25761012a565b80632384463b1461012f57806390793ea81461014f578063a98ce37f1461017a578063c31c9c071461018d5761012a565b3661012a573373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461012857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e6f742053414d42000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b34801561013b57600080fd5b5061012861014a36600461161f565b6101f2565b34801561015b57600080fd5b50610164610375565b6040516101719190611781565b60405180910390f35b6101286101883660046116d2565b610399565b34801561019957600080fd5b5061016461055f565b3480156101ae57600080fd5b50610164610583565b6101286105a7565b6101286101cd3660046114e8565b6105b9565b3480156101de57600080fd5b506101286101ed3660046116fd565b6106d6565b60006040518060600160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015162ffffff168152509050600061027a7f000000000000000000000000000000000000000000000000000000000000000083610a73565b90508073ffffffffffffffffffffffffffffffffffffffff1663490e6cbc30856060015186608001516040518060c0016040528089606001518152602001896080015181526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018960a0015162ffffff1681526020018960c0015162ffffff1681525060405160200161031091906118bb565b6040516020818303038152906040526040518563ffffffff1660e01b815260040161033e94939291906117a2565b600060405180830381600087803b15801561035857600080fd5b505af115801561036c573d6000803e3d6000fd5b50505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561042257600080fd5b505afa158015610436573d6000803e3d6000fd5b505050506040513d602081101561044c57600080fd5b50519050828110156104bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e73756666696369656e742053414d42000000000000000000000000000000604482015290519081900360640190fd5b801561055a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561053857600080fd5b505af115801561054c573d6000803e3d6000fd5b5050505061055a8282610ba9565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b47156105b7576105b73347610ba9565b565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561062257600080fd5b505afa158015610636573d6000803e3d6000fd5b505050506040513d602081101561064c57600080fd5b50519050828110156106bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b80156106d0576106d0848383610cf7565b50505050565b60006106e482840184611523565b90506107147f00000000000000000000000000000000000000000000000000000000000000008260600151610ed3565b506060810151805160209091015182516000906107319089610f09565b90506000610743856020015189610f09565b9050610774837f00000000000000000000000000000000000000000000000000000000000000008760200151610f19565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf3896040518061010001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200142815260200189602001518152602001868152602001600073ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b815260040161086e919061183f565b602060405180830381600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c091906116ba565b90506108f1857f00000000000000000000000000000000000000000000000000000000000000008860000151610f19565b604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260a08981015162ffffff168385015230606084015242608084015289519083015260c08201859052600060e0830181905292517f414bf3890000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000009091169163414bf389916109ac919060040161183f565b602060405180830381600087803b1580156109c657600080fd5b505af11580156109da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fe91906116ba565b90508315610a1257610a12863033876110ee565b8215610a2457610a24853033866110ee565b83821115610a455760008483039050610a4387308a60400151846110ee565b505b82811115610a665760008382039050610a6486308a60400151846110ee565b505b5050505050505050505050565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610610ab557600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0460d5808301919091528251808303909101815260f5909101909152805191012090565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310610c2057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610be3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610c82576040519150601f19603f3d011682016040523d82523d6000602084013e610c87565b606091505b505090508061055a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b60208310610dcc57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d8f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610e2e576040519150601f19603f3d011682016040523d82523d6000602084013e610e33565b606091505b5091509150818015610e61575080511580610e615750808060200190516020811015610e5e57600080fd5b50515b610ecc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5050505050565b6000610edf8383610a73565b90503373ffffffffffffffffffffffffffffffffffffffff821614610f0357600080fd5b92915050565b80820182811015610f0357600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b60208310610fee57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610fb1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611050576040519150601f19603f3d011682016040523d82523d6000602084013e611055565b606091505b5091509150818015611083575080511580611083575080806020019051602081101561108057600080fd5b50515b610ecc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5341000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156111495750804710155b15611292577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156111b657600080fd5b505af11580156111ca573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561126057600080fd5b505af1158015611274573d6000803e3d6000fd5b505050506040513d602081101561128a57600080fd5b506106d09050565b73ffffffffffffffffffffffffffffffffffffffff83163014156112c0576112bb848383610cf7565b6106d0565b6106d0848484846040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000178152925182516000948594938a169392918291908083835b602083106113a457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611367565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611406576040519150601f19603f3d011682016040523d82523d6000602084013e61140b565b606091505b5091509150818015611439575080511580611439575080806020019051602081101561143657600080fd5b50515b6114a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354460000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b505050505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114d057600080fd5b919050565b803562ffffff811681146114d057600080fd5b6000806000606084860312156114fc578283fd5b611505846114ac565b92506020840135915061151a604085016114ac565b90509250925092565b6000818303610100811215611536578182fd5b6040805160c0810167ffffffffffffffff828210818311171561155557fe5b81845286358352602087013560208401526115718488016114ac565b8484015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0860112156115a4578586fd5b8351945060608501915084821081831117156115bc57fe5b5082526115cb606086016114ac565b83526115d9608086016114ac565b60208401526115ea60a086016114d5565b8284015282606082015261160060c086016114d5565b608082015261161160e086016114d5565b60a082015295945050505050565b600060e08284031215611630578081fd5b60405160e0810181811067ffffffffffffffff8211171561164d57fe5b604052611659836114ac565b8152611667602084016114ac565b6020820152611678604084016114d5565b6040820152606083013560608201526080830135608082015261169d60a084016114d5565b60a08201526116ae60c084016114d5565b60c08201529392505050565b6000602082840312156116cb578081fd5b5051919050565b600080604083850312156116e4578182fd5b823591506116f4602084016114ac565b90509250929050565b60008060008060608587031215611712578081fd5b8435935060208501359250604085013567ffffffffffffffff80821115611737578283fd5b818701915087601f83011261174a578283fd5b813581811115611758578384fd5b886020828501011115611769578384fd5b95989497505060200194505050565b62ffffff169052565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8616825260208581840152846040840152608060608401528351806080850152825b818110156117f75785810183015185820160a0015282016117db565b81811115611808578360a083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160a0019695505050505050565b60006101008201905073ffffffffffffffffffffffffffffffffffffffff80845116835280602085015116602084015262ffffff60408501511660408401528060608501511660608401526080840151608084015260a084015160a084015260c084015160c08401528060e08501511660e08401525092915050565b6000610100820190508251825260208301516020830152604083015173ffffffffffffffffffffffffffffffffffffffff8082166040850152606085015191508082511660608501528060208301511660808501525062ffffff60408201511660a084015250608083015161193360c0840182611778565b5060a083015161194660e0840182611778565b509291505056fea164736f6c6343000706000a","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1A93 CODESIZE SUB DUP1 PUSH3 0x1A93 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x5C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP1 DUP3 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 SWAP1 SHL AND PUSH1 0xC0 MSTORE PUSH3 0xC8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x71 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH3 0x7E DUP2 PUSH3 0xAF JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x91 DUP2 PUSH3 0xAF JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0xA4 DUP2 PUSH3 0xAF JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0xC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x195A PUSH3 0x139 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x561 MSTORE DUP1 PUSH2 0x74B MSTORE DUP1 PUSH2 0x778 MSTORE DUP1 PUSH2 0x8C8 MSTORE DUP1 PUSH2 0x976 MSTORE POP DUP1 PUSH1 0x9C MSTORE DUP1 PUSH2 0x377 MSTORE DUP1 PUSH2 0x39D MSTORE DUP1 PUSH2 0x4C7 MSTORE DUP1 PUSH2 0x10F0 MSTORE DUP1 PUSH2 0x1150 MSTORE DUP1 PUSH2 0x11D1 MSTORE POP DUP1 PUSH2 0x255 MSTORE DUP1 PUSH2 0x585 MSTORE DUP1 PUSH2 0x6EB MSTORE POP PUSH2 0x195A PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC45A0155 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x1A2 JUMPI DUP1 PUSH4 0xC53AF304 EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0xDF2AB5BB EQ PUSH2 0x1BF JUMPI DUP1 PUSH4 0xE5A389C1 EQ PUSH2 0x1D2 JUMPI PUSH2 0x12A JUMP JUMPDEST DUP1 PUSH4 0x2384463B EQ PUSH2 0x12F JUMPI DUP1 PUSH4 0x90793EA8 EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0xA98CE37F EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0xC31C9C07 EQ PUSH2 0x18D JUMPI PUSH2 0x12A JUMP JUMPDEST CALLDATASIZE PUSH2 0x12A JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x128 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F742053414D42000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x128 PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0x161F JUMP JUMPDEST PUSH2 0x1F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x375 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x171 SWAP2 SWAP1 PUSH2 0x1781 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 PUSH2 0x188 CALLDATASIZE PUSH1 0x4 PUSH2 0x16D2 JUMP JUMPDEST PUSH2 0x399 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x55F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x583 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x5A7 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x1CD CALLDATASIZE PUSH1 0x4 PUSH2 0x14E8 JUMP JUMPDEST PUSH2 0x5B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x128 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x16FD JUMP JUMPDEST PUSH2 0x6D6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x40 ADD MLOAD PUSH3 0xFFFFFF AND DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH2 0x27A PUSH32 0x0 DUP4 PUSH2 0xA73 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x490E6CBC ADDRESS DUP6 PUSH1 0x60 ADD MLOAD DUP7 PUSH1 0x80 ADD MLOAD PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH1 0x60 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x80 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0xA0 ADD MLOAD PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0xC0 ADD MLOAD PUSH3 0xFFFFFF AND DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x310 SWAP2 SWAP1 PUSH2 0x18BB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33E SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x17A2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x358 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x36C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x436 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x4BF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742053414D42000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x55A JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x54C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x55A DUP3 DUP3 PUSH2 0xBA9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST SELFBALANCE ISZERO PUSH2 0x5B7 JUMPI PUSH2 0x5B7 CALLER SELFBALANCE PUSH2 0xBA9 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x636 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x64C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x6BF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E7420746F6B656E0000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x6D0 JUMPI PUSH2 0x6D0 DUP5 DUP4 DUP4 PUSH2 0xCF7 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6E4 DUP3 DUP5 ADD DUP5 PUSH2 0x1523 JUMP JUMPDEST SWAP1 POP PUSH2 0x714 PUSH32 0x0 DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0xED3 JUMP JUMPDEST POP PUSH1 0x60 DUP2 ADD MLOAD DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x731 SWAP1 DUP10 PUSH2 0xF09 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x743 DUP6 PUSH1 0x20 ADD MLOAD DUP10 PUSH2 0xF09 JUMP JUMPDEST SWAP1 POP PUSH2 0x774 DUP4 PUSH32 0x0 DUP8 PUSH1 0x20 ADD MLOAD PUSH2 0xF19 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x414BF389 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x80 ADD MLOAD PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x20 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x86E SWAP2 SWAP1 PUSH2 0x183F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x888 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x89C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8C0 SWAP2 SWAP1 PUSH2 0x16BA JUMP JUMPDEST SWAP1 POP PUSH2 0x8F1 DUP6 PUSH32 0x0 DUP9 PUSH1 0x0 ADD MLOAD PUSH2 0xF19 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND DUP3 MSTORE DUP7 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0xA0 DUP10 DUP2 ADD MLOAD PUSH3 0xFFFFFF AND DUP4 DUP6 ADD MSTORE ADDRESS PUSH1 0x60 DUP5 ADD MSTORE TIMESTAMP PUSH1 0x80 DUP5 ADD MSTORE DUP10 MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 PUSH1 0xE0 DUP4 ADD DUP2 SWAP1 MSTORE SWAP3 MLOAD PUSH32 0x414BF38900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH4 0x414BF389 SWAP2 PUSH2 0x9AC SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9FE SWAP2 SWAP1 PUSH2 0x16BA JUMP JUMPDEST SWAP1 POP DUP4 ISZERO PUSH2 0xA12 JUMPI PUSH2 0xA12 DUP7 ADDRESS CALLER DUP8 PUSH2 0x10EE JUMP JUMPDEST DUP3 ISZERO PUSH2 0xA24 JUMPI PUSH2 0xA24 DUP6 ADDRESS CALLER DUP7 PUSH2 0x10EE JUMP JUMPDEST DUP4 DUP3 GT ISZERO PUSH2 0xA45 JUMPI PUSH1 0x0 DUP5 DUP4 SUB SWAP1 POP PUSH2 0xA43 DUP8 ADDRESS DUP11 PUSH1 0x40 ADD MLOAD DUP5 PUSH2 0x10EE JUMP JUMPDEST POP JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xA66 JUMPI PUSH1 0x0 DUP4 DUP3 SUB SWAP1 POP PUSH2 0xA64 DUP7 ADDRESS DUP11 PUSH1 0x40 ADD MLOAD DUP5 PUSH2 0x10EE JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0xAB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 DUP6 ADD MSTORE SWAP4 SWAP1 SWAP2 AND DUP4 DUP6 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x80 DUP5 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 PUSH1 0xD5 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xF5 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xC20 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xBE3 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xC82 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xC87 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x55A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354450000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xDCC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xD8F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE2E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE33 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0xE61 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0xE61 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0xECC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEDF DUP4 DUP4 PUSH2 0xA73 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0xF03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0xF03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xFEE JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xFB1 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1050 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1055 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1083 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1083 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1080 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0xECC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5341000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x1149 JUMPI POP DUP1 SELFBALANCE LT ISZERO JUMPDEST ISZERO PUSH2 0x1292 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1274 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x128A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D0 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ADDRESS EQ ISZERO PUSH2 0x12C0 JUMPI PUSH2 0x12BB DUP5 DUP4 DUP4 PUSH2 0xCF7 JUMP JUMPDEST PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x6D0 DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x13A4 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1367 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1406 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x140B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1439 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1439 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x14A4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354460000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x14D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x14D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x14FC JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1505 DUP5 PUSH2 0x14AC JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0x151A PUSH1 0x40 DUP6 ADD PUSH2 0x14AC JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB PUSH2 0x100 DUP2 SLT ISZERO PUSH2 0x1536 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP3 DUP3 LT DUP2 DUP4 GT OR ISZERO PUSH2 0x1555 JUMPI INVALID JUMPDEST DUP2 DUP5 MSTORE DUP7 CALLDATALOAD DUP4 MSTORE PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1571 DUP5 DUP9 ADD PUSH2 0x14AC JUMP JUMPDEST DUP5 DUP5 ADD MSTORE PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP7 ADD SLT ISZERO PUSH2 0x15A4 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP4 MLOAD SWAP5 POP PUSH1 0x60 DUP6 ADD SWAP2 POP DUP5 DUP3 LT DUP2 DUP4 GT OR ISZERO PUSH2 0x15BC JUMPI INVALID JUMPDEST POP DUP3 MSTORE PUSH2 0x15CB PUSH1 0x60 DUP7 ADD PUSH2 0x14AC JUMP JUMPDEST DUP4 MSTORE PUSH2 0x15D9 PUSH1 0x80 DUP7 ADD PUSH2 0x14AC JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x15EA PUSH1 0xA0 DUP7 ADD PUSH2 0x14D5 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE DUP3 PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x1600 PUSH1 0xC0 DUP7 ADD PUSH2 0x14D5 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x1611 PUSH1 0xE0 DUP7 ADD PUSH2 0x14D5 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1630 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x164D JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x1659 DUP4 PUSH2 0x14AC JUMP JUMPDEST DUP2 MSTORE PUSH2 0x1667 PUSH1 0x20 DUP5 ADD PUSH2 0x14AC JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1678 PUSH1 0x40 DUP5 ADD PUSH2 0x14D5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x169D PUSH1 0xA0 DUP5 ADD PUSH2 0x14D5 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x16AE PUSH1 0xC0 DUP5 ADD PUSH2 0x14D5 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16CB JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x16E4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x16F4 PUSH1 0x20 DUP5 ADD PUSH2 0x14AC JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1712 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1737 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x174A JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1758 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1769 JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP3 MSTORE PUSH1 0x20 DUP6 DUP2 DUP5 ADD MSTORE DUP5 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP5 ADD MSTORE DUP4 MLOAD DUP1 PUSH1 0x80 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x17F7 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0xA0 ADD MSTORE DUP3 ADD PUSH2 0x17DB JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x1808 JUMPI DUP4 PUSH1 0xA0 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0xA0 ADD SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 ADD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 MLOAD AND DUP4 MSTORE DUP1 PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0xFFFFFF PUSH1 0x40 DUP6 ADD MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE DUP1 PUSH1 0x60 DUP6 ADD MLOAD AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP5 ADD MLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0xC0 DUP5 ADD MSTORE DUP1 PUSH1 0xE0 DUP6 ADD MLOAD AND PUSH1 0xE0 DUP5 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 ADD SWAP1 POP DUP3 MLOAD DUP3 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 MLOAD AND PUSH1 0x60 DUP6 ADD MSTORE DUP1 PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x80 DUP6 ADD MSTORE POP PUSH3 0xFFFFFF PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0xA0 DUP5 ADD MSTORE POP PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x1933 PUSH1 0xC0 DUP5 ADD DUP3 PUSH2 0x1778 JUMP JUMPDEST POP PUSH1 0xA0 DUP4 ADD MLOAD PUSH2 0x1946 PUSH1 0xE0 DUP5 ADD DUP3 PUSH2 0x1778 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"720:5135:56:-:0;;;911:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;520:18:50;;;;;;;;548:12;;;;;;;1032:24:56;;;;::::1;::::0;720:5135;;14:556:115;;;;192:2;180:9;171:7;167:23;163:32;160:2;;;213:6;205;198:22;160:2;250:9;244:16;269:33;296:5;269:33;:::i;:::-;371:2;356:18;;350:25;321:5;;-1:-1:-1;384:35:115;350:25;384:35;:::i;:::-;490:2;475:18;;469:25;438:7;;-1:-1:-1;503:35:115;469:25;503:35;:::i;:::-;557:7;547:17;;;150:420;;;;;:::o;575:133::-;-1:-1:-1;;;;;652:31:115;;642:42;;632:2;;698:1;695;688:12;632:2;622:86;:::o;:::-;720:5135:56;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7629:115","statements":[{"nodeType":"YulBlock","src":"6:3:115","statements":[]},{"body":{"nodeType":"YulBlock","src":"65:147:115","statements":[{"nodeType":"YulAssignment","src":"75:29:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"97:6:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"84:12:115"},"nodeType":"YulFunctionCall","src":"84:20:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"75:5:115"}]},{"body":{"nodeType":"YulBlock","src":"190:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"199:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"202:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"192:6:115"},"nodeType":"YulFunctionCall","src":"192:12:115"},"nodeType":"YulExpressionStatement","src":"192:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"126:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"137:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"144:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"133:3:115"},"nodeType":"YulFunctionCall","src":"133:54:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"123:2:115"},"nodeType":"YulFunctionCall","src":"123:65:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"116:6:115"},"nodeType":"YulFunctionCall","src":"116:73:115"},"nodeType":"YulIf","src":"113:2:115"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"44:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"55:5:115","type":""}],"src":"14:198:115"},{"body":{"nodeType":"YulBlock","src":"267:113:115","statements":[{"nodeType":"YulAssignment","src":"277:29:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"299:6:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"286:12:115"},"nodeType":"YulFunctionCall","src":"286:20:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"277:5:115"}]},{"body":{"nodeType":"YulBlock","src":"358:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"367:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"370:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"360:6:115"},"nodeType":"YulFunctionCall","src":"360:12:115"},"nodeType":"YulExpressionStatement","src":"360:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"328:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"339:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"346:8:115","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"335:3:115"},"nodeType":"YulFunctionCall","src":"335:20:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"325:2:115"},"nodeType":"YulFunctionCall","src":"325:31:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"318:6:115"},"nodeType":"YulFunctionCall","src":"318:39:115"},"nodeType":"YulIf","src":"315:2:115"}]},"name":"abi_decode_t_uint24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"246:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"257:5:115","type":""}],"src":"217:163:115"},{"body":{"nodeType":"YulBlock","src":"489:238:115","statements":[{"body":{"nodeType":"YulBlock","src":"535:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"544:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"552:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"537:6:115"},"nodeType":"YulFunctionCall","src":"537:22:115"},"nodeType":"YulExpressionStatement","src":"537:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"510:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"519:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"506:3:115"},"nodeType":"YulFunctionCall","src":"506:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"531:2:115","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"502:3:115"},"nodeType":"YulFunctionCall","src":"502:32:115"},"nodeType":"YulIf","src":"499:2:115"},{"nodeType":"YulAssignment","src":"570:41:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"601:9:115"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"580:20:115"},"nodeType":"YulFunctionCall","src":"580:31:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"570:6:115"}]},{"nodeType":"YulAssignment","src":"620:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"647:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"658:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"643:3:115"},"nodeType":"YulFunctionCall","src":"643:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"630:12:115"},"nodeType":"YulFunctionCall","src":"630:32:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"620:6:115"}]},{"nodeType":"YulAssignment","src":"671:50:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"706:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"717:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"702:3:115"},"nodeType":"YulFunctionCall","src":"702:18:115"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"681:20:115"},"nodeType":"YulFunctionCall","src":"681:40:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"671:6:115"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"439:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"450:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"462:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"470:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"478:6:115","type":""}],"src":"385:342:115"},{"body":{"nodeType":"YulBlock","src":"837:1277:115","statements":[{"nodeType":"YulVariableDeclaration","src":"847:33:115","value":{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"861:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"870:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"857:3:115"},"nodeType":"YulFunctionCall","src":"857:23:115"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"851:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"905:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"914:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"922:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"907:6:115"},"nodeType":"YulFunctionCall","src":"907:22:115"},"nodeType":"YulExpressionStatement","src":"907:22:115"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"896:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"900:3:115","type":"","value":"256"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"892:3:115"},"nodeType":"YulFunctionCall","src":"892:12:115"},"nodeType":"YulIf","src":"889:2:115"},{"nodeType":"YulVariableDeclaration","src":"940:12:115","value":{"kind":"number","nodeType":"YulLiteral","src":"950:2:115","type":"","value":"64"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"944:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"961:23:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"981:2:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"975:5:115"},"nodeType":"YulFunctionCall","src":"975:9:115"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"965:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"993:35:115","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1015:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"1023:4:115","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1011:3:115"},"nodeType":"YulFunctionCall","src":"1011:17:115"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"997:10:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1037:28:115","value":{"kind":"number","nodeType":"YulLiteral","src":"1047:18:115","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"1041:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"1124:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"1126:7:115"},"nodeType":"YulFunctionCall","src":"1126:9:115"},"nodeType":"YulExpressionStatement","src":"1126:9:115"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1083:10:115"},{"name":"_3","nodeType":"YulIdentifier","src":"1095:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1080:2:115"},"nodeType":"YulFunctionCall","src":"1080:18:115"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1103:10:115"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1115:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1100:2:115"},"nodeType":"YulFunctionCall","src":"1100:22:115"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1077:2:115"},"nodeType":"YulFunctionCall","src":"1077:46:115"},"nodeType":"YulIf","src":"1074:2:115"},{"expression":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1153:2:115"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1157:10:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1146:6:115"},"nodeType":"YulFunctionCall","src":"1146:22:115"},"nodeType":"YulExpressionStatement","src":"1146:22:115"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1184:6:115"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1205:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1192:12:115"},"nodeType":"YulFunctionCall","src":"1192:23:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1177:6:115"},"nodeType":"YulFunctionCall","src":"1177:39:115"},"nodeType":"YulExpressionStatement","src":"1177:39:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1236:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"1244:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1232:3:115"},"nodeType":"YulFunctionCall","src":"1232:15:115"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1266:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1277:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1262:3:115"},"nodeType":"YulFunctionCall","src":"1262:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1249:12:115"},"nodeType":"YulFunctionCall","src":"1249:32:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1225:6:115"},"nodeType":"YulFunctionCall","src":"1225:57:115"},"nodeType":"YulExpressionStatement","src":"1225:57:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1302:6:115"},{"name":"_2","nodeType":"YulIdentifier","src":"1310:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1298:3:115"},"nodeType":"YulFunctionCall","src":"1298:15:115"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1340:9:115"},{"name":"_2","nodeType":"YulIdentifier","src":"1351:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1336:3:115"},"nodeType":"YulFunctionCall","src":"1336:18:115"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1315:20:115"},"nodeType":"YulFunctionCall","src":"1315:40:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1291:6:115"},"nodeType":"YulFunctionCall","src":"1291:65:115"},"nodeType":"YulExpressionStatement","src":"1291:65:115"},{"body":{"nodeType":"YulBlock","src":"1453:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1462:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"1470:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1455:6:115"},"nodeType":"YulFunctionCall","src":"1455:22:115"},"nodeType":"YulExpressionStatement","src":"1455:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1376:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"1380:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1372:3:115"},"nodeType":"YulFunctionCall","src":"1372:75:115"},{"kind":"number","nodeType":"YulLiteral","src":"1449:2:115","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1368:3:115"},"nodeType":"YulFunctionCall","src":"1368:84:115"},"nodeType":"YulIf","src":"1365:2:115"},{"nodeType":"YulVariableDeclaration","src":"1488:25:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1510:2:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1504:5:115"},"nodeType":"YulFunctionCall","src":"1504:9:115"},"variables":[{"name":"memPtr_1","nodeType":"YulTypedName","src":"1492:8:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1522:37:115","value":{"arguments":[{"name":"memPtr_1","nodeType":"YulIdentifier","src":"1546:8:115"},{"kind":"number","nodeType":"YulLiteral","src":"1556:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1542:3:115"},"nodeType":"YulFunctionCall","src":"1542:17:115"},"variables":[{"name":"newFreePtr_1","nodeType":"YulTypedName","src":"1526:12:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"1624:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"1626:7:115"},"nodeType":"YulFunctionCall","src":"1626:9:115"},"nodeType":"YulExpressionStatement","src":"1626:9:115"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr_1","nodeType":"YulIdentifier","src":"1577:12:115"},{"name":"_3","nodeType":"YulIdentifier","src":"1591:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1574:2:115"},"nodeType":"YulFunctionCall","src":"1574:20:115"},{"arguments":[{"name":"newFreePtr_1","nodeType":"YulIdentifier","src":"1599:12:115"},{"name":"memPtr_1","nodeType":"YulIdentifier","src":"1613:8:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1596:2:115"},"nodeType":"YulFunctionCall","src":"1596:26:115"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1571:2:115"},"nodeType":"YulFunctionCall","src":"1571:52:115"},"nodeType":"YulIf","src":"1568:2:115"},{"expression":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1653:2:115"},{"name":"newFreePtr_1","nodeType":"YulIdentifier","src":"1657:12:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1646:6:115"},"nodeType":"YulFunctionCall","src":"1646:24:115"},"nodeType":"YulExpressionStatement","src":"1646:24:115"},{"expression":{"arguments":[{"name":"memPtr_1","nodeType":"YulIdentifier","src":"1686:8:115"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1721:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1732:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1717:3:115"},"nodeType":"YulFunctionCall","src":"1717:18:115"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1696:20:115"},"nodeType":"YulFunctionCall","src":"1696:40:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1679:6:115"},"nodeType":"YulFunctionCall","src":"1679:58:115"},"nodeType":"YulExpressionStatement","src":"1679:58:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr_1","nodeType":"YulIdentifier","src":"1757:8:115"},{"kind":"number","nodeType":"YulLiteral","src":"1767:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1753:3:115"},"nodeType":"YulFunctionCall","src":"1753:17:115"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1797:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1808:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1793:3:115"},"nodeType":"YulFunctionCall","src":"1793:19:115"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1772:20:115"},"nodeType":"YulFunctionCall","src":"1772:41:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1746:6:115"},"nodeType":"YulFunctionCall","src":"1746:68:115"},"nodeType":"YulExpressionStatement","src":"1746:68:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr_1","nodeType":"YulIdentifier","src":"1834:8:115"},{"name":"_2","nodeType":"YulIdentifier","src":"1844:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1830:3:115"},"nodeType":"YulFunctionCall","src":"1830:17:115"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1873:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1884:3:115","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1869:3:115"},"nodeType":"YulFunctionCall","src":"1869:19:115"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"1849:19:115"},"nodeType":"YulFunctionCall","src":"1849:40:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1823:6:115"},"nodeType":"YulFunctionCall","src":"1823:67:115"},"nodeType":"YulExpressionStatement","src":"1823:67:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1910:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"1918:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1906:3:115"},"nodeType":"YulFunctionCall","src":"1906:15:115"},{"name":"memPtr_1","nodeType":"YulIdentifier","src":"1923:8:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1899:6:115"},"nodeType":"YulFunctionCall","src":"1899:33:115"},"nodeType":"YulExpressionStatement","src":"1899:33:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1952:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"1960:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1948:3:115"},"nodeType":"YulFunctionCall","src":"1948:16:115"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1990:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2001:4:115","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1986:3:115"},"nodeType":"YulFunctionCall","src":"1986:20:115"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"1966:19:115"},"nodeType":"YulFunctionCall","src":"1966:41:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1941:6:115"},"nodeType":"YulFunctionCall","src":"1941:67:115"},"nodeType":"YulExpressionStatement","src":"1941:67:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2028:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"2036:3:115","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2024:3:115"},"nodeType":"YulFunctionCall","src":"2024:16:115"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2066:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2077:3:115","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2062:3:115"},"nodeType":"YulFunctionCall","src":"2062:19:115"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"2042:19:115"},"nodeType":"YulFunctionCall","src":"2042:40:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2017:6:115"},"nodeType":"YulFunctionCall","src":"2017:66:115"},"nodeType":"YulExpressionStatement","src":"2017:66:115"},{"nodeType":"YulAssignment","src":"2092:16:115","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"2102:6:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2092:6:115"}]}]},"name":"abi_decode_tuple_t_struct$_FlashCallbackData_$9125_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"803:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"814:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"826:6:115","type":""}],"src":"732:1382:115"},{"body":{"nodeType":"YulBlock","src":"2218:785:115","statements":[{"body":{"nodeType":"YulBlock","src":"2265:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2274:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2282:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2267:6:115"},"nodeType":"YulFunctionCall","src":"2267:22:115"},"nodeType":"YulExpressionStatement","src":"2267:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2239:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"2248:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2235:3:115"},"nodeType":"YulFunctionCall","src":"2235:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"2260:3:115","type":"","value":"224"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2231:3:115"},"nodeType":"YulFunctionCall","src":"2231:33:115"},"nodeType":"YulIf","src":"2228:2:115"},{"nodeType":"YulVariableDeclaration","src":"2300:23:115","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2320:2:115","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2314:5:115"},"nodeType":"YulFunctionCall","src":"2314:9:115"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"2304:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2332:34:115","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2354:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"2362:3:115","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2350:3:115"},"nodeType":"YulFunctionCall","src":"2350:16:115"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"2336:10:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"2441:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"2443:7:115"},"nodeType":"YulFunctionCall","src":"2443:9:115"},"nodeType":"YulExpressionStatement","src":"2443:9:115"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2384:10:115"},{"kind":"number","nodeType":"YulLiteral","src":"2396:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2381:2:115"},"nodeType":"YulFunctionCall","src":"2381:34:115"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2420:10:115"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2432:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2417:2:115"},"nodeType":"YulFunctionCall","src":"2417:22:115"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2378:2:115"},"nodeType":"YulFunctionCall","src":"2378:62:115"},"nodeType":"YulIf","src":"2375:2:115"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2470:2:115","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2474:10:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2463:6:115"},"nodeType":"YulFunctionCall","src":"2463:22:115"},"nodeType":"YulExpressionStatement","src":"2463:22:115"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2501:6:115"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2530:9:115"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"2509:20:115"},"nodeType":"YulFunctionCall","src":"2509:31:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2494:6:115"},"nodeType":"YulFunctionCall","src":"2494:47:115"},"nodeType":"YulExpressionStatement","src":"2494:47:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2561:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"2569:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2557:3:115"},"nodeType":"YulFunctionCall","src":"2557:15:115"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2599:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2610:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2595:3:115"},"nodeType":"YulFunctionCall","src":"2595:18:115"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"2574:20:115"},"nodeType":"YulFunctionCall","src":"2574:40:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2550:6:115"},"nodeType":"YulFunctionCall","src":"2550:65:115"},"nodeType":"YulExpressionStatement","src":"2550:65:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2635:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"2643:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2631:3:115"},"nodeType":"YulFunctionCall","src":"2631:15:115"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2672:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2683:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2668:3:115"},"nodeType":"YulFunctionCall","src":"2668:18:115"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"2648:19:115"},"nodeType":"YulFunctionCall","src":"2648:39:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2624:6:115"},"nodeType":"YulFunctionCall","src":"2624:64:115"},"nodeType":"YulExpressionStatement","src":"2624:64:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2708:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"2716:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2704:3:115"},"nodeType":"YulFunctionCall","src":"2704:15:115"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2738:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2749:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2734:3:115"},"nodeType":"YulFunctionCall","src":"2734:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2721:12:115"},"nodeType":"YulFunctionCall","src":"2721:32:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2697:6:115"},"nodeType":"YulFunctionCall","src":"2697:57:115"},"nodeType":"YulExpressionStatement","src":"2697:57:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2774:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"2782:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2770:3:115"},"nodeType":"YulFunctionCall","src":"2770:16:115"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2805:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2816:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2801:3:115"},"nodeType":"YulFunctionCall","src":"2801:19:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2788:12:115"},"nodeType":"YulFunctionCall","src":"2788:33:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2763:6:115"},"nodeType":"YulFunctionCall","src":"2763:59:115"},"nodeType":"YulExpressionStatement","src":"2763:59:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2842:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"2850:3:115","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2838:3:115"},"nodeType":"YulFunctionCall","src":"2838:16:115"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2880:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2891:3:115","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2876:3:115"},"nodeType":"YulFunctionCall","src":"2876:19:115"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"2856:19:115"},"nodeType":"YulFunctionCall","src":"2856:40:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2831:6:115"},"nodeType":"YulFunctionCall","src":"2831:66:115"},"nodeType":"YulExpressionStatement","src":"2831:66:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2917:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"2925:3:115","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2913:3:115"},"nodeType":"YulFunctionCall","src":"2913:16:115"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2955:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2966:3:115","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2951:3:115"},"nodeType":"YulFunctionCall","src":"2951:19:115"}],"functionName":{"name":"abi_decode_t_uint24","nodeType":"YulIdentifier","src":"2931:19:115"},"nodeType":"YulFunctionCall","src":"2931:40:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2906:6:115"},"nodeType":"YulFunctionCall","src":"2906:66:115"},"nodeType":"YulExpressionStatement","src":"2906:66:115"},{"nodeType":"YulAssignment","src":"2981:16:115","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"2991:6:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2981:6:115"}]}]},"name":"abi_decode_tuple_t_struct$_FlashParams_$9343_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2184:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2195:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2207:6:115","type":""}],"src":"2119:884:115"},{"body":{"nodeType":"YulBlock","src":"3089:113:115","statements":[{"body":{"nodeType":"YulBlock","src":"3135:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3144:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3152:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3137:6:115"},"nodeType":"YulFunctionCall","src":"3137:22:115"},"nodeType":"YulExpressionStatement","src":"3137:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3110:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"3119:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3106:3:115"},"nodeType":"YulFunctionCall","src":"3106:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"3131:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3102:3:115"},"nodeType":"YulFunctionCall","src":"3102:32:115"},"nodeType":"YulIf","src":"3099:2:115"},{"nodeType":"YulAssignment","src":"3170:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3186:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3180:5:115"},"nodeType":"YulFunctionCall","src":"3180:16:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3170:6:115"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3055:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3066:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3078:6:115","type":""}],"src":"3008:194:115"},{"body":{"nodeType":"YulBlock","src":"3294:179:115","statements":[{"body":{"nodeType":"YulBlock","src":"3340:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3349:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3357:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3342:6:115"},"nodeType":"YulFunctionCall","src":"3342:22:115"},"nodeType":"YulExpressionStatement","src":"3342:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3315:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"3324:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3311:3:115"},"nodeType":"YulFunctionCall","src":"3311:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"3336:2:115","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3307:3:115"},"nodeType":"YulFunctionCall","src":"3307:32:115"},"nodeType":"YulIf","src":"3304:2:115"},{"nodeType":"YulAssignment","src":"3375:33:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3398:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3385:12:115"},"nodeType":"YulFunctionCall","src":"3385:23:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3375:6:115"}]},{"nodeType":"YulAssignment","src":"3417:50:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3452:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"3463:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3448:3:115"},"nodeType":"YulFunctionCall","src":"3448:18:115"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"3427:20:115"},"nodeType":"YulFunctionCall","src":"3427:40:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3417:6:115"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3252:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3263:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3275:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3283:6:115","type":""}],"src":"3207:266:115"},{"body":{"nodeType":"YulBlock","src":"3601:654:115","statements":[{"body":{"nodeType":"YulBlock","src":"3647:26:115","statements":[{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"3656:6:115"},{"name":"value3","nodeType":"YulIdentifier","src":"3664:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3649:6:115"},"nodeType":"YulFunctionCall","src":"3649:22:115"},"nodeType":"YulExpressionStatement","src":"3649:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3622:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"3631:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3618:3:115"},"nodeType":"YulFunctionCall","src":"3618:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"3643:2:115","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3614:3:115"},"nodeType":"YulFunctionCall","src":"3614:32:115"},"nodeType":"YulIf","src":"3611:2:115"},{"nodeType":"YulAssignment","src":"3682:33:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3705:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3692:12:115"},"nodeType":"YulFunctionCall","src":"3692:23:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3682:6:115"}]},{"nodeType":"YulAssignment","src":"3724:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3751:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"3762:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3747:3:115"},"nodeType":"YulFunctionCall","src":"3747:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3734:12:115"},"nodeType":"YulFunctionCall","src":"3734:32:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3724:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"3775:46:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3806:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"3817:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3802:3:115"},"nodeType":"YulFunctionCall","src":"3802:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3789:12:115"},"nodeType":"YulFunctionCall","src":"3789:32:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3779:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3830:28:115","value":{"kind":"number","nodeType":"YulLiteral","src":"3840:18:115","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3834:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"3885:26:115","statements":[{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"3894:6:115"},{"name":"value3","nodeType":"YulIdentifier","src":"3902:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3887:6:115"},"nodeType":"YulFunctionCall","src":"3887:22:115"},"nodeType":"YulExpressionStatement","src":"3887:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3873:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3881:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3870:2:115"},"nodeType":"YulFunctionCall","src":"3870:14:115"},"nodeType":"YulIf","src":"3867:2:115"},{"nodeType":"YulVariableDeclaration","src":"3920:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3934:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"3945:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3930:3:115"},"nodeType":"YulFunctionCall","src":"3930:22:115"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3924:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"4000:26:115","statements":[{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"4009:6:115"},{"name":"value3","nodeType":"YulIdentifier","src":"4017:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4002:6:115"},"nodeType":"YulFunctionCall","src":"4002:22:115"},"nodeType":"YulExpressionStatement","src":"4002:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3979:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"3983:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3975:3:115"},"nodeType":"YulFunctionCall","src":"3975:13:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3990:7:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3971:3:115"},"nodeType":"YulFunctionCall","src":"3971:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3964:6:115"},"nodeType":"YulFunctionCall","src":"3964:35:115"},"nodeType":"YulIf","src":"3961:2:115"},{"nodeType":"YulVariableDeclaration","src":"4035:30:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4062:2:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4049:12:115"},"nodeType":"YulFunctionCall","src":"4049:16:115"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4039:6:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"4092:26:115","statements":[{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"4101:6:115"},{"name":"value3","nodeType":"YulIdentifier","src":"4109:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4094:6:115"},"nodeType":"YulFunctionCall","src":"4094:22:115"},"nodeType":"YulExpressionStatement","src":"4094:22:115"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4080:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"4088:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4077:2:115"},"nodeType":"YulFunctionCall","src":"4077:14:115"},"nodeType":"YulIf","src":"4074:2:115"},{"body":{"nodeType":"YulBlock","src":"4168:26:115","statements":[{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"4177:6:115"},{"name":"value3","nodeType":"YulIdentifier","src":"4185:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4170:6:115"},"nodeType":"YulFunctionCall","src":"4170:22:115"},"nodeType":"YulExpressionStatement","src":"4170:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4141:2:115"},{"name":"length","nodeType":"YulIdentifier","src":"4145:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4137:3:115"},"nodeType":"YulFunctionCall","src":"4137:15:115"},{"kind":"number","nodeType":"YulLiteral","src":"4154:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4133:3:115"},"nodeType":"YulFunctionCall","src":"4133:24:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4159:7:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4130:2:115"},"nodeType":"YulFunctionCall","src":"4130:37:115"},"nodeType":"YulIf","src":"4127:2:115"},{"nodeType":"YulAssignment","src":"4203:21:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4217:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"4221:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4213:3:115"},"nodeType":"YulFunctionCall","src":"4213:11:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4203:6:115"}]},{"nodeType":"YulAssignment","src":"4233:16:115","value":{"name":"length","nodeType":"YulIdentifier","src":"4243:6:115"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4233:6:115"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3543:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3554:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3566:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3574:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3582:6:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3590:6:115","type":""}],"src":"3478:777:115"},{"body":{"nodeType":"YulBlock","src":"4305:49:115","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4322:3:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4331:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"4338:8:115","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4327:3:115"},"nodeType":"YulFunctionCall","src":"4327:20:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4315:6:115"},"nodeType":"YulFunctionCall","src":"4315:33:115"},"nodeType":"YulExpressionStatement","src":"4315:33:115"}]},"name":"abi_encode_t_uint24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4289:5:115","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4296:3:115","type":""}],"src":"4260:94:115"},{"body":{"nodeType":"YulBlock","src":"4460:125:115","statements":[{"nodeType":"YulAssignment","src":"4470:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4482:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4493:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4478:3:115"},"nodeType":"YulFunctionCall","src":"4478:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4470:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4512:9:115"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4527:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"4535:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4523:3:115"},"nodeType":"YulFunctionCall","src":"4523:55:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4505:6:115"},"nodeType":"YulFunctionCall","src":"4505:74:115"},"nodeType":"YulExpressionStatement","src":"4505:74:115"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4429:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4440:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4451:4:115","type":""}],"src":"4359:226:115"},{"body":{"nodeType":"YulBlock","src":"4801:724:115","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4818:9:115"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4833:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"4841:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4829:3:115"},"nodeType":"YulFunctionCall","src":"4829:55:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4811:6:115"},"nodeType":"YulFunctionCall","src":"4811:74:115"},"nodeType":"YulExpressionStatement","src":"4811:74:115"},{"nodeType":"YulVariableDeclaration","src":"4894:12:115","value":{"kind":"number","nodeType":"YulLiteral","src":"4904:2:115","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4898:2:115","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4926:9:115"},{"name":"_1","nodeType":"YulIdentifier","src":"4937:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4922:3:115"},"nodeType":"YulFunctionCall","src":"4922:18:115"},{"name":"value1","nodeType":"YulIdentifier","src":"4942:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4915:6:115"},"nodeType":"YulFunctionCall","src":"4915:34:115"},"nodeType":"YulExpressionStatement","src":"4915:34:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4969:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4980:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4965:3:115"},"nodeType":"YulFunctionCall","src":"4965:18:115"},{"name":"value2","nodeType":"YulIdentifier","src":"4985:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4958:6:115"},"nodeType":"YulFunctionCall","src":"4958:34:115"},"nodeType":"YulExpressionStatement","src":"4958:34:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5012:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5023:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5008:3:115"},"nodeType":"YulFunctionCall","src":"5008:18:115"},{"kind":"number","nodeType":"YulLiteral","src":"5028:3:115","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5001:6:115"},"nodeType":"YulFunctionCall","src":"5001:31:115"},"nodeType":"YulExpressionStatement","src":"5001:31:115"},{"nodeType":"YulVariableDeclaration","src":"5041:27:115","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"5061:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5055:5:115"},"nodeType":"YulFunctionCall","src":"5055:13:115"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5045:6:115","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5088:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5099:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5084:3:115"},"nodeType":"YulFunctionCall","src":"5084:19:115"},{"name":"length","nodeType":"YulIdentifier","src":"5105:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5077:6:115"},"nodeType":"YulFunctionCall","src":"5077:35:115"},"nodeType":"YulExpressionStatement","src":"5077:35:115"},{"nodeType":"YulVariableDeclaration","src":"5121:13:115","value":{"name":"tail","nodeType":"YulIdentifier","src":"5130:4:115"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5125:1:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"5193:91:115","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5222:9:115"},{"name":"i","nodeType":"YulIdentifier","src":"5233:1:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5218:3:115"},"nodeType":"YulFunctionCall","src":"5218:17:115"},{"kind":"number","nodeType":"YulLiteral","src":"5237:3:115","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5214:3:115"},"nodeType":"YulFunctionCall","src":"5214:27:115"},{"arguments":[{"arguments":[{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"5257:6:115"},{"name":"i","nodeType":"YulIdentifier","src":"5265:1:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5253:3:115"},"nodeType":"YulFunctionCall","src":"5253:14:115"},{"name":"_1","nodeType":"YulIdentifier","src":"5269:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5249:3:115"},"nodeType":"YulFunctionCall","src":"5249:23:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5243:5:115"},"nodeType":"YulFunctionCall","src":"5243:30:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5207:6:115"},"nodeType":"YulFunctionCall","src":"5207:67:115"},"nodeType":"YulExpressionStatement","src":"5207:67:115"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5154:1:115"},{"name":"length","nodeType":"YulIdentifier","src":"5157:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5151:2:115"},"nodeType":"YulFunctionCall","src":"5151:13:115"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5165:19:115","statements":[{"nodeType":"YulAssignment","src":"5167:15:115","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5176:1:115"},{"name":"_1","nodeType":"YulIdentifier","src":"5179:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5172:3:115"},"nodeType":"YulFunctionCall","src":"5172:10:115"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5167:1:115"}]}]},"pre":{"nodeType":"YulBlock","src":"5147:3:115","statements":[]},"src":"5143:141:115"},{"body":{"nodeType":"YulBlock","src":"5318:70:115","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5347:9:115"},{"name":"length","nodeType":"YulIdentifier","src":"5358:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5343:3:115"},"nodeType":"YulFunctionCall","src":"5343:22:115"},{"kind":"number","nodeType":"YulLiteral","src":"5367:3:115","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5339:3:115"},"nodeType":"YulFunctionCall","src":"5339:32:115"},{"name":"tail","nodeType":"YulIdentifier","src":"5373:4:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5332:6:115"},"nodeType":"YulFunctionCall","src":"5332:46:115"},"nodeType":"YulExpressionStatement","src":"5332:46:115"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5299:1:115"},{"name":"length","nodeType":"YulIdentifier","src":"5302:6:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5296:2:115"},"nodeType":"YulFunctionCall","src":"5296:13:115"},"nodeType":"YulIf","src":"5293:2:115"},{"nodeType":"YulAssignment","src":"5397:122:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5413:9:115"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5432:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"5440:2:115","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5428:3:115"},"nodeType":"YulFunctionCall","src":"5428:15:115"},{"kind":"number","nodeType":"YulLiteral","src":"5445:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5424:3:115"},"nodeType":"YulFunctionCall","src":"5424:88:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5409:3:115"},"nodeType":"YulFunctionCall","src":"5409:104:115"},{"kind":"number","nodeType":"YulLiteral","src":"5515:3:115","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5405:3:115"},"nodeType":"YulFunctionCall","src":"5405:114:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5397:4:115"}]}]},"name":"abi_encode_tuple_t_address_payable_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4746:9:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4757:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4765:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4773:6:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4781:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4792:4:115","type":""}],"src":"4590:935:115"},{"body":{"nodeType":"YulBlock","src":"5652:125:115","statements":[{"nodeType":"YulAssignment","src":"5662:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5674:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5685:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5670:3:115"},"nodeType":"YulFunctionCall","src":"5670:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5662:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5704:9:115"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5719:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"5727:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5715:3:115"},"nodeType":"YulFunctionCall","src":"5715:55:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5697:6:115"},"nodeType":"YulFunctionCall","src":"5697:74:115"},"nodeType":"YulExpressionStatement","src":"5697:74:115"}]},"name":"abi_encode_tuple_t_contract$_ISwapRouter_$10141__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5621:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5632:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5643:4:115","type":""}],"src":"5530:247:115"},{"body":{"nodeType":"YulBlock","src":"5965:637:115","statements":[{"nodeType":"YulAssignment","src":"5975:27:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5987:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5998:3:115","type":"","value":"256"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5983:3:115"},"nodeType":"YulFunctionCall","src":"5983:19:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5975:4:115"}]},{"nodeType":"YulVariableDeclaration","src":"6011:52:115","value":{"kind":"number","nodeType":"YulLiteral","src":"6021:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6015:2:115","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6079:9:115"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6100:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6094:5:115"},"nodeType":"YulFunctionCall","src":"6094:13:115"},{"name":"_1","nodeType":"YulIdentifier","src":"6109:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6090:3:115"},"nodeType":"YulFunctionCall","src":"6090:22:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6072:6:115"},"nodeType":"YulFunctionCall","src":"6072:41:115"},"nodeType":"YulExpressionStatement","src":"6072:41:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6133:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"6144:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6129:3:115"},"nodeType":"YulFunctionCall","src":"6129:20:115"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6165:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6173:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6161:3:115"},"nodeType":"YulFunctionCall","src":"6161:17:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6155:5:115"},"nodeType":"YulFunctionCall","src":"6155:24:115"},{"name":"_1","nodeType":"YulIdentifier","src":"6181:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6151:3:115"},"nodeType":"YulFunctionCall","src":"6151:33:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6122:6:115"},"nodeType":"YulFunctionCall","src":"6122:63:115"},"nodeType":"YulExpressionStatement","src":"6122:63:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6205:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"6216:4:115","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6201:3:115"},"nodeType":"YulFunctionCall","src":"6201:20:115"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6237:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6245:4:115","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6233:3:115"},"nodeType":"YulFunctionCall","src":"6233:17:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6227:5:115"},"nodeType":"YulFunctionCall","src":"6227:24:115"},{"kind":"number","nodeType":"YulLiteral","src":"6253:8:115","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6223:3:115"},"nodeType":"YulFunctionCall","src":"6223:39:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6194:6:115"},"nodeType":"YulFunctionCall","src":"6194:69:115"},"nodeType":"YulExpressionStatement","src":"6194:69:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6283:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"6294:4:115","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6279:3:115"},"nodeType":"YulFunctionCall","src":"6279:20:115"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6315:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6323:4:115","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6311:3:115"},"nodeType":"YulFunctionCall","src":"6311:17:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6305:5:115"},"nodeType":"YulFunctionCall","src":"6305:24:115"},{"name":"_1","nodeType":"YulIdentifier","src":"6331:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6301:3:115"},"nodeType":"YulFunctionCall","src":"6301:33:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6272:6:115"},"nodeType":"YulFunctionCall","src":"6272:63:115"},"nodeType":"YulExpressionStatement","src":"6272:63:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6355:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"6366:4:115","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6351:3:115"},"nodeType":"YulFunctionCall","src":"6351:20:115"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6383:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6391:4:115","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6379:3:115"},"nodeType":"YulFunctionCall","src":"6379:17:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6373:5:115"},"nodeType":"YulFunctionCall","src":"6373:24:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6344:6:115"},"nodeType":"YulFunctionCall","src":"6344:54:115"},"nodeType":"YulExpressionStatement","src":"6344:54:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6418:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"6429:4:115","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6414:3:115"},"nodeType":"YulFunctionCall","src":"6414:20:115"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6446:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6454:4:115","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6442:3:115"},"nodeType":"YulFunctionCall","src":"6442:17:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6436:5:115"},"nodeType":"YulFunctionCall","src":"6436:24:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6407:6:115"},"nodeType":"YulFunctionCall","src":"6407:54:115"},"nodeType":"YulExpressionStatement","src":"6407:54:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6481:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"6492:4:115","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6477:3:115"},"nodeType":"YulFunctionCall","src":"6477:20:115"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6509:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6517:4:115","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6505:3:115"},"nodeType":"YulFunctionCall","src":"6505:17:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6499:5:115"},"nodeType":"YulFunctionCall","src":"6499:24:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6470:6:115"},"nodeType":"YulFunctionCall","src":"6470:54:115"},"nodeType":"YulExpressionStatement","src":"6470:54:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6544:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"6555:4:115","type":"","value":"0xe0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6540:3:115"},"nodeType":"YulFunctionCall","src":"6540:20:115"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6576:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6584:4:115","type":"","value":"0xe0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6572:3:115"},"nodeType":"YulFunctionCall","src":"6572:17:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6566:5:115"},"nodeType":"YulFunctionCall","src":"6566:24:115"},{"name":"_1","nodeType":"YulIdentifier","src":"6592:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6562:3:115"},"nodeType":"YulFunctionCall","src":"6562:33:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6533:6:115"},"nodeType":"YulFunctionCall","src":"6533:63:115"},"nodeType":"YulExpressionStatement","src":"6533:63:115"}]},"name":"abi_encode_tuple_t_struct$_ExactInputSingleParams_$10069_memory_ptr__to_t_struct$_ExactInputSingleParams_$10069_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5934:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5945:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5956:4:115","type":""}],"src":"5782:820:115"},{"body":{"nodeType":"YulBlock","src":"6778:849:115","statements":[{"nodeType":"YulAssignment","src":"6788:27:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6800:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"6811:3:115","type":"","value":"256"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6796:3:115"},"nodeType":"YulFunctionCall","src":"6796:19:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6788:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6831:9:115"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6848:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6842:5:115"},"nodeType":"YulFunctionCall","src":"6842:13:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6824:6:115"},"nodeType":"YulFunctionCall","src":"6824:32:115"},"nodeType":"YulExpressionStatement","src":"6824:32:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6876:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"6887:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6872:3:115"},"nodeType":"YulFunctionCall","src":"6872:20:115"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6904:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6912:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6900:3:115"},"nodeType":"YulFunctionCall","src":"6900:17:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6894:5:115"},"nodeType":"YulFunctionCall","src":"6894:24:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6865:6:115"},"nodeType":"YulFunctionCall","src":"6865:54:115"},"nodeType":"YulExpressionStatement","src":"6865:54:115"},{"nodeType":"YulVariableDeclaration","src":"6928:44:115","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6958:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6966:4:115","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6954:3:115"},"nodeType":"YulFunctionCall","src":"6954:17:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6948:5:115"},"nodeType":"YulFunctionCall","src":"6948:24:115"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"6932:12:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6981:52:115","value":{"kind":"number","nodeType":"YulLiteral","src":"6991:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6985:2:115","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7053:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"7064:4:115","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7049:3:115"},"nodeType":"YulFunctionCall","src":"7049:20:115"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"7075:12:115"},{"name":"_1","nodeType":"YulIdentifier","src":"7089:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7071:3:115"},"nodeType":"YulFunctionCall","src":"7071:21:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7042:6:115"},"nodeType":"YulFunctionCall","src":"7042:51:115"},"nodeType":"YulExpressionStatement","src":"7042:51:115"},{"nodeType":"YulVariableDeclaration","src":"7102:46:115","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7134:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"7142:4:115","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7130:3:115"},"nodeType":"YulFunctionCall","src":"7130:17:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7124:5:115"},"nodeType":"YulFunctionCall","src":"7124:24:115"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"7106:14:115","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7168:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"7179:4:115","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7164:3:115"},"nodeType":"YulFunctionCall","src":"7164:20:115"},{"arguments":[{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"7196:14:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7190:5:115"},"nodeType":"YulFunctionCall","src":"7190:21:115"},{"name":"_1","nodeType":"YulIdentifier","src":"7213:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7186:3:115"},"nodeType":"YulFunctionCall","src":"7186:30:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7157:6:115"},"nodeType":"YulFunctionCall","src":"7157:60:115"},"nodeType":"YulExpressionStatement","src":"7157:60:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7237:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"7248:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7233:3:115"},"nodeType":"YulFunctionCall","src":"7233:19:115"},{"arguments":[{"arguments":[{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"7268:14:115"},{"kind":"number","nodeType":"YulLiteral","src":"7284:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7264:3:115"},"nodeType":"YulFunctionCall","src":"7264:25:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7258:5:115"},"nodeType":"YulFunctionCall","src":"7258:32:115"},{"name":"_1","nodeType":"YulIdentifier","src":"7292:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7254:3:115"},"nodeType":"YulFunctionCall","src":"7254:41:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7226:6:115"},"nodeType":"YulFunctionCall","src":"7226:70:115"},"nodeType":"YulExpressionStatement","src":"7226:70:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7316:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"7327:3:115","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7312:3:115"},"nodeType":"YulFunctionCall","src":"7312:19:115"},{"arguments":[{"arguments":[{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"7347:14:115"},{"kind":"number","nodeType":"YulLiteral","src":"7363:4:115","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7343:3:115"},"nodeType":"YulFunctionCall","src":"7343:25:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7337:5:115"},"nodeType":"YulFunctionCall","src":"7337:32:115"},{"kind":"number","nodeType":"YulLiteral","src":"7371:8:115","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7333:3:115"},"nodeType":"YulFunctionCall","src":"7333:47:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7305:6:115"},"nodeType":"YulFunctionCall","src":"7305:76:115"},"nodeType":"YulExpressionStatement","src":"7305:76:115"},{"nodeType":"YulVariableDeclaration","src":"7390:45:115","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7422:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"7430:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7418:3:115"},"nodeType":"YulFunctionCall","src":"7418:16:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7412:5:115"},"nodeType":"YulFunctionCall","src":"7412:23:115"},"variables":[{"name":"memberValue0_2","nodeType":"YulTypedName","src":"7394:14:115","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_2","nodeType":"YulIdentifier","src":"7464:14:115"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7484:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"7495:4:115","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7480:3:115"},"nodeType":"YulFunctionCall","src":"7480:20:115"}],"functionName":{"name":"abi_encode_t_uint24","nodeType":"YulIdentifier","src":"7444:19:115"},"nodeType":"YulFunctionCall","src":"7444:57:115"},"nodeType":"YulExpressionStatement","src":"7444:57:115"},{"nodeType":"YulVariableDeclaration","src":"7510:45:115","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7542:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"7550:3:115","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7538:3:115"},"nodeType":"YulFunctionCall","src":"7538:16:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7532:5:115"},"nodeType":"YulFunctionCall","src":"7532:23:115"},"variables":[{"name":"memberValue0_3","nodeType":"YulTypedName","src":"7514:14:115","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_3","nodeType":"YulIdentifier","src":"7584:14:115"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7604:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"7615:4:115","type":"","value":"0xe0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7600:3:115"},"nodeType":"YulFunctionCall","src":"7600:20:115"}],"functionName":{"name":"abi_encode_t_uint24","nodeType":"YulIdentifier","src":"7564:19:115"},"nodeType":"YulFunctionCall","src":"7564:57:115"},"nodeType":"YulExpressionStatement","src":"7564:57:115"}]},"name":"abi_encode_tuple_t_struct$_FlashCallbackData_$9125_memory_ptr__to_t_struct$_FlashCallbackData_$9125_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6747:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6758:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6769:4:115","type":""}],"src":"6607:1020:115"}]},"contents":"{\n    { }\n    function abi_decode_t_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_t_uint24(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256t_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := abi_decode_t_address(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_struct$_FlashCallbackData_$9125_memory_ptr(headStart, dataEnd) -> value0\n    {\n        let _1 := sub(dataEnd, headStart)\n        if slt(_1, 256) { revert(value0, value0) }\n        let _2 := 64\n        let memPtr := mload(_2)\n        let newFreePtr := add(memPtr, 0xc0)\n        let _3 := 0xffffffffffffffff\n        if or(gt(newFreePtr, _3), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(_2, newFreePtr)\n        mstore(memPtr, calldataload(headStart))\n        mstore(add(memPtr, 32), calldataload(add(headStart, 32)))\n        mstore(add(memPtr, _2), abi_decode_t_address(add(headStart, _2)))\n        if slt(add(_1, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0), 96) { revert(value0, value0) }\n        let memPtr_1 := mload(_2)\n        let newFreePtr_1 := add(memPtr_1, 96)\n        if or(gt(newFreePtr_1, _3), lt(newFreePtr_1, memPtr_1)) { invalid() }\n        mstore(_2, newFreePtr_1)\n        mstore(memPtr_1, abi_decode_t_address(add(headStart, 96)))\n        mstore(add(memPtr_1, 32), abi_decode_t_address(add(headStart, 128)))\n        mstore(add(memPtr_1, _2), abi_decode_t_uint24(add(headStart, 160)))\n        mstore(add(memPtr, 96), memPtr_1)\n        mstore(add(memPtr, 128), abi_decode_t_uint24(add(headStart, 0xc0)))\n        mstore(add(memPtr, 160), abi_decode_t_uint24(add(headStart, 224)))\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_struct$_FlashParams_$9343_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(value0, value0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 224)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, abi_decode_t_address(headStart))\n        mstore(add(memPtr, 32), abi_decode_t_address(add(headStart, 32)))\n        mstore(add(memPtr, 64), abi_decode_t_uint24(add(headStart, 64)))\n        mstore(add(memPtr, 96), calldataload(add(headStart, 96)))\n        mstore(add(memPtr, 128), calldataload(add(headStart, 128)))\n        mstore(add(memPtr, 160), abi_decode_t_uint24(add(headStart, 160)))\n        mstore(add(memPtr, 192), abi_decode_t_uint24(add(headStart, 192)))\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := mload(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_t_address(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value3, value3) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value3, value3) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value3, value3) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(value3, value3) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(value3, value3) }\n        value2 := add(_2, 32)\n        value3 := length\n    }\n    function abi_encode_t_uint24(value, pos)\n    {\n        mstore(pos, and(value, 0xffffff))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_payable_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        let _1 := 32\n        mstore(add(headStart, _1), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        let length := mload(value3)\n        mstore(add(headStart, 128), length)\n        let i := tail\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 160), mload(add(add(value3, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 160), tail)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 160)\n    }\n    function abi_encode_tuple_t_contract$_ISwapRouter_$10141__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_struct$_ExactInputSingleParams_$10069_memory_ptr__to_t_struct$_ExactInputSingleParams_$10069_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 256)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(mload(value0), _1))\n        mstore(add(headStart, 0x20), and(mload(add(value0, 0x20)), _1))\n        mstore(add(headStart, 0x40), and(mload(add(value0, 0x40)), 0xffffff))\n        mstore(add(headStart, 0x60), and(mload(add(value0, 0x60)), _1))\n        mstore(add(headStart, 0x80), mload(add(value0, 0x80)))\n        mstore(add(headStart, 0xa0), mload(add(value0, 0xa0)))\n        mstore(add(headStart, 0xc0), mload(add(value0, 0xc0)))\n        mstore(add(headStart, 0xe0), and(mload(add(value0, 0xe0)), _1))\n    }\n    function abi_encode_tuple_t_struct$_FlashCallbackData_$9125_memory_ptr__to_t_struct$_FlashCallbackData_$9125_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 256)\n        mstore(headStart, mload(value0))\n        mstore(add(headStart, 0x20), mload(add(value0, 0x20)))\n        let memberValue0 := mload(add(value0, 0x40))\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 0x40), and(memberValue0, _1))\n        let memberValue0_1 := mload(add(value0, 0x60))\n        mstore(add(headStart, 0x60), and(mload(memberValue0_1), _1))\n        mstore(add(headStart, 128), and(mload(add(memberValue0_1, 0x20)), _1))\n        mstore(add(headStart, 160), and(mload(add(memberValue0_1, 0x40)), 0xffffff))\n        let memberValue0_2 := mload(add(value0, 128))\n        abi_encode_t_uint24(memberValue0_2, add(headStart, 0xc0))\n        let memberValue0_3 := mload(add(value0, 160))\n        abi_encode_t_uint24(memberValue0_3, add(headStart, 0xe0))\n    }\n}","id":115,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"8379":[{"length":32,"start":597},{"length":32,"start":1413},{"length":32,"start":1771}],"8383":[{"length":32,"start":156},{"length":32,"start":887},{"length":32,"start":925},{"length":32,"start":1223},{"length":32,"start":4336},{"length":32,"start":4432},{"length":32,"start":4561}],"9094":[{"length":32,"start":1377},{"length":32,"start":1867},{"length":32,"start":1912},{"length":32,"start":2248},{"length":32,"start":2422}]},"linkReferences":{},"object":"60806040526004361061007f5760003560e01c8063c45a01551161004e578063c45a0155146101a2578063c53af304146101b7578063df2ab5bb146101bf578063e5a389c1146101d25761012a565b80632384463b1461012f57806390793ea81461014f578063a98ce37f1461017a578063c31c9c071461018d5761012a565b3661012a573373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461012857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e6f742053414d42000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b34801561013b57600080fd5b5061012861014a36600461161f565b6101f2565b34801561015b57600080fd5b50610164610375565b6040516101719190611781565b60405180910390f35b6101286101883660046116d2565b610399565b34801561019957600080fd5b5061016461055f565b3480156101ae57600080fd5b50610164610583565b6101286105a7565b6101286101cd3660046114e8565b6105b9565b3480156101de57600080fd5b506101286101ed3660046116fd565b6106d6565b60006040518060600160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015162ffffff168152509050600061027a7f000000000000000000000000000000000000000000000000000000000000000083610a73565b90508073ffffffffffffffffffffffffffffffffffffffff1663490e6cbc30856060015186608001516040518060c0016040528089606001518152602001896080015181526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018960a0015162ffffff1681526020018960c0015162ffffff1681525060405160200161031091906118bb565b6040516020818303038152906040526040518563ffffffff1660e01b815260040161033e94939291906117a2565b600060405180830381600087803b15801561035857600080fd5b505af115801561036c573d6000803e3d6000fd5b50505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561042257600080fd5b505afa158015610436573d6000803e3d6000fd5b505050506040513d602081101561044c57600080fd5b50519050828110156104bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e73756666696369656e742053414d42000000000000000000000000000000604482015290519081900360640190fd5b801561055a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561053857600080fd5b505af115801561054c573d6000803e3d6000fd5b5050505061055a8282610ba9565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b47156105b7576105b73347610ba9565b565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561062257600080fd5b505afa158015610636573d6000803e3d6000fd5b505050506040513d602081101561064c57600080fd5b50519050828110156106bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b80156106d0576106d0848383610cf7565b50505050565b60006106e482840184611523565b90506107147f00000000000000000000000000000000000000000000000000000000000000008260600151610ed3565b506060810151805160209091015182516000906107319089610f09565b90506000610743856020015189610f09565b9050610774837f00000000000000000000000000000000000000000000000000000000000000008760200151610f19565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf3896040518061010001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200142815260200189602001518152602001868152602001600073ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b815260040161086e919061183f565b602060405180830381600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c091906116ba565b90506108f1857f00000000000000000000000000000000000000000000000000000000000000008860000151610f19565b604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260a08981015162ffffff168385015230606084015242608084015289519083015260c08201859052600060e0830181905292517f414bf3890000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000009091169163414bf389916109ac919060040161183f565b602060405180830381600087803b1580156109c657600080fd5b505af11580156109da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fe91906116ba565b90508315610a1257610a12863033876110ee565b8215610a2457610a24853033866110ee565b83821115610a455760008483039050610a4387308a60400151846110ee565b505b82811115610a665760008382039050610a6486308a60400151846110ee565b505b5050505050505050505050565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610610ab557600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0460d5808301919091528251808303909101815260f5909101909152805191012090565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310610c2057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610be3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610c82576040519150601f19603f3d011682016040523d82523d6000602084013e610c87565b606091505b505090508061055a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b60208310610dcc57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d8f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610e2e576040519150601f19603f3d011682016040523d82523d6000602084013e610e33565b606091505b5091509150818015610e61575080511580610e615750808060200190516020811015610e5e57600080fd5b50515b610ecc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5050505050565b6000610edf8383610a73565b90503373ffffffffffffffffffffffffffffffffffffffff821614610f0357600080fd5b92915050565b80820182811015610f0357600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b60208310610fee57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610fb1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611050576040519150601f19603f3d011682016040523d82523d6000602084013e611055565b606091505b5091509150818015611083575080511580611083575080806020019051602081101561108057600080fd5b50515b610ecc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5341000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156111495750804710155b15611292577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156111b657600080fd5b505af11580156111ca573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561126057600080fd5b505af1158015611274573d6000803e3d6000fd5b505050506040513d602081101561128a57600080fd5b506106d09050565b73ffffffffffffffffffffffffffffffffffffffff83163014156112c0576112bb848383610cf7565b6106d0565b6106d0848484846040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000178152925182516000948594938a169392918291908083835b602083106113a457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611367565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611406576040519150601f19603f3d011682016040523d82523d6000602084013e61140b565b606091505b5091509150818015611439575080511580611439575080806020019051602081101561143657600080fd5b50515b6114a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354460000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b505050505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114d057600080fd5b919050565b803562ffffff811681146114d057600080fd5b6000806000606084860312156114fc578283fd5b611505846114ac565b92506020840135915061151a604085016114ac565b90509250925092565b6000818303610100811215611536578182fd5b6040805160c0810167ffffffffffffffff828210818311171561155557fe5b81845286358352602087013560208401526115718488016114ac565b8484015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0860112156115a4578586fd5b8351945060608501915084821081831117156115bc57fe5b5082526115cb606086016114ac565b83526115d9608086016114ac565b60208401526115ea60a086016114d5565b8284015282606082015261160060c086016114d5565b608082015261161160e086016114d5565b60a082015295945050505050565b600060e08284031215611630578081fd5b60405160e0810181811067ffffffffffffffff8211171561164d57fe5b604052611659836114ac565b8152611667602084016114ac565b6020820152611678604084016114d5565b6040820152606083013560608201526080830135608082015261169d60a084016114d5565b60a08201526116ae60c084016114d5565b60c08201529392505050565b6000602082840312156116cb578081fd5b5051919050565b600080604083850312156116e4578182fd5b823591506116f4602084016114ac565b90509250929050565b60008060008060608587031215611712578081fd5b8435935060208501359250604085013567ffffffffffffffff80821115611737578283fd5b818701915087601f83011261174a578283fd5b813581811115611758578384fd5b886020828501011115611769578384fd5b95989497505060200194505050565b62ffffff169052565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8616825260208581840152846040840152608060608401528351806080850152825b818110156117f75785810183015185820160a0015282016117db565b81811115611808578360a083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160a0019695505050505050565b60006101008201905073ffffffffffffffffffffffffffffffffffffffff80845116835280602085015116602084015262ffffff60408501511660408401528060608501511660608401526080840151608084015260a084015160a084015260c084015160c08401528060e08501511660e08401525092915050565b6000610100820190508251825260208301516020830152604083015173ffffffffffffffffffffffffffffffffffffffff8082166040850152606085015191508082511660608501528060208301511660808501525062ffffff60408201511660a084015250608083015161193360c0840182611778565b5060a083015161194660e0840182611778565b509291505056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC45A0155 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x1A2 JUMPI DUP1 PUSH4 0xC53AF304 EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0xDF2AB5BB EQ PUSH2 0x1BF JUMPI DUP1 PUSH4 0xE5A389C1 EQ PUSH2 0x1D2 JUMPI PUSH2 0x12A JUMP JUMPDEST DUP1 PUSH4 0x2384463B EQ PUSH2 0x12F JUMPI DUP1 PUSH4 0x90793EA8 EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0xA98CE37F EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0xC31C9C07 EQ PUSH2 0x18D JUMPI PUSH2 0x12A JUMP JUMPDEST CALLDATASIZE PUSH2 0x12A JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x128 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F742053414D42000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x128 PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0x161F JUMP JUMPDEST PUSH2 0x1F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x375 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x171 SWAP2 SWAP1 PUSH2 0x1781 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 PUSH2 0x188 CALLDATASIZE PUSH1 0x4 PUSH2 0x16D2 JUMP JUMPDEST PUSH2 0x399 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x55F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x583 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x5A7 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x1CD CALLDATASIZE PUSH1 0x4 PUSH2 0x14E8 JUMP JUMPDEST PUSH2 0x5B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x128 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x16FD JUMP JUMPDEST PUSH2 0x6D6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x40 ADD MLOAD PUSH3 0xFFFFFF AND DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH2 0x27A PUSH32 0x0 DUP4 PUSH2 0xA73 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x490E6CBC ADDRESS DUP6 PUSH1 0x60 ADD MLOAD DUP7 PUSH1 0x80 ADD MLOAD PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH1 0x60 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x80 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0xA0 ADD MLOAD PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0xC0 ADD MLOAD PUSH3 0xFFFFFF AND DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x310 SWAP2 SWAP1 PUSH2 0x18BB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33E SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x17A2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x358 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x36C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x436 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x4BF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742053414D42000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x55A JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x54C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x55A DUP3 DUP3 PUSH2 0xBA9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST SELFBALANCE ISZERO PUSH2 0x5B7 JUMPI PUSH2 0x5B7 CALLER SELFBALANCE PUSH2 0xBA9 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x636 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x64C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x6BF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E7420746F6B656E0000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x6D0 JUMPI PUSH2 0x6D0 DUP5 DUP4 DUP4 PUSH2 0xCF7 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6E4 DUP3 DUP5 ADD DUP5 PUSH2 0x1523 JUMP JUMPDEST SWAP1 POP PUSH2 0x714 PUSH32 0x0 DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0xED3 JUMP JUMPDEST POP PUSH1 0x60 DUP2 ADD MLOAD DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x731 SWAP1 DUP10 PUSH2 0xF09 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x743 DUP6 PUSH1 0x20 ADD MLOAD DUP10 PUSH2 0xF09 JUMP JUMPDEST SWAP1 POP PUSH2 0x774 DUP4 PUSH32 0x0 DUP8 PUSH1 0x20 ADD MLOAD PUSH2 0xF19 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x414BF389 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x80 ADD MLOAD PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x20 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x86E SWAP2 SWAP1 PUSH2 0x183F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x888 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x89C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8C0 SWAP2 SWAP1 PUSH2 0x16BA JUMP JUMPDEST SWAP1 POP PUSH2 0x8F1 DUP6 PUSH32 0x0 DUP9 PUSH1 0x0 ADD MLOAD PUSH2 0xF19 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND DUP3 MSTORE DUP7 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0xA0 DUP10 DUP2 ADD MLOAD PUSH3 0xFFFFFF AND DUP4 DUP6 ADD MSTORE ADDRESS PUSH1 0x60 DUP5 ADD MSTORE TIMESTAMP PUSH1 0x80 DUP5 ADD MSTORE DUP10 MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 PUSH1 0xE0 DUP4 ADD DUP2 SWAP1 MSTORE SWAP3 MLOAD PUSH32 0x414BF38900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH4 0x414BF389 SWAP2 PUSH2 0x9AC SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9FE SWAP2 SWAP1 PUSH2 0x16BA JUMP JUMPDEST SWAP1 POP DUP4 ISZERO PUSH2 0xA12 JUMPI PUSH2 0xA12 DUP7 ADDRESS CALLER DUP8 PUSH2 0x10EE JUMP JUMPDEST DUP3 ISZERO PUSH2 0xA24 JUMPI PUSH2 0xA24 DUP6 ADDRESS CALLER DUP7 PUSH2 0x10EE JUMP JUMPDEST DUP4 DUP3 GT ISZERO PUSH2 0xA45 JUMPI PUSH1 0x0 DUP5 DUP4 SUB SWAP1 POP PUSH2 0xA43 DUP8 ADDRESS DUP11 PUSH1 0x40 ADD MLOAD DUP5 PUSH2 0x10EE JUMP JUMPDEST POP JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xA66 JUMPI PUSH1 0x0 DUP4 DUP3 SUB SWAP1 POP PUSH2 0xA64 DUP7 ADDRESS DUP11 PUSH1 0x40 ADD MLOAD DUP5 PUSH2 0x10EE JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0xAB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 DUP6 ADD MSTORE SWAP4 SWAP1 SWAP2 AND DUP4 DUP6 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x80 DUP5 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 PUSH1 0xD5 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xF5 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xC20 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xBE3 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xC82 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xC87 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x55A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354450000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xDCC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xD8F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE2E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE33 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0xE61 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0xE61 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0xECC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEDF DUP4 DUP4 PUSH2 0xA73 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0xF03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0xF03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xFEE JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xFB1 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1050 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1055 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1083 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1083 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1080 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0xECC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5341000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x1149 JUMPI POP DUP1 SELFBALANCE LT ISZERO JUMPDEST ISZERO PUSH2 0x1292 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1274 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x128A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D0 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ADDRESS EQ ISZERO PUSH2 0x12C0 JUMPI PUSH2 0x12BB DUP5 DUP4 DUP4 PUSH2 0xCF7 JUMP JUMPDEST PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x6D0 DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x13A4 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1367 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1406 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x140B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1439 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1439 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x14A4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354460000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x14D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x14D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x14FC JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1505 DUP5 PUSH2 0x14AC JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0x151A PUSH1 0x40 DUP6 ADD PUSH2 0x14AC JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB PUSH2 0x100 DUP2 SLT ISZERO PUSH2 0x1536 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP3 DUP3 LT DUP2 DUP4 GT OR ISZERO PUSH2 0x1555 JUMPI INVALID JUMPDEST DUP2 DUP5 MSTORE DUP7 CALLDATALOAD DUP4 MSTORE PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1571 DUP5 DUP9 ADD PUSH2 0x14AC JUMP JUMPDEST DUP5 DUP5 ADD MSTORE PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP7 ADD SLT ISZERO PUSH2 0x15A4 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP4 MLOAD SWAP5 POP PUSH1 0x60 DUP6 ADD SWAP2 POP DUP5 DUP3 LT DUP2 DUP4 GT OR ISZERO PUSH2 0x15BC JUMPI INVALID JUMPDEST POP DUP3 MSTORE PUSH2 0x15CB PUSH1 0x60 DUP7 ADD PUSH2 0x14AC JUMP JUMPDEST DUP4 MSTORE PUSH2 0x15D9 PUSH1 0x80 DUP7 ADD PUSH2 0x14AC JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x15EA PUSH1 0xA0 DUP7 ADD PUSH2 0x14D5 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE DUP3 PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x1600 PUSH1 0xC0 DUP7 ADD PUSH2 0x14D5 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x1611 PUSH1 0xE0 DUP7 ADD PUSH2 0x14D5 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1630 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x164D JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x1659 DUP4 PUSH2 0x14AC JUMP JUMPDEST DUP2 MSTORE PUSH2 0x1667 PUSH1 0x20 DUP5 ADD PUSH2 0x14AC JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1678 PUSH1 0x40 DUP5 ADD PUSH2 0x14D5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x169D PUSH1 0xA0 DUP5 ADD PUSH2 0x14D5 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x16AE PUSH1 0xC0 DUP5 ADD PUSH2 0x14D5 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16CB JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x16E4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x16F4 PUSH1 0x20 DUP5 ADD PUSH2 0x14AC JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1712 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1737 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x174A JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1758 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1769 JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP3 MSTORE PUSH1 0x20 DUP6 DUP2 DUP5 ADD MSTORE DUP5 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP5 ADD MSTORE DUP4 MLOAD DUP1 PUSH1 0x80 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x17F7 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0xA0 ADD MSTORE DUP3 ADD PUSH2 0x17DB JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x1808 JUMPI DUP4 PUSH1 0xA0 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0xA0 ADD SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 ADD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 MLOAD AND DUP4 MSTORE DUP1 PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0xFFFFFF PUSH1 0x40 DUP6 ADD MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE DUP1 PUSH1 0x60 DUP6 ADD MLOAD AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP5 ADD MLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0xC0 DUP5 ADD MSTORE DUP1 PUSH1 0xE0 DUP6 ADD MLOAD AND PUSH1 0xE0 DUP5 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 ADD SWAP1 POP DUP3 MLOAD DUP3 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 MLOAD AND PUSH1 0x60 DUP6 ADD MSTORE DUP1 PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x80 DUP6 ADD MSTORE POP PUSH3 0xFFFFFF PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0xA0 DUP5 ADD MSTORE POP PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x1933 PUSH1 0xC0 DUP5 ADD DUP3 PUSH2 0x1778 JUMP JUMPDEST POP PUSH1 0xA0 DUP4 ADD MLOAD PUSH2 0x1946 PUSH1 0xE0 DUP5 ADD DUP3 PUSH2 0x1778 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"720:5135:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;438:10:51;:18;452:4;438:18;;430:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;720:5135:56;;;;;4809:1044;;;;;;;;;;-1:-1:-1;4809:1044:56;;;;;:::i;:::-;;:::i;420:38:50:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;521:386:51;;;;;;:::i;:::-;;:::i;865:39:56:-;;;;;;;;;;;;;:::i;328:41:50:-;;;;;;;;;;;;;:::i;1362:160:51:-;;;:::i;952:365::-;;;;;;:::i;:::-;;:::i;1760:2497:56:-;;;;;;;;;;-1:-1:-1;1760:2497:56;;;;;:::i;:::-;;:::i;4809:1044::-;4874:34;4911:131;;;;;;;;4953:6;:13;;;4911:131;;;;;;4988:6;:13;;;4911:131;;;;;;5020:6;:11;;;4911:131;;;;;4874:168;;5052:17;5085:44;5112:7;5121;5085:26;:44::i;:::-;5052:78;;5397:4;:10;;;5429:4;5448:6;:14;;;5476:6;:14;;;5532:290;;;;;;;;5581:6;:14;;;5532:290;;;;5626:6;:14;;;5532:290;;;;5669:10;5532:290;;;;;;5710:7;5532:290;;;;5749:6;:11;;;5532:290;;;;;;5792:6;:11;;;5532:290;;;;;5504:332;;;;;;;;:::i;:::-;;;;;;;;;;;;;5397:449;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4809:1044;;;:::o;420:38:50:-;;;:::o;521:386:51:-;617:19;645:4;639:21;;;669:4;639:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;639:36:51;;-1:-1:-1;693:28:51;;;;685:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;758:15;;754:147;;795:4;789:20;;;810:11;789:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;836:54;867:9;878:11;836:30;:54::i;:::-;521:386;;;:::o;865:39:56:-;;;:::o;328:41:50:-;;;:::o;1362:160:51:-;1423:21;:25;1419:96;;1450:65;1481:10;1493:21;1450:30;:65::i;:::-;1362:160::o;952:365::-;1063:20;1093:5;1086:23;;;1118:4;1086:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1086:38:51;;-1:-1:-1;1142:29:51;;;;1134:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1209:16;;1205:106;;1241:59;1269:5;1276:9;1287:12;1241:27;:59::i;:::-;952:365;;;;:::o;1760:2497:56:-;1867:32;1902:37;;;;1913:4;1902:37;:::i;:::-;1867:72;;1949:59;1983:7;1992;:15;;;1949:33;:59::i;:::-;-1:-1:-1;2036:15:56;;;;:22;;2085;;;;;2328:15;;2019:14;;2309:41;;2345:4;2309:18;:41::i;:::-;2288:62;;2360:18;2381:41;2400:7;:15;;;2417:4;2381:18;:41::i;:::-;2360:62;;2515:72;2542:6;2558:10;2571:7;:15;;;2515:26;:72::i;:::-;2597:18;2618:10;:27;;;2659:368;;;;;;;;2721:6;2659:368;;;;;;2755:6;2659:368;;;;;;2784:7;:16;;;2659:368;;;;;;2837:4;2659:368;;;;;;2870:15;2659:368;;;;2913:7;:15;;;2659:368;;;;2964:10;2659:368;;;;3011:1;2659:368;;;;;2618:419;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2597:440;;3131:72;3158:6;3174:10;3187:7;:15;;;3131:26;:72::i;:::-;3275:368;;;;;;;;3234:27;3275:368;;;;;;;;;;;;3400:16;;;;;3275:368;;;;;;3453:4;-1:-1:-1;3275:368:56;;;3486:15;3275:368;;;;3529:15;;3275:368;;;;;;;;;;-1:-1:-1;3275:368:56;;;;;;3234:419;;;;;:10;:27;;;;;;:419;;3275:368;3234:419;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3213:440;-1:-1:-1;3721:14:56;;3717:70;;3737:50;3741:6;3757:4;3764:10;3776;3737:3;:50::i;:::-;3801:14;;3797:70;;3817:50;3821:6;3837:4;3844:10;3856;3817:3;:50::i;:::-;3941:10;3928;:23;3924:159;;;3967:15;3998:10;3985;:23;3967:41;;4022:50;4026:6;4042:4;4049:7;:13;;;4064:7;4022:3;:50::i;:::-;3924:159;;4109:10;4096;:23;4092:159;;;4135:15;4166:10;4153;:23;4135:41;;4190:50;4194:6;4210:4;4217:7;:13;;;4232:7;4190:3;:50::i;:::-;4092:159;;1760:2497;;;;;;;;;;;:::o;1276:512:88:-;1360:12;1405:3;:10;;;1392:23;;:3;:10;;;:23;;;1384:32;;;;;;-1:-1:-1;1639:10:88;;1651;;;;;1663:7;;;;;1628:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1618:54;;;;;;1510:229;;;;;;;;;;;;;;;;;;;;;241:66;1510:229;;;;;;;;;;;;;;;;;;;;;;;;;1479:278;;;;;;1276:512::o;2282:165:95:-;2394:12;;;2354;2394;;;;;;;;;2372:7;;;;2387:5;;2372:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2353:54;;;2425:7;2417:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1183:279;1313:59;;;1302:10;1313:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1336:24;1313:59;;;1302:71;;;;1267:12;;;;1302:10;;;;1313:59;1302:71;;;1313:59;1302:71;;1313:59;1302:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1266:107;;;;1391:7;:57;;;;-1:-1:-1;1403:11:95;;:16;;:44;;;1434:4;1423:24;;;;;;;;;;;;;;;-1:-1:-1;1423:24:95;1403:44;1383:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1183:279;;;;;:::o;1248:269:81:-;1370:17;1419:44;1446:7;1455;1419:26;:44::i;:::-;1399:65;-1:-1:-1;1482:10:81;:27;;;;1474:36;;;;;;1248:269;;;;:::o;435:111:16:-;527:5;;;522:16;;;;514:25;;;;;1815:277:95;1944:58;;;1933:10;1944:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1967:23;1944:58;;;1933:70;;;;1898:12;;;;1933:10;;;;1944:58;1933:70;;;1944:58;1933:70;;1944:58;1933:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1897:106;;;;2021:7;:57;;;;-1:-1:-1;2033:11:95;;:16;;:44;;;2064:4;2053:24;;;;;;;;;;;;;;;-1:-1:-1;2053:24:95;2033:44;2013:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1713:655:51;1822:4;1813:13;;:5;:13;;;:47;;;;;1855:5;1830:21;:30;;1813:47;1809:553;;;1911:4;1905:19;;;1932:5;1905:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1995:4;1989:20;;;2010:9;2021:5;1989:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1809:553:51;;-1:-1:-1;1809:553:51;;2048:22;;;2065:4;2048:22;2044:318;;;2177:52;2205:5;2212:9;2223:5;2177:27;:52::i;:::-;2044:318;;;2288:63;2320:5;2327;2334:9;2345:5;722:69:95;;;698:10;722:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;745:28;722:69;;;698:103;;;;663:12;;;;698:10;;;;722:69;698:103;;;722:69;698:103;;722:69;698:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;662:139;;;;819:7;:57;;;;-1:-1:-1;831:11:95;;:16;;:44;;;862:4;851:24;;;;;;;;;;;;;;;-1:-1:-1;851:24:95;831:44;811:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;561:330;;;;;;:::o;14:198:115:-;84:20;;144:42;133:54;;123:65;;113:2;;202:1;199;192:12;113:2;65:147;;;:::o;217:163::-;286:20;;346:8;335:20;;325:31;;315:2;;370:1;367;360:12;385:342;;;;531:2;519:9;510:7;506:23;502:32;499:2;;;552:6;544;537:22;499:2;580:31;601:9;580:31;:::i;:::-;570:41;;658:2;647:9;643:18;630:32;620:42;;681:40;717:2;706:9;702:18;681:40;:::i;:::-;671:50;;489:238;;;;;:::o;732:1382::-;;870:9;861:7;857:23;900:3;896:2;892:12;889:2;;;922:6;914;907:22;889:2;950;981;975:9;1023:4;1015:6;1011:17;1047:18;1115:6;1103:10;1100:22;1095:2;1083:10;1080:18;1077:46;1074:2;;;1126:9;1074:2;1157:10;1153:2;1146:22;1205:9;1192:23;1184:6;1177:39;1277:2;1266:9;1262:18;1249:32;1244:2;1236:6;1232:15;1225:57;1315:40;1351:2;1340:9;1336:18;1315:40;:::i;:::-;1310:2;1302:6;1298:15;1291:65;1449:2;1380:66;1376:2;1372:75;1368:84;1365:2;;;1470:6;1462;1455:22;1365:2;1510;1504:9;1488:25;;1556:2;1546:8;1542:17;1522:37;;1613:8;1599:12;1596:26;1591:2;1577:12;1574:20;1571:52;1568:2;;;1626:9;1568:2;-1:-1:-1;1646:24:115;;1696:40;1732:2;1717:18;;1696:40;:::i;:::-;1686:8;1679:58;1772:41;1808:3;1797:9;1793:19;1772:41;:::i;:::-;1767:2;1757:8;1753:17;1746:68;1849:40;1884:3;1873:9;1869:19;1849:40;:::i;:::-;1844:2;1834:8;1830:17;1823:67;1923:8;1918:2;1910:6;1906:15;1899:33;1966:41;2001:4;1990:9;1986:20;1966:41;:::i;:::-;1960:3;1952:6;1948:16;1941:67;2042:40;2077:3;2066:9;2062:19;2042:40;:::i;:::-;2036:3;2024:16;;2017:66;2028:6;837:1277;-1:-1:-1;;;;;837:1277:115:o;2119:884::-;;2260:3;2248:9;2239:7;2235:23;2231:33;2228:2;;;2282:6;2274;2267:22;2228:2;2320;2314:9;2362:3;2354:6;2350:16;2432:6;2420:10;2417:22;2396:18;2384:10;2381:34;2378:62;2375:2;;;2443:9;2375:2;2470;2463:22;2509:31;2530:9;2509:31;:::i;:::-;2501:6;2494:47;2574:40;2610:2;2599:9;2595:18;2574:40;:::i;:::-;2569:2;2561:6;2557:15;2550:65;2648:39;2683:2;2672:9;2668:18;2648:39;:::i;:::-;2643:2;2635:6;2631:15;2624:64;2749:2;2738:9;2734:18;2721:32;2716:2;2708:6;2704:15;2697:57;2816:3;2805:9;2801:19;2788:33;2782:3;2774:6;2770:16;2763:59;2856:40;2891:3;2880:9;2876:19;2856:40;:::i;:::-;2850:3;2842:6;2838:16;2831:66;2931:40;2966:3;2955:9;2951:19;2931:40;:::i;:::-;2925:3;2913:16;;2906:66;2917:6;2218:785;-1:-1:-1;;;2218:785:115:o;3008:194::-;;3131:2;3119:9;3110:7;3106:23;3102:32;3099:2;;;3152:6;3144;3137:22;3099:2;-1:-1:-1;3180:16:115;;3089:113;-1:-1:-1;3089:113:115:o;3207:266::-;;;3336:2;3324:9;3315:7;3311:23;3307:32;3304:2;;;3357:6;3349;3342:22;3304:2;3398:9;3385:23;3375:33;;3427:40;3463:2;3452:9;3448:18;3427:40;:::i;:::-;3417:50;;3294:179;;;;;:::o;3478:777::-;;;;;3643:2;3631:9;3622:7;3618:23;3614:32;3611:2;;;3664:6;3656;3649:22;3611:2;3705:9;3692:23;3682:33;;3762:2;3751:9;3747:18;3734:32;3724:42;;3817:2;3806:9;3802:18;3789:32;3840:18;3881:2;3873:6;3870:14;3867:2;;;3902:6;3894;3887:22;3867:2;3945:6;3934:9;3930:22;3920:32;;3990:7;3983:4;3979:2;3975:13;3971:27;3961:2;;4017:6;4009;4002:22;3961:2;4062;4049:16;4088:2;4080:6;4077:14;4074:2;;;4109:6;4101;4094:22;4074:2;4159:7;4154:2;4145:6;4141:2;4137:15;4133:24;4130:37;4127:2;;;4185:6;4177;4170:22;4127:2;3601:654;;;;-1:-1:-1;;4221:2:115;4213:11;;-1:-1:-1;;;3601:654:115:o;4260:94::-;4338:8;4327:20;4315:33;;4305:49::o;4359:226::-;4535:42;4523:55;;;;4505:74;;4493:2;4478:18;;4460:125::o;4590:935::-;;4841:42;4833:6;4829:55;4818:9;4811:74;4904:2;4942:6;4937:2;4926:9;4922:18;4915:34;4985:6;4980:2;4969:9;4965:18;4958:34;5028:3;5023:2;5012:9;5008:18;5001:31;5061:6;5055:13;5105:6;5099:3;5088:9;5084:19;5077:35;5130:4;5143:141;5157:6;5154:1;5151:13;5143:141;;;5253:14;;;5249:23;;5243:30;5218:17;;;5237:3;5214:27;5207:67;5172:10;;5143:141;;;5302:6;5299:1;5296:13;5293:2;;;5373:4;5367:3;5358:6;5347:9;5343:22;5339:32;5332:46;5293:2;-1:-1:-1;5440:2:115;5428:15;5445:66;5424:88;5409:104;;;;5515:3;5405:114;;4801:724;-1:-1:-1;;;;;;4801:724:115:o;5782:820::-;;5998:3;5987:9;5983:19;5975:27;;6021:42;6109:2;6100:6;6094:13;6090:22;6079:9;6072:41;6181:2;6173:4;6165:6;6161:17;6155:24;6151:33;6144:4;6133:9;6129:20;6122:63;6253:8;6245:4;6237:6;6233:17;6227:24;6223:39;6216:4;6205:9;6201:20;6194:69;6331:2;6323:4;6315:6;6311:17;6305:24;6301:33;6294:4;6283:9;6279:20;6272:63;6391:4;6383:6;6379:17;6373:24;6366:4;6355:9;6351:20;6344:54;6454:4;6446:6;6442:17;6436:24;6429:4;6418:9;6414:20;6407:54;6517:4;6509:6;6505:17;6499:24;6492:4;6481:9;6477:20;6470:54;6592:2;6584:4;6576:6;6572:17;6566:24;6562:33;6555:4;6544:9;6540:20;6533:63;;5965:637;;;;:::o;6607:1020::-;;6811:3;6800:9;6796:19;6788:27;;6848:6;6842:13;6831:9;6824:32;6912:4;6904:6;6900:17;6894:24;6887:4;6876:9;6872:20;6865:54;6966:4;6958:6;6954:17;6948:24;6991:42;7089:2;7075:12;7071:21;7064:4;7053:9;7049:20;7042:51;7142:4;7134:6;7130:17;7124:24;7102:46;;7213:2;7196:14;7190:21;7186:30;7179:4;7168:9;7164:20;7157:60;7292:2;7284:4;7268:14;7264:25;7258:32;7254:41;7248:3;7237:9;7233:19;7226:70;;7371:8;7363:4;7347:14;7343:25;7337:32;7333:47;7327:3;7316:9;7312:19;7305:76;;7430:3;7422:6;7418:16;7412:23;7444:57;7495:4;7484:9;7480:20;7464:14;7444:57;:::i;:::-;;7550:3;7542:6;7538:16;7532:23;7564:57;7615:4;7604:9;7600:20;7584:14;7564:57;:::i;:::-;;6778:849;;;;:::o"},"methodIdentifiers":{"SAMB()":"90793ea8","astraCLFlashCallback(uint256,uint256,bytes)":"e5a389c1","factory()":"c45a0155","initFlash((address,address,uint24,uint256,uint256,uint24,uint24))":"2384463b","refundAMB()":"c53af304","swapRouter()":"c31c9c07","sweepToken(address,uint256,address)":"df2ab5bb","unwrapSAMB(uint256,address)":"a98ce37f"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ISwapRouter\",\"name\":\"_swapRouter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_SAMB\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"SAMB\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"astraCLFlashCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee1\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"uint24\",\"name\":\"fee2\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"fee3\",\"type\":\"uint24\"}],\"internalType\":\"struct PairFlash.FlashParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"initFlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"refundAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapRouter\",\"outputs\":[{\"internalType\":\"contract ISwapRouter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"sweepToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"unwrapSAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"astraCLFlashCallback(uint256,uint256,bytes)\":{\"details\":\"fails if the flash is not profitable, meaning the amountOut from the flash is less than the amount borrowed\",\"params\":{\"data\":\"The data needed in the callback passed as FlashCallbackData from `initFlash`\",\"fee0\":\"The fee from calling flash for token0\",\"fee1\":\"The fee from calling flash for token1\"}},\"initFlash((address,address,uint24,uint256,uint256,uint24,uint24))\":{\"params\":{\"params\":\"The parameters necessary for flash and the callback, passed in as FlashParams\"}},\"refundAMB()\":{\"details\":\"Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps that use ether for the input amount\"},\"sweepToken(address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing the token from users\",\"params\":{\"amountMinimum\":\"The minimum amount of token required for a transfer\",\"recipient\":\"The destination address of the token\",\"token\":\"The contract address of the token which will be transferred to `recipient`\"}},\"unwrapSAMB(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of SAMB to unwrap\",\"recipient\":\"The address receiving AMB\"}}},\"title\":\"Flash contract implementation\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"astraCLFlashCallback(uint256,uint256,bytes)\":{\"notice\":\"implements the callback called from flash\"},\"initFlash((address,address,uint24,uint256,uint256,uint24,uint24))\":{\"notice\":\"Calls the pools flash function with data needed in `astraCLFlashCallback`\"},\"refundAMB()\":{\"notice\":\"Refunds any AMB balance held by this contract to the `msg.sender`\"},\"sweepToken(address,uint256,address)\":{\"notice\":\"Transfers the full amount of a token held by this contract to recipient\"},\"unwrapSAMB(uint256,address)\":{\"notice\":\"Unwraps the contract's SAMB balance and sends it to recipient as AMB.\"}},\"notice\":\"An example contract using the AstraDEX CL flash function\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/examples/PairFlash.sol\":\"PairFlash\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLFlashCallback.sol\":{\"keccak256\":\"0x17e70337e67710e3105f166a258117fe635afb40d7f71a9634538123fe722891\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4973f62f9324c8def8ea2c4ac5b8746f2cbf518c47fb0f0c37816c67d3ee545b\",\"dweb:/ipfs/Qme7JGeJ7MJxFbUC6WFweHuYC8JR7VjoPSZy7VGkSXehSA\"]},\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol\":{\"keccak256\":\"0xaa82f63f0c930e51d6aaae0d59e7bf3ef5b32371ac0549f6e07bfcab5b4dcb16\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://73419af0b4f35f02c3b89d387d6ac46041637a7133e249de617103b7567bf4c4\",\"dweb:/ipfs/QmTfwEX1dCoUUUMaMFzDnqDcFXihHQnEG1fbkBFpidRs8o\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0x86715eb960f18e01ac94e3bba4614ed51a887fa3c5bd1c43bf80aa98e019cf2d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfc1d5d58e59015086b0e65a6c3a2ddad312e2350480510f6c0c8167f3d71a37\",\"dweb:/ipfs/QmQndULYjFsHKHjMAKLMfc12vWbVB5FawtioHtvwcWRJZp\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"contracts/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x566b2f2f7bf89d107c66316e12b9cad9fade2f9cc2076bceb2090f54bada22da\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d13d485890a8eb6b2b6b38cf0b7fc39c7fc66462a9553159947ece2de55d9ba3\",\"dweb:/ipfs/QmaSEEBMjMvvrLqxmrskUmDwg86g7RHDa6SYiYiA77SJ1X\"]},\"contracts/base/PeripheryPayments.sol\":{\"keccak256\":\"0x88e12ecce0236f43cac955dee8ae50e8ffba7d133625ba18b590d51b9e030098\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://9f10d1317582a91e7842901c6888c4bb28939817cefa3d3f88458c2ec653b6ed\",\"dweb:/ipfs/QmP2qV22Uq6Pou1VkgNzRnXHzNJ71CBpVBYhYDnLccBx8U\"]},\"contracts/examples/PairFlash.sol\":{\"keccak256\":\"0x509ef16e01c533ecfb514c1b1880311cd65c146cc385923540efc0a64148454b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bd35fe3544c1b86a089c662932001a565613d33ea4b11117a810a0892725201c\",\"dweb:/ipfs/QmTrw8X8dXpioeEjB1nc3VhiJZZ3DJWRP7SCVHsKtcgXEG\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x57bd5b069f6e66edd42a9b41e5864bfcd2aa7d404337d6c57a083fb589fc59bd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4efa92b18c295755437180f93a19179ef15dfe24a6db10ae876c41247fd4a907\",\"dweb:/ipfs/QmYJTRqE5BEjqyNoZqoctVFgxZF336cK9ba1RSd2LbgFkG\"]},\"contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0xbcb66f65faf010af6a5314375428277818cd2648f6dc936970aee18711a4fdd2\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2a58b8e026a90bc84be07cfa9cbf64083f1bbde0d217ca4744650ba871122ff9\",\"dweb:/ipfs/QmRN4TqojnnF6wiupZZBYDATC6WmY9dx4p9Sorb9zXY9us\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x5b5789677c6b7e447fd774a5c065d9547c85f22e950e18690f686a6b779d78dc\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c2e45681c8d5c704fbfef7369ff7878e6af2d987ba564eb97148ee6e8db87e49\",\"dweb:/ipfs/Qmeg4ynPmWipSVb6BRj4o8uZRbE2bQk8nCwp9apMAEq8Xk\"]},\"contracts/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xf21a3d7e2bc14386ce7b072b124b580df53441a32591770845860e8947f942d0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6941e21d9bc52bddc65079c5e7bc9d6ffd6553f6ed7f3d3b340996a55115b46f\",\"dweb:/ipfs/QmaDJ9uafahho77WP5izBCRL4W3mVM7NFL5q5QR5YvAC3A\"]},\"contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xdd82100913bcb7c490e9e6912ab33994bd97d5a59e67209826ebf917bc8271c1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ecfc24c77d80aa718604d8a2c4d59460b76b5fd567d15206414e3838dd6698b7\",\"dweb:/ipfs/QmVtUC9dnade4RkzXaSqEFdAkiEftJ777jmT619LX2VLGv\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x0fef3409a5a161cd12b777fdfa86845d64b86f72c78b8312c9e3c92f9017e5c5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9df2c76e4581a1d343ea1dd1d0478df7f1c1eef1b476ccea452367ef5b75e65\",\"dweb:/ipfs/QmWZVBRQcn4ekrmCDFkM4BSRAZ1m72GHzUnfzUn39PwQow\"]}},\"version\":1}"}},"contracts/interfaces/ICLMigrator.sol":{"ICLMigrator":{"abi":[{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"createAndInitializePoolIfNecessary","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"uint256","name":"liquidityToMigrate","type":"uint256"},{"internalType":"uint8","name":"percentageToMigrate","type":"uint8"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"refundAsAMB","type":"bool"}],"internalType":"struct ICLMigrator.MigrateParams","name":"params","type":"tuple"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowed","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowedIfNecessary","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitIfNecessary","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"createAndInitializePoolIfNecessary(address,address,uint24,uint160)":"13ead562","migrate((address,uint256,uint8,address,address,uint24,int24,int24,uint256,uint256,address,uint256,bool))":"d44f2bf2","multicall(bytes[])":"ac9650d8","selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)":"f3995c67","selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)":"4659a494","selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"a4a78f0c","selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"c2e3140a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"createAndInitializePoolIfNecessary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidityToMigrate\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"percentageToMigrate\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint256\",\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"refundAsAMB\",\"type\":\"bool\"}],\"internalType\":\"struct ICLMigrator.MigrateParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowed\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowedIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"details\":\"This method can be bundled with others via IMulticall for the first action (e.g. mint) performed against a pool\",\"params\":{\"fee\":\"The fee amount of the CL pool for the specified token pair\",\"sqrtPriceX96\":\"The initial square root price of the pool as a Q64.96 value\",\"token0\":\"The contract address of token0 of the pool\",\"token1\":\"The contract address of token1 of the pool\"},\"returns\":{\"pool\":\"Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary\"}},\"migrate((address,uint256,uint8,address,address,uint24,int24,int24,uint256,uint256,address,uint256,bool))\":{\"details\":\"Slippage protection is enforced via `amount{0,1}Min`, which should be a discount of the expected values of the maximum amount of CL liquidity that the Classic liquidity can get. For the special case of migrating to an out-of-range position, `amount{0,1}Min` may be set to 0, enforcing that the position remains out of range\",\"params\":{\"params\":\"The params necessary to migrate Classic liquidity, encoded as `MigrateParams` in calldata\"}},\"multicall(bytes[])\":{\"details\":\"The `msg.value` should not be trusted for any method callable from multicall.\",\"params\":{\"data\":\"The encoded function data for each of the calls to make to this contract\"},\"returns\":{\"results\":\"The results from each of the calls passed in via data\"}},\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this).\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this)\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this) Can be used instead of #selfPermitAllowed to prevent calls from failing due to a frontrun of a call to #selfPermitAllowed.\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this). Can be used instead of #selfPermit to prevent calls from failing due to a frontrun of a call to #selfPermit\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}}},\"title\":\"CL Migrator\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"notice\":\"Creates a new pool if it does not exist, then initializes if not initialized\"},\"migrate((address,uint256,uint8,address,address,uint24,int24,int24,uint256,uint256,address,uint256,bool))\":{\"notice\":\"Migrates liquidity to CL by burning classic liquidity and minting a new position for CL\"},\"multicall(bytes[])\":{\"notice\":\"Call multiple functions in the current contract and return the data from all of them if they all succeed\"},\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"}},\"notice\":\"Enables migration of liqudity from AstraDEX-compatible pairs into AstraDEX CL pools\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/ICLMigrator.sol\":\"ICLMigrator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/ICLMigrator.sol\":{\"keccak256\":\"0x55208853d4f2afa72f443cfbba4017b76806bb810e1f5a18649a491f791d4386\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c134c1e35b10ff18f4845df21e900be80cc3065ad46b896c612c76da0282f26c\",\"dweb:/ipfs/QmZmjRuwBrF948E1aGA3aEDkbttAKCMNGDPh4TJSUuMHAo\"]},\"contracts/interfaces/IMulticall.sol\":{\"keccak256\":\"0xa8f9d0061ee730a522dc4bae6bd5cabb3e997e2c5983da183e912bdca93dfa7b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://496b68d4f72d58cc83cf51bd9cc9c99aaa46dc3c3df7c951a9e50ba29ee33016\",\"dweb:/ipfs/Qmc3bkXwuRP8mDpcKgvLgbCKn8tD8PGCaBjnLHSPMJCRGD\"]},\"contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x5d9b76c0eed9d836f8ab1d65a37921c56c46a69802f28c312f239ce159634473\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ab60ec035cd2f600d7e89828bcf1427a674defdcb4c511679144aae42273ba2d\",\"dweb:/ipfs/QmYWy2dAG2Mq4BUwybjVCbGtXYRG8Lz1jRfK6L924YuwRa\"]},\"contracts/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0x402d04301ffd41853f4949a574b8853c46d076910ed734f5e4478bf64369a3ed\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6a5536d179ff3777920ff8ed60cfc457f7a4dda1373c8f0394b2a8e0fe537525\",\"dweb:/ipfs/QmdaYGikTmmi2vbECnoomZ8vS8PBiD4Bq8BoFCYqFZmKgR\"]}},\"version\":1}"}},"contracts/interfaces/IERC20Metadata.sol":{"IERC20Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"returns\":{\"_0\":\"The number of decimal places the token has\"}},\"name()\":{\"returns\":{\"_0\":\"The name of the token\"}},\"symbol()\":{\"returns\":{\"_0\":\"The symbol of the token\"}},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"title\":\"IERC20MetadataInterface for ERC20 Metadata\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Extension to IERC20 that includes token metadata\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"contracts/interfaces/IERC20Metadata.sol\":{\"keccak256\":\"0x9daa17a3a699b21eb83f93e11782e069f210275e249818cc91b73b910ee6de38\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a4593a7dd858559de70e75d65e98b05a9d72924b316df3d56779eed13f529883\",\"dweb:/ipfs/QmdbGWDu2KMyW4c7CPFvCbBzbC27g5bwWAxkgTnzX3cod7\"]}},\"version\":1}"}},"contracts/interfaces/IERC721Permit.sol":{"IERC721Permit":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","PERMIT_TYPEHASH()":"30adf81f","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","permit(address,uint256,uint256,uint8,bytes32,bytes32)":"7ac2ff7b","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"returns\":{\"_0\":\"The domain seperator used in encoding of permit signature\"}},\"PERMIT_TYPEHASH()\":{\"returns\":{\"_0\":\"The typehash for the permit\"}},\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"permit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"deadline\":\"The deadline timestamp by which the call must be mined for the approve to work\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"spender\":\"The account that is being approved\",\"tokenId\":\"The ID of the token that is being approved for spending\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC721 with permit\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"The domain separator used in the permit signature\"},\"PERMIT_TYPEHASH()\":{\"notice\":\"The permit typehash used in the permit signature\"},\"permit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Approve of a specific token ID for spending by spender via signature\"}},\"notice\":\"Extension to ERC721 that includes a permit function for signature based approvals\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC721Permit.sol\":\"IERC721Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x383d39a13ce10019d4ebd27a694d085c03a1498a1cc31ec1511fac91b5296342\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3d22d9cc7a33829bd31da42d96bd75401a675ef32c8eb4d9e3074c21ec1241b6\",\"dweb:/ipfs/QmNrvD2T3k3wH5kWz6Kss9mSjxdJhXAA6NTH1Evj8j3k6A\"]}},\"version\":1}"}},"contracts/interfaces/IMulticall.sol":{"IMulticall":{"abi":[{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"multicall(bytes[])":"ac9650d8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"multicall(bytes[])\":{\"details\":\"The `msg.value` should not be trusted for any method callable from multicall.\",\"params\":{\"data\":\"The encoded function data for each of the calls to make to this contract\"},\"returns\":{\"results\":\"The results from each of the calls passed in via data\"}}},\"title\":\"Multicall interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"multicall(bytes[])\":{\"notice\":\"Call multiple functions in the current contract and return the data from all of them if they all succeed\"}},\"notice\":\"Enables calling multiple methods in a single call to the contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IMulticall.sol\":\"IMulticall\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IMulticall.sol\":{\"keccak256\":\"0xa8f9d0061ee730a522dc4bae6bd5cabb3e997e2c5983da183e912bdca93dfa7b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://496b68d4f72d58cc83cf51bd9cc9c99aaa46dc3c3df7c951a9e50ba29ee33016\",\"dweb:/ipfs/Qmc3bkXwuRP8mDpcKgvLgbCKn8tD8PGCaBjnLHSPMJCRGD\"]}},\"version\":1}"}},"contracts/interfaces/INonfungiblePositionManager.sol":{"INonfungiblePositionManager":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"DecreaseLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"IncreaseLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"SAMB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint128","name":"amount0Max","type":"uint128"},{"internalType":"uint128","name":"amount1Max","type":"uint128"}],"internalType":"struct INonfungiblePositionManager.CollectParams","name":"params","type":"tuple"}],"name":"collect","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"createAndInitializePoolIfNecessary","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct INonfungiblePositionManager.DecreaseLiquidityParams","name":"params","type":"tuple"}],"name":"decreaseLiquidity","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"amount0Desired","type":"uint256"},{"internalType":"uint256","name":"amount1Desired","type":"uint256"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct INonfungiblePositionManager.IncreaseLiquidityParams","name":"params","type":"tuple"}],"name":"increaseLiquidity","outputs":[{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint256","name":"amount0Desired","type":"uint256"},{"internalType":"uint256","name":"amount1Desired","type":"uint256"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct INonfungiblePositionManager.MintParams","name":"params","type":"tuple"}],"name":"mint","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"positions","outputs":[{"internalType":"uint96","name":"nonce","type":"uint96"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refundAMB","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"sweepToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"unwrapSAMB","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","PERMIT_TYPEHASH()":"30adf81f","SAMB()":"90793ea8","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","collect((uint256,address,uint128,uint128))":"fc6f7865","createAndInitializePoolIfNecessary(address,address,uint24,uint160)":"13ead562","decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))":"0c49ccbe","factory()":"c45a0155","getApproved(uint256)":"081812fc","increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))":"219f5d17","isApprovedForAll(address,address)":"e985e9c5","mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))":"88316456","name()":"06fdde03","ownerOf(uint256)":"6352211e","permit(address,uint256,uint256,uint8,bytes32,bytes32)":"7ac2ff7b","positions(uint256)":"99fbab88","refundAMB()":"c53af304","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","sweepToken(address,uint256,address)":"df2ab5bb","symbol()":"95d89b41","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd","unwrapSAMB(uint256,address)":"a98ce37f"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"DecreaseLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"IncreaseLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SAMB\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Max\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Max\",\"type\":\"uint128\"}],\"internalType\":\"struct INonfungiblePositionManager.CollectParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"createAndInitializePoolIfNecessary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct INonfungiblePositionManager.DecreaseLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"decreaseLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount0Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct INonfungiblePositionManager.IncreaseLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"increaseLiquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint256\",\"name\":\"amount0Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct INonfungiblePositionManager.MintParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"refundAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"sweepToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"unwrapSAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Collect(uint256,address,uint256,uint256)\":{\"details\":\"The amounts reported may not be exactly equivalent to the amounts transferred, due to rounding behavior\",\"params\":{\"amount0\":\"The amount of token0 owed to the position that was collected\",\"amount1\":\"The amount of token1 owed to the position that was collected\",\"recipient\":\"The address of the account that received the collected tokens\",\"tokenId\":\"The ID of the token for which underlying tokens were collected\"}},\"DecreaseLiquidity(uint256,uint128,uint256,uint256)\":{\"params\":{\"amount0\":\"The amount of token0 that was accounted for the decrease in liquidity\",\"amount1\":\"The amount of token1 that was accounted for the decrease in liquidity\",\"liquidity\":\"The amount by which liquidity for the NFT position was decreased\",\"tokenId\":\"The ID of the token for which liquidity was decreased\"}},\"IncreaseLiquidity(uint256,uint128,uint256,uint256)\":{\"details\":\"Also emitted when a token is minted\",\"params\":{\"amount0\":\"The amount of token0 that was paid for the increase in liquidity\",\"amount1\":\"The amount of token1 that was paid for the increase in liquidity\",\"liquidity\":\"The amount by which liquidity for the NFT position was increased\",\"tokenId\":\"The ID of the token for which liquidity was increased\"}}},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"returns\":{\"_0\":\"The domain seperator used in encoding of permit signature\"}},\"PERMIT_TYPEHASH()\":{\"returns\":{\"_0\":\"The typehash for the permit\"}},\"SAMB()\":{\"returns\":{\"_0\":\"Returns the address of SAMB\"}},\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"burn(uint256)\":{\"params\":{\"tokenId\":\"The ID of the token that is being burned\"}},\"collect((uint256,address,uint128,uint128))\":{\"params\":{\"params\":\"tokenId The ID of the NFT for which tokens are being collected, recipient The account that should receive the tokens, amount0Max The maximum amount of token0 to collect, amount1Max The maximum amount of token1 to collect\"},\"returns\":{\"amount0\":\"The amount of fees collected in token0\",\"amount1\":\"The amount of fees collected in token1\"}},\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"details\":\"This method can be bundled with others via IMulticall for the first action (e.g. mint) performed against a pool\",\"params\":{\"fee\":\"The fee amount of the CL pool for the specified token pair\",\"sqrtPriceX96\":\"The initial square root price of the pool as a Q64.96 value\",\"token0\":\"The contract address of token0 of the pool\",\"token1\":\"The contract address of token1 of the pool\"},\"returns\":{\"pool\":\"Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary\"}},\"decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))\":{\"params\":{\"params\":\"tokenId The ID of the token for which liquidity is being decreased, amount The amount by which liquidity will be decreased, amount0Min The minimum amount of token0 that should be accounted for the burned liquidity, amount1Min The minimum amount of token1 that should be accounted for the burned liquidity, deadline The time by which the transaction must be included to effect the change\"},\"returns\":{\"amount0\":\"The amount of token0 accounted to the position's tokens owed\",\"amount1\":\"The amount of token1 accounted to the position's tokens owed\"}},\"factory()\":{\"returns\":{\"_0\":\"Returns the address of the AstraDEX CL factory\"}},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))\":{\"params\":{\"params\":\"tokenId The ID of the token for which liquidity is being increased, amount0Desired The desired amount of token0 to be spent, amount1Desired The desired amount of token1 to be spent, amount0Min The minimum amount of token0 to spend, which serves as a slippage check, amount1Min The minimum amount of token1 to spend, which serves as a slippage check, deadline The time by which the transaction must be included to effect the change\"},\"returns\":{\"amount0\":\"The amount of token0 to acheive resulting liquidity\",\"amount1\":\"The amount of token1 to acheive resulting liquidity\",\"liquidity\":\"The new liquidity amount as a result of the increase\"}},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))\":{\"details\":\"Call this when the pool does exist and is initialized. Note that if the pool is created but not initialized a method does not exist, i.e. the pool is assumed to be initialized.\",\"params\":{\"params\":\"The params necessary to mint a position, encoded as `MintParams` in calldata\"},\"returns\":{\"amount0\":\"The amount of token0\",\"amount1\":\"The amount of token1\",\"liquidity\":\"The amount of liquidity for this position\",\"tokenId\":\"The ID of the token that represents the minted position\"}},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"permit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"deadline\":\"The deadline timestamp by which the call must be mined for the approve to work\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"spender\":\"The account that is being approved\",\"tokenId\":\"The ID of the token that is being approved for spending\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"positions(uint256)\":{\"details\":\"Throws if the token ID is not valid.\",\"params\":{\"tokenId\":\"The ID of the token that represents the position\"},\"returns\":{\"fee\":\"The fee associated with the pool\",\"feeGrowthInside0LastX128\":\"The fee growth of token0 as of the last action on the individual position\",\"feeGrowthInside1LastX128\":\"The fee growth of token1 as of the last action on the individual position\",\"liquidity\":\"The liquidity of the position\",\"nonce\":\"The nonce for permits\",\"operator\":\"The address that is approved for spending\",\"tickLower\":\"The lower end of the tick range for the position\",\"tickUpper\":\"The higher end of the tick range for the position\",\"token0\":\"The address of the token0 for a specific pool\",\"token1\":\"The address of the token1 for a specific pool\",\"tokensOwed0\":\"The uncollected amount of token0 owed to the position as of the last computation\",\"tokensOwed1\":\"The uncollected amount of token1 owed to the position as of the last computation\"}},\"refundAMB()\":{\"details\":\"Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps that use ether for the input amount\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"sweepToken(address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing the token from users\",\"params\":{\"amountMinimum\":\"The minimum amount of token required for a transfer\",\"recipient\":\"The destination address of the token\",\"token\":\"The contract address of the token which will be transferred to `recipient`\"}},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenByIndex(uint256)\":{\"details\":\"Returns a token ID at a given `index` of all the tokens stored by the contract. Use along with {totalSupply} to enumerate all tokens.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Returns a token ID owned by `owner` at a given `index` of its token list. Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"totalSupply()\":{\"details\":\"Returns the total amount of tokens stored by the contract.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"},\"unwrapSAMB(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of SAMB to unwrap\",\"recipient\":\"The address receiving AMB\"}}},\"title\":\"Non-fungible token for positions\",\"version\":1},\"userdoc\":{\"events\":{\"Collect(uint256,address,uint256,uint256)\":{\"notice\":\"Emitted when tokens are collected for a position NFT\"},\"DecreaseLiquidity(uint256,uint128,uint256,uint256)\":{\"notice\":\"Emitted when liquidity is decreased for a position NFT\"},\"IncreaseLiquidity(uint256,uint128,uint256,uint256)\":{\"notice\":\"Emitted when liquidity is increased for a position NFT\"}},\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"The domain separator used in the permit signature\"},\"PERMIT_TYPEHASH()\":{\"notice\":\"The permit typehash used in the permit signature\"},\"burn(uint256)\":{\"notice\":\"Burns a token ID, which deletes it from the NFT contract. The token must have 0 liquidity and all tokens must be collected first.\"},\"collect((uint256,address,uint128,uint128))\":{\"notice\":\"Collects up to a maximum amount of fees owed to a specific position to the recipient\"},\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"notice\":\"Creates a new pool if it does not exist, then initializes if not initialized\"},\"decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))\":{\"notice\":\"Decreases the amount of liquidity in a position and accounts it to the position\"},\"increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Increases the amount of liquidity in a position, with tokens paid by the `msg.sender`\"},\"mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))\":{\"notice\":\"Creates a new position wrapped in a NFT\"},\"permit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Approve of a specific token ID for spending by spender via signature\"},\"positions(uint256)\":{\"notice\":\"Returns the position information associated with a given token ID.\"},\"refundAMB()\":{\"notice\":\"Refunds any AMB balance held by this contract to the `msg.sender`\"},\"sweepToken(address,uint256,address)\":{\"notice\":\"Transfers the full amount of a token held by this contract to recipient\"},\"unwrapSAMB(uint256,address)\":{\"notice\":\"Unwraps the contract's SAMB balance and sends it to recipient as AMB.\"}},\"notice\":\"Wraps AstraDEX CL positions in a non-fungible token interface which allows for them to be transferred and authorized.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/INonfungiblePositionManager.sol\":\"INonfungiblePositionManager\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]},\"contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x383d39a13ce10019d4ebd27a694d085c03a1498a1cc31ec1511fac91b5296342\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3d22d9cc7a33829bd31da42d96bd75401a675ef32c8eb4d9e3074c21ec1241b6\",\"dweb:/ipfs/QmNrvD2T3k3wH5kWz6Kss9mSjxdJhXAA6NTH1Evj8j3k6A\"]},\"contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x920448f826d2d8e40aae06ce855644abac394c085a769605399d80cb36bde27f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b299cd039cf1fb92c9c58f666dfbb2753431f3904bed659ddd653ad9a503045\",\"dweb:/ipfs/QmZWb11WyJgGCW35e2opF3Ncstu59krJCDPAZpHWU9rqix\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x57bd5b069f6e66edd42a9b41e5864bfcd2aa7d404337d6c57a083fb589fc59bd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4efa92b18c295755437180f93a19179ef15dfe24a6db10ae876c41247fd4a907\",\"dweb:/ipfs/QmYJTRqE5BEjqyNoZqoctVFgxZF336cK9ba1RSd2LbgFkG\"]},\"contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x5d9b76c0eed9d836f8ab1d65a37921c56c46a69802f28c312f239ce159634473\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ab60ec035cd2f600d7e89828bcf1427a674defdcb4c511679144aae42273ba2d\",\"dweb:/ipfs/QmYWy2dAG2Mq4BUwybjVCbGtXYRG8Lz1jRfK6L924YuwRa\"]}},\"version\":1}"}},"contracts/interfaces/INonfungibleTokenPositionDescriptor.sol":{"INonfungibleTokenPositionDescriptor":{"abi":[{"inputs":[{"internalType":"contract INonfungiblePositionManager","name":"positionManager","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"tokenURI(address,uint256)":"e9dc6375"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract INonfungiblePositionManager\",\"name\":\"positionManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"tokenURI(address,uint256)\":{\"details\":\"Note this URI may be a data: URI with the JSON contents directly inlined\",\"params\":{\"positionManager\":\"The position manager for which to describe the token\",\"tokenId\":\"The ID of the token for which to produce a description, which may not be valid\"},\"returns\":{\"_0\":\"The URI of the ERC721-compliant metadata\"}}},\"title\":\"Describes position NFT tokens via URI\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"tokenURI(address,uint256)\":{\"notice\":\"Produces the URI describing a particular token ID for a position manager\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/INonfungibleTokenPositionDescriptor.sol\":\"INonfungibleTokenPositionDescriptor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]},\"contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x383d39a13ce10019d4ebd27a694d085c03a1498a1cc31ec1511fac91b5296342\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3d22d9cc7a33829bd31da42d96bd75401a675ef32c8eb4d9e3074c21ec1241b6\",\"dweb:/ipfs/QmNrvD2T3k3wH5kWz6Kss9mSjxdJhXAA6NTH1Evj8j3k6A\"]},\"contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x920448f826d2d8e40aae06ce855644abac394c085a769605399d80cb36bde27f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b299cd039cf1fb92c9c58f666dfbb2753431f3904bed659ddd653ad9a503045\",\"dweb:/ipfs/QmZWb11WyJgGCW35e2opF3Ncstu59krJCDPAZpHWU9rqix\"]},\"contracts/interfaces/INonfungibleTokenPositionDescriptor.sol\":{\"keccak256\":\"0x06bf5ea0c738db5309219a782c0221445a7fb1505fa9ce2a628aa7a80cc46ab7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://39dd81472e18dbc06b8997ff508fcf77ec3b90e3a0626447cce20186b728af06\",\"dweb:/ipfs/QmTxCBtppLbv5GC4ygjui26Qm93hes85cCKS5V6nYn1WBx\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x57bd5b069f6e66edd42a9b41e5864bfcd2aa7d404337d6c57a083fb589fc59bd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4efa92b18c295755437180f93a19179ef15dfe24a6db10ae876c41247fd4a907\",\"dweb:/ipfs/QmYJTRqE5BEjqyNoZqoctVFgxZF336cK9ba1RSd2LbgFkG\"]},\"contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x5d9b76c0eed9d836f8ab1d65a37921c56c46a69802f28c312f239ce159634473\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ab60ec035cd2f600d7e89828bcf1427a674defdcb4c511679144aae42273ba2d\",\"dweb:/ipfs/QmYWy2dAG2Mq4BUwybjVCbGtXYRG8Lz1jRfK6L924YuwRa\"]}},\"version\":1}"}},"contracts/interfaces/IPeripheryImmutableState.sol":{"IPeripheryImmutableState":{"abi":[{"inputs":[],"name":"SAMB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"SAMB()":"90793ea8","factory()":"c45a0155"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SAMB\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"SAMB()\":{\"returns\":{\"_0\":\"Returns the address of SAMB\"}},\"factory()\":{\"returns\":{\"_0\":\"Returns the address of the AstraDEX CL factory\"}}},\"title\":\"Immutable state\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Functions that return immutable state of the router\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IPeripheryImmutableState.sol\":\"IPeripheryImmutableState\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]}},\"version\":1}"}},"contracts/interfaces/IPeripheryPayments.sol":{"IPeripheryPayments":{"abi":[{"inputs":[],"name":"refundAMB","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"sweepToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"unwrapSAMB","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"refundAMB()":"c53af304","sweepToken(address,uint256,address)":"df2ab5bb","unwrapSAMB(uint256,address)":"a98ce37f"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"refundAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"sweepToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"unwrapSAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"refundAMB()\":{\"details\":\"Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps that use ether for the input amount\"},\"sweepToken(address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing the token from users\",\"params\":{\"amountMinimum\":\"The minimum amount of token required for a transfer\",\"recipient\":\"The destination address of the token\",\"token\":\"The contract address of the token which will be transferred to `recipient`\"}},\"unwrapSAMB(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of SAMB to unwrap\",\"recipient\":\"The address receiving AMB\"}}},\"title\":\"Periphery Payments\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"refundAMB()\":{\"notice\":\"Refunds any AMB balance held by this contract to the `msg.sender`\"},\"sweepToken(address,uint256,address)\":{\"notice\":\"Transfers the full amount of a token held by this contract to recipient\"},\"unwrapSAMB(uint256,address)\":{\"notice\":\"Unwraps the contract's SAMB balance and sends it to recipient as AMB.\"}},\"notice\":\"Functions to ease deposits and withdrawals of AMB\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IPeripheryPayments.sol\":\"IPeripheryPayments\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x57bd5b069f6e66edd42a9b41e5864bfcd2aa7d404337d6c57a083fb589fc59bd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4efa92b18c295755437180f93a19179ef15dfe24a6db10ae876c41247fd4a907\",\"dweb:/ipfs/QmYJTRqE5BEjqyNoZqoctVFgxZF336cK9ba1RSd2LbgFkG\"]}},\"version\":1}"}},"contracts/interfaces/IPeripheryPaymentsWithFee.sol":{"IPeripheryPaymentsWithFee":{"abi":[{"inputs":[],"name":"refundAMB","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"sweepToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"feeBips","type":"uint256"},{"internalType":"address","name":"feeRecipient","type":"address"}],"name":"sweepTokenWithFee","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"unwrapSAMB","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"feeBips","type":"uint256"},{"internalType":"address","name":"feeRecipient","type":"address"}],"name":"unwrapSAMBWithFee","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"refundAMB()":"c53af304","sweepToken(address,uint256,address)":"df2ab5bb","sweepTokenWithFee(address,uint256,address,uint256,address)":"e0e189a0","unwrapSAMB(uint256,address)":"a98ce37f","unwrapSAMBWithFee(uint256,address,uint256,address)":"97e87d9d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"refundAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"sweepToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeBips\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"sweepTokenWithFee\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"unwrapSAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeBips\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"unwrapSAMBWithFee\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"refundAMB()\":{\"details\":\"Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps that use ether for the input amount\"},\"sweepToken(address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing the token from users\",\"params\":{\"amountMinimum\":\"The minimum amount of token required for a transfer\",\"recipient\":\"The destination address of the token\",\"token\":\"The contract address of the token which will be transferred to `recipient`\"}},\"sweepTokenWithFee(address,uint256,address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing the token from users\"},\"unwrapSAMB(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of SAMB to unwrap\",\"recipient\":\"The address receiving AMB\"}},\"unwrapSAMBWithFee(uint256,address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\"}},\"title\":\"Periphery Payments\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"refundAMB()\":{\"notice\":\"Refunds any AMB balance held by this contract to the `msg.sender`\"},\"sweepToken(address,uint256,address)\":{\"notice\":\"Transfers the full amount of a token held by this contract to recipient\"},\"sweepTokenWithFee(address,uint256,address,uint256,address)\":{\"notice\":\"Transfers the full amount of a token held by this contract to recipient, with a percentage between 0 (exclusive) and 1 (inclusive) going to feeRecipient\"},\"unwrapSAMB(uint256,address)\":{\"notice\":\"Unwraps the contract's SAMB balance and sends it to recipient as AMB.\"},\"unwrapSAMBWithFee(uint256,address,uint256,address)\":{\"notice\":\"Unwraps the contract's SAMB balance and sends it to recipient as AMB, with a percentage between 0 (exclusive), and 1 (inclusive) going to feeRecipient\"}},\"notice\":\"Functions to ease deposits and withdrawals of AMB\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IPeripheryPaymentsWithFee.sol\":\"IPeripheryPaymentsWithFee\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x57bd5b069f6e66edd42a9b41e5864bfcd2aa7d404337d6c57a083fb589fc59bd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4efa92b18c295755437180f93a19179ef15dfe24a6db10ae876c41247fd4a907\",\"dweb:/ipfs/QmYJTRqE5BEjqyNoZqoctVFgxZF336cK9ba1RSd2LbgFkG\"]},\"contracts/interfaces/IPeripheryPaymentsWithFee.sol\":{\"keccak256\":\"0x95eb2970f74b59074666d156779b7eeb1a34228476ac26f987f6f563b834098d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bd17994291ec4231d4fa66af52e0cfd4f7883365ecb41f534acf08afffa8806d\",\"dweb:/ipfs/QmUjst3v8zu8DE9Ue3YHJJoRLcZGd9CXP3jVoC2tSAUjs9\"]}},\"version\":1}"}},"contracts/interfaces/IPoolInitializer.sol":{"IPoolInitializer":{"abi":[{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"createAndInitializePoolIfNecessary","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"createAndInitializePoolIfNecessary(address,address,uint24,uint160)":"13ead562"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"createAndInitializePoolIfNecessary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"details\":\"This method can be bundled with others via IMulticall for the first action (e.g. mint) performed against a pool\",\"params\":{\"fee\":\"The fee amount of the CL pool for the specified token pair\",\"sqrtPriceX96\":\"The initial square root price of the pool as a Q64.96 value\",\"token0\":\"The contract address of token0 of the pool\",\"token1\":\"The contract address of token1 of the pool\"},\"returns\":{\"pool\":\"Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary\"}}},\"title\":\"Creates and initializes CL Pools\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"notice\":\"Creates a new pool if it does not exist, then initializes if not initialized\"}},\"notice\":\"Provides a method for creating and initializing a pool, if necessary, for bundling with other methods that require the pool to exist.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IPoolInitializer.sol\":\"IPoolInitializer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x5d9b76c0eed9d836f8ab1d65a37921c56c46a69802f28c312f239ce159634473\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ab60ec035cd2f600d7e89828bcf1427a674defdcb4c511679144aae42273ba2d\",\"dweb:/ipfs/QmYWy2dAG2Mq4BUwybjVCbGtXYRG8Lz1jRfK6L924YuwRa\"]}},\"version\":1}"}},"contracts/interfaces/IQuoter.sol":{"IQuoter":{"abi":[{"inputs":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"quoteExactInput","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"name":"quoteExactInputSingle","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"quoteExactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"name":"quoteExactOutputSingle","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"quoteExactInput(bytes,uint256)":"cdca1753","quoteExactInputSingle(address,address,uint24,uint256,uint160)":"f7729d43","quoteExactOutput(bytes,uint256)":"2f80bb1d","quoteExactOutputSingle(address,address,uint24,uint256,uint160)":"30d07f21"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"quoteExactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"quoteExactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"quoteExactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"quoteExactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"These functions are not marked view because they rely on calling non-view functions and reverting to compute the result. They are also not gas efficient and should not be called on-chain.\",\"kind\":\"dev\",\"methods\":{\"quoteExactInput(bytes,uint256)\":{\"params\":{\"amountIn\":\"The amount of the first token to swap\",\"path\":\"The path of the swap, i.e. each token pair and the pool fee\"},\"returns\":{\"amountOut\":\"The amount of the last token that would be received\"}},\"quoteExactInputSingle(address,address,uint24,uint256,uint160)\":{\"params\":{\"amountIn\":\"The desired input amount\",\"fee\":\"The fee of the token pool to consider for the pair\",\"sqrtPriceLimitX96\":\"The price limit of the pool that cannot be exceeded by the swap\",\"tokenIn\":\"The token being swapped in\",\"tokenOut\":\"The token being swapped out\"},\"returns\":{\"amountOut\":\"The amount of `tokenOut` that would be received\"}},\"quoteExactOutput(bytes,uint256)\":{\"params\":{\"amountOut\":\"The amount of the last token to receive\",\"path\":\"The path of the swap, i.e. each token pair and the pool fee. Path must be provided in reverse order\"},\"returns\":{\"amountIn\":\"The amount of first token required to be paid\"}},\"quoteExactOutputSingle(address,address,uint24,uint256,uint160)\":{\"params\":{\"amountOut\":\"The desired output amount\",\"fee\":\"The fee of the token pool to consider for the pair\",\"sqrtPriceLimitX96\":\"The price limit of the pool that cannot be exceeded by the swap\",\"tokenIn\":\"The token being swapped in\",\"tokenOut\":\"The token being swapped out\"},\"returns\":{\"amountIn\":\"The amount required as the input for the swap in order to receive `amountOut`\"}}},\"title\":\"Quoter Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"quoteExactInput(bytes,uint256)\":{\"notice\":\"Returns the amount out received for a given exact input swap without executing the swap\"},\"quoteExactInputSingle(address,address,uint24,uint256,uint160)\":{\"notice\":\"Returns the amount out received for a given exact input but for a swap of a single pool\"},\"quoteExactOutput(bytes,uint256)\":{\"notice\":\"Returns the amount in required for a given exact output swap without executing the swap\"},\"quoteExactOutputSingle(address,address,uint24,uint256,uint160)\":{\"notice\":\"Returns the amount in required to receive the given exact output amount but for a swap of a single pool\"}},\"notice\":\"Supports quoting the calculated amounts from exact input or exact output swaps\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IQuoter.sol\":\"IQuoter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IQuoter.sol\":{\"keccak256\":\"0x124b4334f058f70afd8f3b04315cc0812961d400957225d0875872b2a31afbff\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://efdc8133033a1596f60f3619a317f8b3af98a6adffd85a9898c5a809c5c22417\",\"dweb:/ipfs/QmRkGjgzgSxhUVxwqiWZuz9M4Ff3TwTbzUgN3yJd4gxMfN\"]}},\"version\":1}"}},"contracts/interfaces/IQuoterV2.sol":{"IQuoterV2":{"abi":[{"inputs":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"quoteExactInput","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint160[]","name":"sqrtPriceX96AfterList","type":"uint160[]"},{"internalType":"uint32[]","name":"initializedTicksCrossedList","type":"uint32[]"},{"internalType":"uint256","name":"gasEstimate","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct IQuoterV2.QuoteExactInputSingleParams","name":"params","type":"tuple"}],"name":"quoteExactInputSingle","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceX96After","type":"uint160"},{"internalType":"uint32","name":"initializedTicksCrossed","type":"uint32"},{"internalType":"uint256","name":"gasEstimate","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"quoteExactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint160[]","name":"sqrtPriceX96AfterList","type":"uint160[]"},{"internalType":"uint32[]","name":"initializedTicksCrossedList","type":"uint32[]"},{"internalType":"uint256","name":"gasEstimate","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct IQuoterV2.QuoteExactOutputSingleParams","name":"params","type":"tuple"}],"name":"quoteExactOutputSingle","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceX96After","type":"uint160"},{"internalType":"uint32","name":"initializedTicksCrossed","type":"uint32"},{"internalType":"uint256","name":"gasEstimate","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"quoteExactInput(bytes,uint256)":"cdca1753","quoteExactInputSingle((address,address,uint256,uint24,uint160))":"c6a5026a","quoteExactOutput(bytes,uint256)":"2f80bb1d","quoteExactOutputSingle((address,address,uint256,uint24,uint160))":"bd21704a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"quoteExactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint160[]\",\"name\":\"sqrtPriceX96AfterList\",\"type\":\"uint160[]\"},{\"internalType\":\"uint32[]\",\"name\":\"initializedTicksCrossedList\",\"type\":\"uint32[]\"},{\"internalType\":\"uint256\",\"name\":\"gasEstimate\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct IQuoterV2.QuoteExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"quoteExactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96After\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"initializedTicksCrossed\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"gasEstimate\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"quoteExactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint160[]\",\"name\":\"sqrtPriceX96AfterList\",\"type\":\"uint160[]\"},{\"internalType\":\"uint32[]\",\"name\":\"initializedTicksCrossedList\",\"type\":\"uint32[]\"},{\"internalType\":\"uint256\",\"name\":\"gasEstimate\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct IQuoterV2.QuoteExactOutputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"quoteExactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96After\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"initializedTicksCrossed\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"gasEstimate\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"These functions are not marked view because they rely on calling non-view functions and reverting to compute the result. They are also not gas efficient and should not be called on-chain.\",\"kind\":\"dev\",\"methods\":{\"quoteExactInput(bytes,uint256)\":{\"params\":{\"amountIn\":\"The amount of the first token to swap\",\"path\":\"The path of the swap, i.e. each token pair and the pool fee\"},\"returns\":{\"amountOut\":\"The amount of the last token that would be received\",\"gasEstimate\":\"The estimate of the gas that the swap consumes\",\"initializedTicksCrossedList\":\"List of the initialized ticks that the swap crossed for each pool in the path\",\"sqrtPriceX96AfterList\":\"List of the sqrt price after the swap for each pool in the path\"}},\"quoteExactInputSingle((address,address,uint256,uint24,uint160))\":{\"params\":{\"params\":\"The params for the quote, encoded as `QuoteExactInputSingleParams` tokenIn The token being swapped in tokenOut The token being swapped out fee The fee of the token pool to consider for the pair amountIn The desired input amount sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\"},\"returns\":{\"amountOut\":\"The amount of `tokenOut` that would be received\",\"gasEstimate\":\"The estimate of the gas that the swap consumes\",\"initializedTicksCrossed\":\"The number of initialized ticks that the swap crossed\",\"sqrtPriceX96After\":\"The sqrt price of the pool after the swap\"}},\"quoteExactOutput(bytes,uint256)\":{\"params\":{\"amountOut\":\"The amount of the last token to receive\",\"path\":\"The path of the swap, i.e. each token pair and the pool fee. Path must be provided in reverse order\"},\"returns\":{\"amountIn\":\"The amount of first token required to be paid\",\"gasEstimate\":\"The estimate of the gas that the swap consumes\",\"initializedTicksCrossedList\":\"List of the initialized ticks that the swap crossed for each pool in the path\",\"sqrtPriceX96AfterList\":\"List of the sqrt price after the swap for each pool in the path\"}},\"quoteExactOutputSingle((address,address,uint256,uint24,uint160))\":{\"params\":{\"params\":\"The params for the quote, encoded as `QuoteExactOutputSingleParams` tokenIn The token being swapped in tokenOut The token being swapped out fee The fee of the token pool to consider for the pair amountOut The desired output amount sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\"},\"returns\":{\"amountIn\":\"The amount required as the input for the swap in order to receive `amountOut`\",\"gasEstimate\":\"The estimate of the gas that the swap consumes\",\"initializedTicksCrossed\":\"The number of initialized ticks that the swap crossed\",\"sqrtPriceX96After\":\"The sqrt price of the pool after the swap\"}}},\"title\":\"QuoterV2 Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"quoteExactInput(bytes,uint256)\":{\"notice\":\"Returns the amount out received for a given exact input swap without executing the swap\"},\"quoteExactInputSingle((address,address,uint256,uint24,uint160))\":{\"notice\":\"Returns the amount out received for a given exact input but for a swap of a single pool\"},\"quoteExactOutput(bytes,uint256)\":{\"notice\":\"Returns the amount in required for a given exact output swap without executing the swap\"},\"quoteExactOutputSingle((address,address,uint256,uint24,uint160))\":{\"notice\":\"Returns the amount in required to receive the given exact output amount but for a swap of a single pool\"}},\"notice\":\"Supports quoting the calculated amounts from exact input or exact output swaps.For each pool also tells you the number of initialized ticks crossed and the sqrt price of the pool after the swap.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IQuoterV2.sol\":\"IQuoterV2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IQuoterV2.sol\":{\"keccak256\":\"0xbcc809869904da994062647eed1d5ecb209feaf4c25151002fc7f7e3673200e9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://478cccc59f15070ad22d525e385fd95deddd0f595a41125f13ecbb62b848bdb4\",\"dweb:/ipfs/QmaZb197Kf2ttkjGuxpfaK9oFYtpUxGSJEshYYQ1ri5ywF\"]}},\"version\":1}"}},"contracts/interfaces/ISelfPermit.sol":{"ISelfPermit":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowed","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowedIfNecessary","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitIfNecessary","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)":"f3995c67","selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)":"4659a494","selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"a4a78f0c","selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"c2e3140a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowed\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowedIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this).\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this)\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this) Can be used instead of #selfPermitAllowed to prevent calls from failing due to a frontrun of a call to #selfPermitAllowed.\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this). Can be used instead of #selfPermit to prevent calls from failing due to a frontrun of a call to #selfPermit\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}}},\"title\":\"Self Permit\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"}},\"notice\":\"Functionality to call permit on any EIP-2612-compliant token for use in the route\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/ISelfPermit.sol\":\"ISelfPermit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0x402d04301ffd41853f4949a574b8853c46d076910ed734f5e4478bf64369a3ed\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6a5536d179ff3777920ff8ed60cfc457f7a4dda1373c8f0394b2a8e0fe537525\",\"dweb:/ipfs/QmdaYGikTmmi2vbECnoomZ8vS8PBiD4Bq8BoFCYqFZmKgR\"]}},\"version\":1}"}},"contracts/interfaces/ISwapRouter.sol":{"ISwapRouter":{"abi":[{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"astraCLSwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactInputParams","name":"params","type":"tuple"}],"name":"exactInput","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactInputSingleParams","name":"params","type":"tuple"}],"name":"exactInputSingle","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactOutputParams","name":"params","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactOutputSingleParams","name":"params","type":"tuple"}],"name":"exactOutputSingle","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"astraCLSwapCallback(int256,int256,bytes)":"11c17848","exactInput((bytes,address,uint256,uint256,uint256))":"c04b8d59","exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"414bf389","exactOutput((bytes,address,uint256,uint256,uint256))":"f28c0498","exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"db3e2198"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"astraCLSwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapRouter.ExactInputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct ISwapRouter.ExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapRouter.ExactOutputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct ISwapRouter.ExactOutputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IAstraCLPoolActions#swap call\"}},\"exactInput((bytes,address,uint256,uint256,uint256))\":{\"params\":{\"params\":\"The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\"},\"returns\":{\"amountOut\":\"The amount of the received token\"}},\"exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"params\":{\"params\":\"The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\"},\"returns\":{\"amountOut\":\"The amount of the received token\"}},\"exactOutput((bytes,address,uint256,uint256,uint256))\":{\"params\":{\"params\":\"The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\"},\"returns\":{\"amountIn\":\"The amount of the input token\"}},\"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"params\":{\"params\":\"The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\"},\"returns\":{\"amountIn\":\"The amount of the input token\"}}},\"title\":\"Router token swapping functionality\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IAstraCLPool#swap.\"},\"exactInput((bytes,address,uint256,uint256,uint256))\":{\"notice\":\"Swaps `amountIn` of one token for as much as possible of another along the specified path\"},\"exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"notice\":\"Swaps `amountIn` of one token for as much as possible of another token\"},\"exactOutput((bytes,address,uint256,uint256,uint256))\":{\"notice\":\"Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)\"},\"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"notice\":\"Swaps as little as possible of one token for `amountOut` of another token\"}},\"notice\":\"Functions for swapping tokens via AstraDEX CL\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/ISwapRouter.sol\":\"ISwapRouter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol\":{\"keccak256\":\"0xaa82f63f0c930e51d6aaae0d59e7bf3ef5b32371ac0549f6e07bfcab5b4dcb16\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://73419af0b4f35f02c3b89d387d6ac46041637a7133e249de617103b7567bf4c4\",\"dweb:/ipfs/QmTfwEX1dCoUUUMaMFzDnqDcFXihHQnEG1fbkBFpidRs8o\"]},\"contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0xbcb66f65faf010af6a5314375428277818cd2648f6dc936970aee18711a4fdd2\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2a58b8e026a90bc84be07cfa9cbf64083f1bbde0d217ca4744650ba871122ff9\",\"dweb:/ipfs/QmRN4TqojnnF6wiupZZBYDATC6WmY9dx4p9Sorb9zXY9us\"]}},\"version\":1}"}},"contracts/interfaces/ITickLens.sol":{"ITickLens":{"abi":[{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"int16","name":"tickBitmapIndex","type":"int16"}],"name":"getPopulatedTicksInWord","outputs":[{"components":[{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"int128","name":"liquidityNet","type":"int128"},{"internalType":"uint128","name":"liquidityGross","type":"uint128"}],"internalType":"struct ITickLens.PopulatedTick[]","name":"populatedTicks","type":"tuple[]"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getPopulatedTicksInWord(address,int16)":"351fb478"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"int16\",\"name\":\"tickBitmapIndex\",\"type\":\"int16\"}],\"name\":\"getPopulatedTicksInWord\",\"outputs\":[{\"components\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"internalType\":\"uint128\",\"name\":\"liquidityGross\",\"type\":\"uint128\"}],\"internalType\":\"struct ITickLens.PopulatedTick[]\",\"name\":\"populatedTicks\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This avoids the waterfall of fetching the tick bitmap, parsing the bitmap to know which ticks to fetch, and then sending additional multicalls to fetch the tick data\",\"kind\":\"dev\",\"methods\":{\"getPopulatedTicksInWord(address,int16)\":{\"params\":{\"pool\":\"The address of the pool for which to fetch populated tick data\",\"tickBitmapIndex\":\"The index of the word in the tick bitmap for which to parse the bitmap and fetch all the populated ticks\"},\"returns\":{\"populatedTicks\":\"An array of tick data for the given word in the tick bitmap\"}}},\"title\":\"Tick Lens\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getPopulatedTicksInWord(address,int16)\":{\"notice\":\"Get all the tick data for the populated ticks from a word of the tick bitmap of a pool\"}},\"notice\":\"Provides functions for fetching chunks of tick data for a pool\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/ITickLens.sol\":\"ITickLens\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/ITickLens.sol\":{\"keccak256\":\"0xddfabb24ac5132c33db3735bdf6235ba39ea5e9a23a41e3dd5ec64ea76149ba8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://be307ee42e6576cdf3591e230eac28ddd490ddd4c33d0359c77b862706d86c17\",\"dweb:/ipfs/QmbgK9ziqjyv945r4giTyDaZDF4JVmQ5jQA3Sz78UENFMZ\"]}},\"version\":1}"}},"contracts/interfaces/classic/IAstraPair.sol":{"IAstraPair":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"reserve0","type":"uint112"},{"internalType":"uint112","name":"reserve1","type":"uint112"},{"internalType":"uint32","name":"blockTimestampLast","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","MINIMUM_LIQUIDITY()":"ba9a7a56","PERMIT_TYPEHASH()":"30adf81f","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address)":"89afcb44","decimals()":"313ce567","factory()":"c45a0155","getReserves()":"0902f1ac","initialize(address,address)":"485cc955","kLast()":"7464fc3d","mint(address)":"6a627842","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","price0CumulativeLast()":"5909c0d5","price1CumulativeLast()":"5a3d5493","skim(address)":"bc25cf77","swap(uint256,uint256,address,bytes)":"022c0d9f","symbol()":"95d89b41","sync()":"fff6cae9","token0()":"0dfe1681","token1()":"d21220a7","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/classic/IAstraPair.sol\":\"IAstraPair\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/classic/IAstraPair.sol\":{\"keccak256\":\"0xd08cb9a031ef3411340715312f8fdd9e19afd9cad5120d367f72bdf934d38a46\",\"urls\":[\"bzz-raw://6b26289deb4f75297564a4a443420c1f9ba071a3d0a952d96ed798c7a2f34b04\",\"dweb:/ipfs/QmddiNcmqTUzLbWuWQfZDUzMg8fA1FeR6383W7vLMmmDWS\"]}},\"version\":1}"}},"contracts/interfaces/external/IERC1271.sol":{"IERC1271":{"abi":[{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"isValidSignature(bytes32,bytes)":"1626ba7e"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface defined by EIP-1271\",\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"details\":\"MUST return the bytes4 magic value 0x1626ba7e when function passes. MUST NOT modify state (using STATICCALL for solc < 0.5, view modifier for solc > 0.5). MUST allow external calls.\",\"params\":{\"hash\":\"Hash of the data to be signed\",\"signature\":\"Signature byte array associated with _data\"},\"returns\":{\"magicValue\":\"The bytes4 magic value 0x1626ba7e\"}}},\"title\":\"Interface for verifying contract-based account signatures\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Returns whether the provided signature is valid for the provided data\"}},\"notice\":\"Interface that verifies provided signature for the data\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/external/IERC1271.sol\":\"IERC1271\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/external/IERC1271.sol\":{\"keccak256\":\"0xfafb0a232f7410fa2fbcae4627e357dfa8f43a58dea6ba796d8bf5523c5c7b89\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f3877e40332b89fc7a14fa3266b4a2bd154725c322816a8985eabfbaeb6ab372\",\"dweb:/ipfs/QmVj7tjRKWdW9H6vhP2JTDgt82Pk8sGHEJHtJJwPqmgrRi\"]}},\"version\":1}"}},"contracts/interfaces/external/IERC20PermitAllowed.sol":{"IERC20PermitAllowed":{"abi":[{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)":"8fcbaf0c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)\":{\"details\":\"This is the permit interface used by DAI and CHAI\",\"params\":{\"allowed\":\"Boolean that sets approval amount, true for type(uint256).max and false for 0\",\"expiry\":\"The timestamp at which the permit is no longer valid\",\"holder\":\"The address of the token holder, the token owner\",\"nonce\":\"The holder's nonce, increases at each call to permit\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"spender\":\"The address of the token spender\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}}},\"title\":\"Interface for permit\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)\":{\"notice\":\"Approve the spender to spend some tokens via the holder signature\"}},\"notice\":\"Interface used by DAI/CHAI for permit\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/external/IERC20PermitAllowed.sol\":\"IERC20PermitAllowed\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/external/IERC20PermitAllowed.sol\":{\"keccak256\":\"0x8c4c1b8e724e0a78cb691d703dd37cd91b8bd6600537fb227807a194025a792d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://783be851155842a02cdb0483c3a69ecc0e7ae8545f65cec1d4aeb355b2026a7d\",\"dweb:/ipfs/QmZNBQosTjpGNKB3Eo2K6Zzye7FYiLVoEki5iPB2Y69jz2\"]}},\"version\":1}"}},"contracts/interfaces/external/ISAMB.sol":{"ISAMB":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","deposit()":"d0e30db0","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"title\":\"Interface for SAMB\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit()\":{\"notice\":\"Deposit ether to get wrapped ether\"},\"withdraw(uint256)\":{\"notice\":\"Withdraw wrapped ether to get ether\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/external/ISAMB.sol\":\"ISAMB\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x5b5789677c6b7e447fd774a5c065d9547c85f22e950e18690f686a6b779d78dc\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c2e45681c8d5c704fbfef7369ff7878e6af2d987ba564eb97148ee6e8db87e49\",\"dweb:/ipfs/Qmeg4ynPmWipSVb6BRj4o8uZRbE2bQk8nCwp9apMAEq8Xk\"]}},\"version\":1}"}},"contracts/lens/Quoter.sol":{"Quoter":{"abi":[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_SAMB","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"SAMB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"path","type":"bytes"}],"name":"astraCLSwapCallback","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"quoteExactInput","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"name":"quoteExactInputSingle","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"quoteExactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"name":"quoteExactOutputSingle","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:507:115","statements":[{"nodeType":"YulBlock","src":"6:3:115","statements":[]},{"body":{"nodeType":"YulBlock","src":"76:117:115","statements":[{"nodeType":"YulAssignment","src":"86:22:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"101:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"95:5:115"},"nodeType":"YulFunctionCall","src":"95:13:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"86:5:115"}]},{"body":{"nodeType":"YulBlock","src":"171:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"180:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"183:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"173:6:115"},"nodeType":"YulFunctionCall","src":"173:12:115"},"nodeType":"YulExpressionStatement","src":"173:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"130:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"141:5:115"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"156:3:115","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"161:1:115","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"152:3:115"},"nodeType":"YulFunctionCall","src":"152:11:115"},{"kind":"number","nodeType":"YulLiteral","src":"165:1:115","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"148:3:115"},"nodeType":"YulFunctionCall","src":"148:19:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"137:3:115"},"nodeType":"YulFunctionCall","src":"137:31:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"127:2:115"},"nodeType":"YulFunctionCall","src":"127:42:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"120:6:115"},"nodeType":"YulFunctionCall","src":"120:50:115"},"nodeType":"YulIf","src":"117:2:115"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"55:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"66:5:115","type":""}],"src":"14:179:115"},{"body":{"nodeType":"YulBlock","src":"296:209:115","statements":[{"body":{"nodeType":"YulBlock","src":"342:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"351:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"359:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"344:6:115"},"nodeType":"YulFunctionCall","src":"344:22:115"},"nodeType":"YulExpressionStatement","src":"344:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"317:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"326:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"313:3:115"},"nodeType":"YulFunctionCall","src":"313:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"338:2:115","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"309:3:115"},"nodeType":"YulFunctionCall","src":"309:32:115"},"nodeType":"YulIf","src":"306:2:115"},{"nodeType":"YulAssignment","src":"377:52:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"419:9:115"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"387:31:115"},"nodeType":"YulFunctionCall","src":"387:42:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"377:6:115"}]},{"nodeType":"YulAssignment","src":"438:61:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"484:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"495:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"480:3:115"},"nodeType":"YulFunctionCall","src":"480:18:115"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"448:31:115"},"nodeType":"YulFunctionCall","src":"448:51:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"438:6:115"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"254:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"265:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"277:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"285:6:115","type":""}],"src":"198:307:115"}]},"contents":"{\n    { }\n    function abi_decode_t_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_t_address_fromMemory(headStart)\n        value1 := abi_decode_t_address_fromMemory(add(headStart, 32))\n    }\n}","id":115,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60c060405234801561001057600080fd5b506040516112e53803806112e583398101604081905261002f91610069565b6001600160601b0319606092831b8116608052911b1660a05261009b565b80516001600160a01b038116811461006457600080fd5b919050565b6000806040838503121561007b578182fd5b6100848361004d565b91506100926020840161004d565b90509250929050565b60805160601c60a05160601c6112176100ce6000398061044d525080610147528061047152806106eb52506112176000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806390793ea81161005b57806390793ea8146100d3578063c45a0155146100e8578063cdca1753146100f0578063f7729d43146101035761007d565b806311c17848146100825780632f80bb1d1461009757806330d07f21146100c0575b600080fd5b610095610090366004610f04565b610116565b005b6100aa6100a5366004610e9e565b610221565b6040516100b79190611148565b60405180910390f35b6100aa6100ce366004610e30565b610286565b6100db61044b565b6040516100b79190611084565b6100db61046f565b6100aa6100fe366004610e9e565b610493565b6100aa610111366004610e30565b6104e1565b60008313806101255750600082135b61012e57600080fd5b600080600061013c84610660565b92509250925061016e7f0000000000000000000000000000000000000000000000000000000000000000848484610691565b5060008060008089136101b4578573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610888a6000036101e9565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161089896000035b925092509250821561020057604051818152602081fd5b6000541561021657600054811461021657600080fd5b604051828152602081fd5b60005b600061022f846106a7565b9050600080600061023f87610660565b925092509250610253828483896000610286565b9550831561026b57610264876106af565b9650610277565b85945050505050610280565b50505050610224565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff808616878216109083166102b15760008490555b6102bc8787876106e4565b73ffffffffffffffffffffffffffffffffffffffff1663128acb0830836102e288610722565b60000373ffffffffffffffffffffffffffffffffffffffff881615610307578761032d565b856103265773fffd8963efd1fc6a506488495d951d5263988d2561032d565b6401000276a45b8b8b8e6040516020016103429392919061101e565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016103719594939291906110a5565b6040805180830381600087803b15801561038a57600080fd5b505af19250505080156103d8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526103d591810190610ee1565b60015b61043e573d808015610406576040519150601f19603f3d011682016040523d82523d6000602084013e61040b565b606091505b5073ffffffffffffffffffffffffffffffffffffffff841661042c57600080555b61043581610754565b92505050610442565b5050505b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005b60006104a1846106a7565b905060008060006104b187610660565b9250925092506104c58383838960006104e1565b9550831561026b576104d6876106af565b965050505050610496565b600073ffffffffffffffffffffffffffffffffffffffff8086169087161061050a8787876106e4565b73ffffffffffffffffffffffffffffffffffffffff1663128acb08308361053088610722565b73ffffffffffffffffffffffffffffffffffffffff8816156105525787610578565b856105715773fffd8963efd1fc6a506488495d951d5263988d25610578565b6401000276a45b8c8b8d60405160200161058d9392919061101e565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016105bc9594939291906110a5565b6040805180830381600087803b1580156105d557600080fd5b505af1925050508015610623575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261062091810190610ee1565b60015b61043e573d808015610651576040519150601f19603f3d011682016040523d82523d6000602084013e610656565b606091505b5061043581610754565b6000808061066e8482610805565b925061067b846014610905565b9050610688846017610805565b91509193909250565b6000610442856106a28686866109f5565b610a72565b516042111590565b80516060906102809083906017907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe901610aa2565b600061071a7f00000000000000000000000000000000000000000000000000000000000000006107158686866109f5565b610c89565b949350505050565b60007f8000000000000000000000000000000000000000000000000000000000000000821061075057600080fd5b5090565b600081516020146107f1576044825110156107a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079b90611111565b60405180910390fd5b600482019150818060200190518101906107be9190610f52565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079b91906110f7565b818060200190518101906102809190610fbc565b60008182601401101561087957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b81601401835110156108ec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b60008182600301101561097957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b81600301835110156109ec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b6109fd610dbf565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610a35579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b6000610a7e8383610c89565b90503373ffffffffffffffffffffffffffffffffffffffff82161461028057600080fd5b60608182601f011015610b1657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b828284011015610b8757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b81830184511015610bf957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b606082158015610c185760405191506000825260208201604052610c80565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610c51578051835260209283019201610c39565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610610ccb57600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0460d5808301919091528251808303909101815260f5909101909152805191012090565b604080516060810182526000808252602082018190529181019190915290565b600082601f830112610def578081fd5b8135610e02610dfd82611175565b611151565b818152846020838601011115610e16578283fd5b816020850160208301379081016020019190915292915050565b600080600080600060a08688031215610e47578081fd5b8535610e52816111e5565b94506020860135610e62816111e5565b9350604086013562ffffff81168114610e79578182fd5b9250606086013591506080860135610e90816111e5565b809150509295509295909350565b60008060408385031215610eb0578182fd5b823567ffffffffffffffff811115610ec6578283fd5b610ed285828601610ddf565b95602094909401359450505050565b60008060408385031215610ef3578182fd5b505080516020909101519092909150565b600080600060608486031215610f18578283fd5b8335925060208401359150604084013567ffffffffffffffff811115610f3c578182fd5b610f4886828701610ddf565b9150509250925092565b600060208284031215610f63578081fd5b815167ffffffffffffffff811115610f79578182fd5b8201601f81018413610f89578182fd5b8051610f97610dfd82611175565b818152856020838501011115610fab578384fd5b6104428260208301602086016111b5565b600060208284031215610fcd578081fd5b5051919050565b60008151808452610fec8160208601602086016111b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a060808301526110ec60a0830184610fd4565b979650505050505050565b60006020825261110a6020830184610fd4565b9392505050565b60208082526010908201527f556e6578706563746564206572726f7200000000000000000000000000000000604082015260600190565b90815260200190565b60405181810167ffffffffffffffff8111828210171561116d57fe5b604052919050565b600067ffffffffffffffff82111561118957fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b838110156111d05781810151838201526020016111b8565b838111156111df576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461120757600080fd5b5056fea164736f6c6343000706000a","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x12E5 CODESIZE SUB DUP1 PUSH2 0x12E5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x69 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH2 0x9B JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7B JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x84 DUP4 PUSH2 0x4D JUMP JUMPDEST SWAP2 POP PUSH2 0x92 PUSH1 0x20 DUP5 ADD PUSH2 0x4D JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x1217 PUSH2 0xCE PUSH1 0x0 CODECOPY DUP1 PUSH2 0x44D MSTORE POP DUP1 PUSH2 0x147 MSTORE DUP1 PUSH2 0x471 MSTORE DUP1 PUSH2 0x6EB MSTORE POP PUSH2 0x1217 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90793EA8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x90793EA8 EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0xE8 JUMPI DUP1 PUSH4 0xCDCA1753 EQ PUSH2 0xF0 JUMPI DUP1 PUSH4 0xF7729D43 EQ PUSH2 0x103 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x11C17848 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2F80BB1D EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0x30D07F21 EQ PUSH2 0xC0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0xF04 JUMP JUMPDEST PUSH2 0x116 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAA PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0xE9E JUMP JUMPDEST PUSH2 0x221 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB7 SWAP2 SWAP1 PUSH2 0x1148 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xAA PUSH2 0xCE CALLDATASIZE PUSH1 0x4 PUSH2 0xE30 JUMP JUMPDEST PUSH2 0x286 JUMP JUMPDEST PUSH2 0xDB PUSH2 0x44B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB7 SWAP2 SWAP1 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0xDB PUSH2 0x46F JUMP JUMPDEST PUSH2 0xAA PUSH2 0xFE CALLDATASIZE PUSH1 0x4 PUSH2 0xE9E JUMP JUMPDEST PUSH2 0x493 JUMP JUMPDEST PUSH2 0xAA PUSH2 0x111 CALLDATASIZE PUSH1 0x4 PUSH2 0xE30 JUMP JUMPDEST PUSH2 0x4E1 JUMP JUMPDEST PUSH1 0x0 DUP4 SGT DUP1 PUSH2 0x125 JUMPI POP PUSH1 0x0 DUP3 SGT JUMPDEST PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x13C DUP5 PUSH2 0x660 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x16E PUSH32 0x0 DUP5 DUP5 DUP5 PUSH2 0x691 JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP10 SGT PUSH2 0x1B4 JUMPI DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT DUP9 DUP11 PUSH1 0x0 SUB PUSH2 0x1E9 JUMP JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT DUP10 DUP10 PUSH1 0x0 SUB JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP3 ISZERO PUSH2 0x200 JUMPI PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 REVERT JUMPDEST PUSH1 0x0 SLOAD ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 SLOAD DUP2 EQ PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 REVERT JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x0 PUSH2 0x22F DUP5 PUSH2 0x6A7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x23F DUP8 PUSH2 0x660 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x253 DUP3 DUP5 DUP4 DUP10 PUSH1 0x0 PUSH2 0x286 JUMP JUMPDEST SWAP6 POP DUP4 ISZERO PUSH2 0x26B JUMPI PUSH2 0x264 DUP8 PUSH2 0x6AF JUMP JUMPDEST SWAP7 POP PUSH2 0x277 JUMP JUMPDEST DUP6 SWAP5 POP POP POP POP POP PUSH2 0x280 JUMP JUMPDEST POP POP POP POP PUSH2 0x224 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND DUP8 DUP3 AND LT SWAP1 DUP4 AND PUSH2 0x2B1 JUMPI PUSH1 0x0 DUP5 SWAP1 SSTORE JUMPDEST PUSH2 0x2BC DUP8 DUP8 DUP8 PUSH2 0x6E4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 ADDRESS DUP4 PUSH2 0x2E2 DUP9 PUSH2 0x722 JUMP JUMPDEST PUSH1 0x0 SUB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND ISZERO PUSH2 0x307 JUMPI DUP8 PUSH2 0x32D JUMP JUMPDEST DUP6 PUSH2 0x326 JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x32D JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP12 DUP12 DUP15 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x342 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x101E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x371 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x10A5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x3D8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x3D5 SWAP2 DUP2 ADD SWAP1 PUSH2 0xEE1 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x43E JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x406 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x40B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 SSTORE JUMPDEST PUSH2 0x435 DUP2 PUSH2 0x754 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x442 JUMP JUMPDEST POP POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x0 PUSH2 0x4A1 DUP5 PUSH2 0x6A7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4B1 DUP8 PUSH2 0x660 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x4C5 DUP4 DUP4 DUP4 DUP10 PUSH1 0x0 PUSH2 0x4E1 JUMP JUMPDEST SWAP6 POP DUP4 ISZERO PUSH2 0x26B JUMPI PUSH2 0x4D6 DUP8 PUSH2 0x6AF JUMP JUMPDEST SWAP7 POP POP POP POP POP PUSH2 0x496 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND SWAP1 DUP8 AND LT PUSH2 0x50A DUP8 DUP8 DUP8 PUSH2 0x6E4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 ADDRESS DUP4 PUSH2 0x530 DUP9 PUSH2 0x722 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND ISZERO PUSH2 0x552 JUMPI DUP8 PUSH2 0x578 JUMP JUMPDEST DUP6 PUSH2 0x571 JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x578 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP13 DUP12 DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x58D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x101E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BC SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x10A5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x623 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x620 SWAP2 DUP2 ADD SWAP1 PUSH2 0xEE1 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x43E JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x651 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x656 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH2 0x435 DUP2 PUSH2 0x754 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x66E DUP5 DUP3 PUSH2 0x805 JUMP JUMPDEST SWAP3 POP PUSH2 0x67B DUP5 PUSH1 0x14 PUSH2 0x905 JUMP JUMPDEST SWAP1 POP PUSH2 0x688 DUP5 PUSH1 0x17 PUSH2 0x805 JUMP JUMPDEST SWAP2 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x442 DUP6 PUSH2 0x6A2 DUP7 DUP7 DUP7 PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0xA72 JUMP JUMPDEST MLOAD PUSH1 0x42 GT ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x280 SWAP1 DUP4 SWAP1 PUSH1 0x17 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x71A PUSH32 0x0 PUSH2 0x715 DUP7 DUP7 DUP7 PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0xC89 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 LT PUSH2 0x750 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x20 EQ PUSH2 0x7F1 JUMPI PUSH1 0x44 DUP3 MLOAD LT ISZERO PUSH2 0x7A4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x79B SWAP1 PUSH2 0x1111 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x7BE SWAP2 SWAP1 PUSH2 0xF52 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x79B SWAP2 SWAP1 PUSH2 0x10F7 JUMP JUMPDEST DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x280 SWAP2 SWAP1 PUSH2 0xFBC JUMP JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x14 ADD LT ISZERO PUSH2 0x879 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F416464726573735F6F766572666C6F770000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x14 ADD DUP4 MLOAD LT ISZERO PUSH2 0x8EC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F416464726573735F6F75744F66426F756E64730000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH13 0x1000000000000000000000000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x3 ADD LT ISZERO PUSH2 0x979 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F55696E7432345F6F766572666C6F77000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 ADD DUP4 MLOAD LT ISZERO PUSH2 0x9EC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F55696E7432345F6F75744F66426F756E6473000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x3 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x9FD PUSH2 0xDBF JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0xA35 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH3 0xFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA7E DUP4 DUP4 PUSH2 0xC89 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 DUP3 PUSH1 0x1F ADD LT ISZERO PUSH2 0xB16 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F766572666C6F77000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 DUP5 ADD LT ISZERO PUSH2 0xB87 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F766572666C6F77000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 ADD DUP5 MLOAD LT ISZERO PUSH2 0xBF9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F75744F66426F756E6473000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO DUP1 ISZERO PUSH2 0xC18 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x0 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xC80 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F DUP5 AND DUP1 ISZERO PUSH1 0x20 MUL DUP2 DUP5 ADD ADD DUP6 DUP2 ADD DUP8 DUP4 ISZERO PUSH1 0x20 MUL DUP5 DUP12 ADD ADD ADD JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0xC51 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0xC39 JUMP JUMPDEST POP POP DUP6 DUP5 MSTORE PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x40 MSTORE POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0xCCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 DUP6 ADD MSTORE SWAP4 SWAP1 SWAP2 AND DUP4 DUP6 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x80 DUP5 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 PUSH1 0xD5 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xF5 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xDEF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xE02 PUSH2 0xDFD DUP3 PUSH2 0x1175 JUMP JUMPDEST PUSH2 0x1151 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xE16 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xE47 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xE52 DUP2 PUSH2 0x11E5 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0xE62 DUP2 PUSH2 0x11E5 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE79 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0xE90 DUP2 PUSH2 0x11E5 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEB0 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xEC6 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xED2 DUP6 DUP3 DUP7 ADD PUSH2 0xDDF JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEF3 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xF18 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF3C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xF48 DUP7 DUP3 DUP8 ADD PUSH2 0xDDF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF63 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF79 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0xF89 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0xF97 PUSH2 0xDFD DUP3 PUSH2 0x1175 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0xFAB JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x442 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x11B5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFCD JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xFEC DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x11B5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SWAP4 DUP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0xE8 SWAP4 SWAP1 SWAP4 SHL PUSH32 0xFFFFFF0000000000000000000000000000000000000000000000000000000000 AND PUSH1 0x14 DUP3 ADD MSTORE SWAP3 SHL AND PUSH1 0x17 DUP3 ADD MSTORE PUSH1 0x2B ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND DUP4 MSTORE DUP7 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE DUP6 PUSH1 0x40 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x60 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x10EC PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0xFD4 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x110A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xFD4 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x556E6578706563746564206572726F7200000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x116D JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1189 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11D0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11B8 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x11DF JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"1103:5629:76:-:0;;;1376:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;520:18:50;;;;;;;;548:12;;;;;1103:5629:76;;14:179:115;95:13;;-1:-1:-1;;;;;137:31:115;;127:42;;117:2;;183:1;180;173:12;117:2;76:117;;;:::o;198:307::-;;;338:2;326:9;317:7;313:23;309:32;306:2;;;359:6;351;344:22;306:2;387:42;419:9;387:42;:::i;:::-;377:52;;448:51;495:2;484:9;480:18;448:51;:::i;:::-;438:61;;296:209;;;;;:::o;:::-;1103:5629:76;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6675:115","statements":[{"nodeType":"YulBlock","src":"6:3:115","statements":[]},{"body":{"nodeType":"YulBlock","src":"68:431:115","statements":[{"body":{"nodeType":"YulBlock","src":"117:24:115","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"126:5:115"},{"name":"array","nodeType":"YulIdentifier","src":"133:5:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"119:6:115"},"nodeType":"YulFunctionCall","src":"119:20:115"},"nodeType":"YulExpressionStatement","src":"119:20:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"96:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"104:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"92:3:115"},"nodeType":"YulFunctionCall","src":"92:17:115"},{"name":"end","nodeType":"YulIdentifier","src":"111:3:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"88:3:115"},"nodeType":"YulFunctionCall","src":"88:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"81:6:115"},"nodeType":"YulFunctionCall","src":"81:35:115"},"nodeType":"YulIf","src":"78:2:115"},{"nodeType":"YulVariableDeclaration","src":"150:30:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"173:6:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"160:12:115"},"nodeType":"YulFunctionCall","src":"160:20:115"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"154:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"189:64:115","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"249:2:115"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"219:29:115"},"nodeType":"YulFunctionCall","src":"219:33:115"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"204:14:115"},"nodeType":"YulFunctionCall","src":"204:49:115"},"variables":[{"name":"array_1","nodeType":"YulTypedName","src":"193:7:115","type":""}]},{"expression":{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"269:7:115"},{"name":"_1","nodeType":"YulIdentifier","src":"278:2:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"262:6:115"},"nodeType":"YulFunctionCall","src":"262:19:115"},"nodeType":"YulExpressionStatement","src":"262:19:115"},{"body":{"nodeType":"YulBlock","src":"329:24:115","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"338:5:115"},{"name":"array","nodeType":"YulIdentifier","src":"345:5:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"331:6:115"},"nodeType":"YulFunctionCall","src":"331:20:115"},"nodeType":"YulExpressionStatement","src":"331:20:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"304:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"312:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"300:3:115"},"nodeType":"YulFunctionCall","src":"300:15:115"},{"kind":"number","nodeType":"YulLiteral","src":"317:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"296:3:115"},"nodeType":"YulFunctionCall","src":"296:26:115"},{"name":"end","nodeType":"YulIdentifier","src":"324:3:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"293:2:115"},"nodeType":"YulFunctionCall","src":"293:35:115"},"nodeType":"YulIf","src":"290:2:115"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"379:7:115"},{"kind":"number","nodeType":"YulLiteral","src":"388:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"375:3:115"},"nodeType":"YulFunctionCall","src":"375:18:115"},{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"399:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"407:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"395:3:115"},"nodeType":"YulFunctionCall","src":"395:17:115"},{"name":"_1","nodeType":"YulIdentifier","src":"414:2:115"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"362:12:115"},"nodeType":"YulFunctionCall","src":"362:55:115"},"nodeType":"YulExpressionStatement","src":"362:55:115"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"441:7:115"},{"name":"_1","nodeType":"YulIdentifier","src":"450:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"437:3:115"},"nodeType":"YulFunctionCall","src":"437:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"455:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"433:3:115"},"nodeType":"YulFunctionCall","src":"433:27:115"},{"name":"array","nodeType":"YulIdentifier","src":"462:5:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"426:6:115"},"nodeType":"YulFunctionCall","src":"426:42:115"},"nodeType":"YulExpressionStatement","src":"426:42:115"},{"nodeType":"YulAssignment","src":"477:16:115","value":{"name":"array_1","nodeType":"YulIdentifier","src":"486:7:115"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"477:5:115"}]}]},"name":"abi_decode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"42:6:115","type":""},{"name":"end","nodeType":"YulTypedName","src":"50:3:115","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"58:5:115","type":""}],"src":"14:485:115"},{"body":{"nodeType":"YulBlock","src":"641:658:115","statements":[{"body":{"nodeType":"YulBlock","src":"688:26:115","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"697:6:115"},{"name":"value4","nodeType":"YulIdentifier","src":"705:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"690:6:115"},"nodeType":"YulFunctionCall","src":"690:22:115"},"nodeType":"YulExpressionStatement","src":"690:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"662:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"671:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"658:3:115"},"nodeType":"YulFunctionCall","src":"658:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"683:3:115","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"654:3:115"},"nodeType":"YulFunctionCall","src":"654:33:115"},"nodeType":"YulIf","src":"651:2:115"},{"nodeType":"YulVariableDeclaration","src":"723:36:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"749:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"736:12:115"},"nodeType":"YulFunctionCall","src":"736:23:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"727:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"795:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"768:26:115"},"nodeType":"YulFunctionCall","src":"768:33:115"},"nodeType":"YulExpressionStatement","src":"768:33:115"},{"nodeType":"YulAssignment","src":"810:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"820:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"810:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"834:47:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"866:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"877:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"862:3:115"},"nodeType":"YulFunctionCall","src":"862:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"849:12:115"},"nodeType":"YulFunctionCall","src":"849:32:115"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"838:7:115","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"917:7:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"890:26:115"},"nodeType":"YulFunctionCall","src":"890:35:115"},"nodeType":"YulExpressionStatement","src":"890:35:115"},{"nodeType":"YulAssignment","src":"934:17:115","value":{"name":"value_1","nodeType":"YulIdentifier","src":"944:7:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"934:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"960:47:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"992:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1003:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"988:3:115"},"nodeType":"YulFunctionCall","src":"988:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"975:12:115"},"nodeType":"YulFunctionCall","src":"975:32:115"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"964:7:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"1063:26:115","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1072:6:115"},{"name":"value4","nodeType":"YulIdentifier","src":"1080:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1065:6:115"},"nodeType":"YulFunctionCall","src":"1065:22:115"},"nodeType":"YulExpressionStatement","src":"1065:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"1029:7:115"},{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"1042:7:115"},{"kind":"number","nodeType":"YulLiteral","src":"1051:8:115","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1038:3:115"},"nodeType":"YulFunctionCall","src":"1038:22:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1026:2:115"},"nodeType":"YulFunctionCall","src":"1026:35:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1019:6:115"},"nodeType":"YulFunctionCall","src":"1019:43:115"},"nodeType":"YulIf","src":"1016:2:115"},{"nodeType":"YulAssignment","src":"1098:17:115","value":{"name":"value_2","nodeType":"YulIdentifier","src":"1108:7:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1098:6:115"}]},{"nodeType":"YulAssignment","src":"1124:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1151:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1162:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1147:3:115"},"nodeType":"YulFunctionCall","src":"1147:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1134:12:115"},"nodeType":"YulFunctionCall","src":"1134:32:115"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1124:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"1175:48:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1207:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1218:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1203:3:115"},"nodeType":"YulFunctionCall","src":"1203:19:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1190:12:115"},"nodeType":"YulFunctionCall","src":"1190:33:115"},"variables":[{"name":"value_3","nodeType":"YulTypedName","src":"1179:7:115","type":""}]},{"expression":{"arguments":[{"name":"value_3","nodeType":"YulIdentifier","src":"1259:7:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1232:26:115"},"nodeType":"YulFunctionCall","src":"1232:35:115"},"nodeType":"YulExpressionStatement","src":"1232:35:115"},{"nodeType":"YulAssignment","src":"1276:17:115","value":{"name":"value_3","nodeType":"YulIdentifier","src":"1286:7:115"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"1276:6:115"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint24t_uint256t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"575:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"586:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"598:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"606:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"614:6:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"622:6:115","type":""},{"name":"value4","nodeType":"YulTypedName","src":"630:6:115","type":""}],"src":"504:795:115"},{"body":{"nodeType":"YulBlock","src":"1400:314:115","statements":[{"body":{"nodeType":"YulBlock","src":"1446:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1455:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"1463:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1448:6:115"},"nodeType":"YulFunctionCall","src":"1448:22:115"},"nodeType":"YulExpressionStatement","src":"1448:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1421:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"1430:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1417:3:115"},"nodeType":"YulFunctionCall","src":"1417:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"1442:2:115","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1413:3:115"},"nodeType":"YulFunctionCall","src":"1413:32:115"},"nodeType":"YulIf","src":"1410:2:115"},{"nodeType":"YulVariableDeclaration","src":"1481:37:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1508:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1495:12:115"},"nodeType":"YulFunctionCall","src":"1495:23:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1485:6:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"1561:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1570:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"1578:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1563:6:115"},"nodeType":"YulFunctionCall","src":"1563:22:115"},"nodeType":"YulExpressionStatement","src":"1563:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1533:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"1541:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1530:2:115"},"nodeType":"YulFunctionCall","src":"1530:30:115"},"nodeType":"YulIf","src":"1527:2:115"},{"nodeType":"YulAssignment","src":"1596:61:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1629:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"1640:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1625:3:115"},"nodeType":"YulFunctionCall","src":"1625:22:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1649:7:115"}],"functionName":{"name":"abi_decode_t_bytes","nodeType":"YulIdentifier","src":"1606:18:115"},"nodeType":"YulFunctionCall","src":"1606:51:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1596:6:115"}]},{"nodeType":"YulAssignment","src":"1666:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1693:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1704:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1689:3:115"},"nodeType":"YulFunctionCall","src":"1689:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1676:12:115"},"nodeType":"YulFunctionCall","src":"1676:32:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1666:6:115"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptrt_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1358:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1369:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1381:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1389:6:115","type":""}],"src":"1304:410:115"},{"body":{"nodeType":"YulBlock","src":"1815:157:115","statements":[{"body":{"nodeType":"YulBlock","src":"1861:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1870:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"1878:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1863:6:115"},"nodeType":"YulFunctionCall","src":"1863:22:115"},"nodeType":"YulExpressionStatement","src":"1863:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1836:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"1845:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1832:3:115"},"nodeType":"YulFunctionCall","src":"1832:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"1857:2:115","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1828:3:115"},"nodeType":"YulFunctionCall","src":"1828:32:115"},"nodeType":"YulIf","src":"1825:2:115"},{"nodeType":"YulAssignment","src":"1896:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1912:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1906:5:115"},"nodeType":"YulFunctionCall","src":"1906:16:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1896:6:115"}]},{"nodeType":"YulAssignment","src":"1931:35:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1951:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1962:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1947:3:115"},"nodeType":"YulFunctionCall","src":"1947:18:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1941:5:115"},"nodeType":"YulFunctionCall","src":"1941:25:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1931:6:115"}]}]},"name":"abi_decode_tuple_t_int256t_int256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1773:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1784:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1796:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1804:6:115","type":""}],"src":"1719:253:115"},{"body":{"nodeType":"YulBlock","src":"2088:365:115","statements":[{"body":{"nodeType":"YulBlock","src":"2134:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2143:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2151:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2136:6:115"},"nodeType":"YulFunctionCall","src":"2136:22:115"},"nodeType":"YulExpressionStatement","src":"2136:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2109:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"2118:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2105:3:115"},"nodeType":"YulFunctionCall","src":"2105:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"2130:2:115","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2101:3:115"},"nodeType":"YulFunctionCall","src":"2101:32:115"},"nodeType":"YulIf","src":"2098:2:115"},{"nodeType":"YulAssignment","src":"2169:33:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2192:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2179:12:115"},"nodeType":"YulFunctionCall","src":"2179:23:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2169:6:115"}]},{"nodeType":"YulAssignment","src":"2211:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2238:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2249:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2234:3:115"},"nodeType":"YulFunctionCall","src":"2234:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2221:12:115"},"nodeType":"YulFunctionCall","src":"2221:32:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2211:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"2262:46:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2293:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2304:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2289:3:115"},"nodeType":"YulFunctionCall","src":"2289:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2276:12:115"},"nodeType":"YulFunctionCall","src":"2276:32:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2266:6:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"2351:26:115","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"2360:6:115"},{"name":"value2","nodeType":"YulIdentifier","src":"2368:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2353:6:115"},"nodeType":"YulFunctionCall","src":"2353:22:115"},"nodeType":"YulExpressionStatement","src":"2353:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2323:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"2331:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2320:2:115"},"nodeType":"YulFunctionCall","src":"2320:30:115"},"nodeType":"YulIf","src":"2317:2:115"},{"nodeType":"YulAssignment","src":"2386:61:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2419:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"2430:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2415:3:115"},"nodeType":"YulFunctionCall","src":"2415:22:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2439:7:115"}],"functionName":{"name":"abi_decode_t_bytes","nodeType":"YulIdentifier","src":"2396:18:115"},"nodeType":"YulFunctionCall","src":"2396:51:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2386:6:115"}]}]},"name":"abi_decode_tuple_t_int256t_int256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2038:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2049:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2061:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2069:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2077:6:115","type":""}],"src":"1977:476:115"},{"body":{"nodeType":"YulBlock","src":"2549:585:115","statements":[{"body":{"nodeType":"YulBlock","src":"2595:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2604:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2612:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2597:6:115"},"nodeType":"YulFunctionCall","src":"2597:22:115"},"nodeType":"YulExpressionStatement","src":"2597:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2570:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"2579:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2566:3:115"},"nodeType":"YulFunctionCall","src":"2566:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"2591:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2562:3:115"},"nodeType":"YulFunctionCall","src":"2562:32:115"},"nodeType":"YulIf","src":"2559:2:115"},{"nodeType":"YulVariableDeclaration","src":"2630:30:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2650:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2644:5:115"},"nodeType":"YulFunctionCall","src":"2644:16:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2634:6:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"2703:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2712:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2720:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2705:6:115"},"nodeType":"YulFunctionCall","src":"2705:22:115"},"nodeType":"YulExpressionStatement","src":"2705:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2675:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"2683:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2672:2:115"},"nodeType":"YulFunctionCall","src":"2672:30:115"},"nodeType":"YulIf","src":"2669:2:115"},{"nodeType":"YulVariableDeclaration","src":"2738:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2752:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"2763:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2748:3:115"},"nodeType":"YulFunctionCall","src":"2748:22:115"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2742:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"2818:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2827:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2835:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2820:6:115"},"nodeType":"YulFunctionCall","src":"2820:22:115"},"nodeType":"YulExpressionStatement","src":"2820:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2797:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"2801:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2793:3:115"},"nodeType":"YulFunctionCall","src":"2793:13:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2808:7:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2789:3:115"},"nodeType":"YulFunctionCall","src":"2789:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2782:6:115"},"nodeType":"YulFunctionCall","src":"2782:35:115"},"nodeType":"YulIf","src":"2779:2:115"},{"nodeType":"YulVariableDeclaration","src":"2853:19:115","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2869:2:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2863:5:115"},"nodeType":"YulFunctionCall","src":"2863:9:115"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2857:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2881:62:115","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2939:2:115"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"2909:29:115"},"nodeType":"YulFunctionCall","src":"2909:33:115"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"2894:14:115"},"nodeType":"YulFunctionCall","src":"2894:49:115"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"2885:5:115","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2959:5:115"},{"name":"_2","nodeType":"YulIdentifier","src":"2966:2:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2952:6:115"},"nodeType":"YulFunctionCall","src":"2952:17:115"},"nodeType":"YulExpressionStatement","src":"2952:17:115"},{"body":{"nodeType":"YulBlock","src":"3015:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3024:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3032:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3017:6:115"},"nodeType":"YulFunctionCall","src":"3017:22:115"},"nodeType":"YulExpressionStatement","src":"3017:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2992:2:115"},{"name":"_2","nodeType":"YulIdentifier","src":"2996:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2988:3:115"},"nodeType":"YulFunctionCall","src":"2988:11:115"},{"kind":"number","nodeType":"YulLiteral","src":"3001:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2984:3:115"},"nodeType":"YulFunctionCall","src":"2984:20:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3006:7:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2981:2:115"},"nodeType":"YulFunctionCall","src":"2981:33:115"},"nodeType":"YulIf","src":"2978:2:115"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3076:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"3080:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3072:3:115"},"nodeType":"YulFunctionCall","src":"3072:11:115"},{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3089:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"3096:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3085:3:115"},"nodeType":"YulFunctionCall","src":"3085:14:115"},{"name":"_2","nodeType":"YulIdentifier","src":"3101:2:115"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"3050:21:115"},"nodeType":"YulFunctionCall","src":"3050:54:115"},"nodeType":"YulExpressionStatement","src":"3050:54:115"},{"nodeType":"YulAssignment","src":"3113:15:115","value":{"name":"array","nodeType":"YulIdentifier","src":"3123:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3113:6:115"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2515:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2526:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2538:6:115","type":""}],"src":"2458:676:115"},{"body":{"nodeType":"YulBlock","src":"3220:113:115","statements":[{"body":{"nodeType":"YulBlock","src":"3266:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3275:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3283:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3268:6:115"},"nodeType":"YulFunctionCall","src":"3268:22:115"},"nodeType":"YulExpressionStatement","src":"3268:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3241:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"3250:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3237:3:115"},"nodeType":"YulFunctionCall","src":"3237:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"3262:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3233:3:115"},"nodeType":"YulFunctionCall","src":"3233:32:115"},"nodeType":"YulIf","src":"3230:2:115"},{"nodeType":"YulAssignment","src":"3301:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3317:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3311:5:115"},"nodeType":"YulFunctionCall","src":"3311:16:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3301:6:115"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3186:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3197:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3209:6:115","type":""}],"src":"3139:194:115"},{"body":{"nodeType":"YulBlock","src":"3389:267:115","statements":[{"nodeType":"YulVariableDeclaration","src":"3399:26:115","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3419:5:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3413:5:115"},"nodeType":"YulFunctionCall","src":"3413:12:115"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3403:6:115","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3441:3:115"},{"name":"length","nodeType":"YulIdentifier","src":"3446:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3434:6:115"},"nodeType":"YulFunctionCall","src":"3434:19:115"},"nodeType":"YulExpressionStatement","src":"3434:19:115"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3488:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"3495:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3484:3:115"},"nodeType":"YulFunctionCall","src":"3484:16:115"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3506:3:115"},{"kind":"number","nodeType":"YulLiteral","src":"3511:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3502:3:115"},"nodeType":"YulFunctionCall","src":"3502:14:115"},{"name":"length","nodeType":"YulIdentifier","src":"3518:6:115"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"3462:21:115"},"nodeType":"YulFunctionCall","src":"3462:63:115"},"nodeType":"YulExpressionStatement","src":"3462:63:115"},{"nodeType":"YulAssignment","src":"3534:116:115","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3549:3:115"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3562:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"3570:2:115","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3558:3:115"},"nodeType":"YulFunctionCall","src":"3558:15:115"},{"kind":"number","nodeType":"YulLiteral","src":"3575:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3554:3:115"},"nodeType":"YulFunctionCall","src":"3554:88:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3545:3:115"},"nodeType":"YulFunctionCall","src":"3545:98:115"},{"kind":"number","nodeType":"YulLiteral","src":"3645:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3541:3:115"},"nodeType":"YulFunctionCall","src":"3541:109:115"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3534:3:115"}]}]},"name":"abi_encode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3366:5:115","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3373:3:115","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3381:3:115","type":""}],"src":"3338:318:115"},{"body":{"nodeType":"YulBlock","src":"3834:341:115","statements":[{"nodeType":"YulVariableDeclaration","src":"3844:76:115","value":{"kind":"number","nodeType":"YulLiteral","src":"3854:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3848:2:115","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3936:3:115"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3949:2:115","type":"","value":"96"},{"name":"value0","nodeType":"YulIdentifier","src":"3953:6:115"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3945:3:115"},"nodeType":"YulFunctionCall","src":"3945:15:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3962:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3941:3:115"},"nodeType":"YulFunctionCall","src":"3941:24:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3929:6:115"},"nodeType":"YulFunctionCall","src":"3929:37:115"},"nodeType":"YulExpressionStatement","src":"3929:37:115"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3986:3:115"},{"kind":"number","nodeType":"YulLiteral","src":"3991:2:115","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3982:3:115"},"nodeType":"YulFunctionCall","src":"3982:12:115"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4004:3:115","type":"","value":"232"},{"name":"value1","nodeType":"YulIdentifier","src":"4009:6:115"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4000:3:115"},"nodeType":"YulFunctionCall","src":"4000:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"4018:66:115","type":"","value":"0xffffff0000000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3996:3:115"},"nodeType":"YulFunctionCall","src":"3996:89:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3975:6:115"},"nodeType":"YulFunctionCall","src":"3975:111:115"},"nodeType":"YulExpressionStatement","src":"3975:111:115"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4106:3:115"},{"kind":"number","nodeType":"YulLiteral","src":"4111:2:115","type":"","value":"23"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4102:3:115"},"nodeType":"YulFunctionCall","src":"4102:12:115"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4124:2:115","type":"","value":"96"},{"name":"value2","nodeType":"YulIdentifier","src":"4128:6:115"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4120:3:115"},"nodeType":"YulFunctionCall","src":"4120:15:115"},{"name":"_1","nodeType":"YulIdentifier","src":"4137:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4116:3:115"},"nodeType":"YulFunctionCall","src":"4116:24:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4095:6:115"},"nodeType":"YulFunctionCall","src":"4095:46:115"},"nodeType":"YulExpressionStatement","src":"4095:46:115"},{"nodeType":"YulAssignment","src":"4150:19:115","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4161:3:115"},{"kind":"number","nodeType":"YulLiteral","src":"4166:2:115","type":"","value":"43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4157:3:115"},"nodeType":"YulFunctionCall","src":"4157:12:115"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4150:3:115"}]}]},"name":"abi_encode_tuple_packed_t_address_t_uint24_t_address__to_t_address_t_uint24_t_address__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3794:3:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3799:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3807:6:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3815:6:115","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3826:3:115","type":""}],"src":"3661:514:115"},{"body":{"nodeType":"YulBlock","src":"4281:125:115","statements":[{"nodeType":"YulAssignment","src":"4291:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4303:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4314:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4299:3:115"},"nodeType":"YulFunctionCall","src":"4299:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4291:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4333:9:115"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4348:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"4356:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4344:3:115"},"nodeType":"YulFunctionCall","src":"4344:55:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4326:6:115"},"nodeType":"YulFunctionCall","src":"4326:74:115"},"nodeType":"YulExpressionStatement","src":"4326:74:115"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4250:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4261:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4272:4:115","type":""}],"src":"4180:226:115"},{"body":{"nodeType":"YulBlock","src":"4634:370:115","statements":[{"nodeType":"YulVariableDeclaration","src":"4644:52:115","value":{"kind":"number","nodeType":"YulLiteral","src":"4654:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4648:2:115","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4712:9:115"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4727:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"4735:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4723:3:115"},"nodeType":"YulFunctionCall","src":"4723:15:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4705:6:115"},"nodeType":"YulFunctionCall","src":"4705:34:115"},"nodeType":"YulExpressionStatement","src":"4705:34:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4759:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4770:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4755:3:115"},"nodeType":"YulFunctionCall","src":"4755:18:115"},{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"4789:6:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4782:6:115"},"nodeType":"YulFunctionCall","src":"4782:14:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4775:6:115"},"nodeType":"YulFunctionCall","src":"4775:22:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4748:6:115"},"nodeType":"YulFunctionCall","src":"4748:50:115"},"nodeType":"YulExpressionStatement","src":"4748:50:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4818:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4829:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4814:3:115"},"nodeType":"YulFunctionCall","src":"4814:18:115"},{"name":"value2","nodeType":"YulIdentifier","src":"4834:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4807:6:115"},"nodeType":"YulFunctionCall","src":"4807:34:115"},"nodeType":"YulExpressionStatement","src":"4807:34:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4861:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4872:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4857:3:115"},"nodeType":"YulFunctionCall","src":"4857:18:115"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"4881:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"4889:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4877:3:115"},"nodeType":"YulFunctionCall","src":"4877:15:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4850:6:115"},"nodeType":"YulFunctionCall","src":"4850:43:115"},"nodeType":"YulExpressionStatement","src":"4850:43:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4913:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4924:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4909:3:115"},"nodeType":"YulFunctionCall","src":"4909:19:115"},{"kind":"number","nodeType":"YulLiteral","src":"4930:3:115","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4902:6:115"},"nodeType":"YulFunctionCall","src":"4902:32:115"},"nodeType":"YulExpressionStatement","src":"4902:32:115"},{"nodeType":"YulAssignment","src":"4943:55:115","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"4970:6:115"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4982:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4993:3:115","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4978:3:115"},"nodeType":"YulFunctionCall","src":"4978:19:115"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"4951:18:115"},"nodeType":"YulFunctionCall","src":"4951:47:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4943:4:115"}]}]},"name":"abi_encode_tuple_t_address_t_bool_t_int256_t_uint160_t_bytes_memory_ptr__to_t_address_t_bool_t_int256_t_uint160_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4571:9:115","type":""},{"name":"value4","nodeType":"YulTypedName","src":"4582:6:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4590:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4598:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4606:6:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4614:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4625:4:115","type":""}],"src":"4411:593:115"},{"body":{"nodeType":"YulBlock","src":"5130:100:115","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5147:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5158:2:115","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5140:6:115"},"nodeType":"YulFunctionCall","src":"5140:21:115"},"nodeType":"YulExpressionStatement","src":"5140:21:115"},{"nodeType":"YulAssignment","src":"5170:54:115","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5197:6:115"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5209:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5220:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5205:3:115"},"nodeType":"YulFunctionCall","src":"5205:18:115"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"5178:18:115"},"nodeType":"YulFunctionCall","src":"5178:46:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5170:4:115"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5099:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5110:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5121:4:115","type":""}],"src":"5009:221:115"},{"body":{"nodeType":"YulBlock","src":"5409:166:115","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5426:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5437:2:115","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5419:6:115"},"nodeType":"YulFunctionCall","src":"5419:21:115"},"nodeType":"YulExpressionStatement","src":"5419:21:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5460:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5471:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5456:3:115"},"nodeType":"YulFunctionCall","src":"5456:18:115"},{"kind":"number","nodeType":"YulLiteral","src":"5476:2:115","type":"","value":"16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5449:6:115"},"nodeType":"YulFunctionCall","src":"5449:30:115"},"nodeType":"YulExpressionStatement","src":"5449:30:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5499:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5510:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5495:3:115"},"nodeType":"YulFunctionCall","src":"5495:18:115"},{"kind":"string","nodeType":"YulLiteral","src":"5515:18:115","type":"","value":"Unexpected error"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5488:6:115"},"nodeType":"YulFunctionCall","src":"5488:46:115"},"nodeType":"YulExpressionStatement","src":"5488:46:115"},{"nodeType":"YulAssignment","src":"5543:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5555:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5566:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5551:3:115"},"nodeType":"YulFunctionCall","src":"5551:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5543:4:115"}]}]},"name":"abi_encode_tuple_t_stringliteral_9b951eb3fb3742579e39d15610bb1800acf108358e69a1cabf56fc48cbe86cff__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5386:9:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5400:4:115","type":""}],"src":"5235:340:115"},{"body":{"nodeType":"YulBlock","src":"5681:76:115","statements":[{"nodeType":"YulAssignment","src":"5691:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5703:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5714:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5699:3:115"},"nodeType":"YulFunctionCall","src":"5699:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5691:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5733:9:115"},{"name":"value0","nodeType":"YulIdentifier","src":"5744:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5726:6:115"},"nodeType":"YulFunctionCall","src":"5726:25:115"},"nodeType":"YulExpressionStatement","src":"5726:25:115"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5650:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5661:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5672:4:115","type":""}],"src":"5580:177:115"},{"body":{"nodeType":"YulBlock","src":"5806:198:115","statements":[{"nodeType":"YulAssignment","src":"5816:19:115","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5832:2:115","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5826:5:115"},"nodeType":"YulFunctionCall","src":"5826:9:115"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5816:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"5844:35:115","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5866:6:115"},{"name":"size","nodeType":"YulIdentifier","src":"5874:4:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5862:3:115"},"nodeType":"YulFunctionCall","src":"5862:17:115"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"5848:10:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"5954:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"5956:7:115"},"nodeType":"YulFunctionCall","src":"5956:9:115"},"nodeType":"YulExpressionStatement","src":"5956:9:115"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5897:10:115"},{"kind":"number","nodeType":"YulLiteral","src":"5909:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5894:2:115"},"nodeType":"YulFunctionCall","src":"5894:34:115"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5933:10:115"},{"name":"memPtr","nodeType":"YulIdentifier","src":"5945:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5930:2:115"},"nodeType":"YulFunctionCall","src":"5930:22:115"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5891:2:115"},"nodeType":"YulFunctionCall","src":"5891:62:115"},"nodeType":"YulIf","src":"5888:2:115"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5983:2:115","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5987:10:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5976:6:115"},"nodeType":"YulFunctionCall","src":"5976:22:115"},"nodeType":"YulExpressionStatement","src":"5976:22:115"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"5786:4:115","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"5795:6:115","type":""}],"src":"5762:242:115"},{"body":{"nodeType":"YulBlock","src":"6068:181:115","statements":[{"body":{"nodeType":"YulBlock","src":"6112:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"6114:7:115"},"nodeType":"YulFunctionCall","src":"6114:9:115"},"nodeType":"YulExpressionStatement","src":"6114:9:115"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6084:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6092:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6081:2:115"},"nodeType":"YulFunctionCall","src":"6081:30:115"},"nodeType":"YulIf","src":"6078:2:115"},{"nodeType":"YulAssignment","src":"6134:109:115","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6154:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6162:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6150:3:115"},"nodeType":"YulFunctionCall","src":"6150:17:115"},{"kind":"number","nodeType":"YulLiteral","src":"6169:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6146:3:115"},"nodeType":"YulFunctionCall","src":"6146:90:115"},{"kind":"number","nodeType":"YulLiteral","src":"6238:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6142:3:115"},"nodeType":"YulFunctionCall","src":"6142:101:115"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"6134:4:115"}]}]},"name":"array_allocation_size_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"6048:6:115","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"6059:4:115","type":""}],"src":"6009:240:115"},{"body":{"nodeType":"YulBlock","src":"6307:205:115","statements":[{"nodeType":"YulVariableDeclaration","src":"6317:10:115","value":{"kind":"number","nodeType":"YulLiteral","src":"6326:1:115","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6321:1:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"6386:63:115","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6411:3:115"},{"name":"i","nodeType":"YulIdentifier","src":"6416:1:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6407:3:115"},"nodeType":"YulFunctionCall","src":"6407:11:115"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6430:3:115"},{"name":"i","nodeType":"YulIdentifier","src":"6435:1:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6426:3:115"},"nodeType":"YulFunctionCall","src":"6426:11:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6420:5:115"},"nodeType":"YulFunctionCall","src":"6420:18:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6400:6:115"},"nodeType":"YulFunctionCall","src":"6400:39:115"},"nodeType":"YulExpressionStatement","src":"6400:39:115"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6347:1:115"},{"name":"length","nodeType":"YulIdentifier","src":"6350:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6344:2:115"},"nodeType":"YulFunctionCall","src":"6344:13:115"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6358:19:115","statements":[{"nodeType":"YulAssignment","src":"6360:15:115","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6369:1:115"},{"kind":"number","nodeType":"YulLiteral","src":"6372:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6365:3:115"},"nodeType":"YulFunctionCall","src":"6365:10:115"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6360:1:115"}]}]},"pre":{"nodeType":"YulBlock","src":"6340:3:115","statements":[]},"src":"6336:113:115"},{"body":{"nodeType":"YulBlock","src":"6475:31:115","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6488:3:115"},{"name":"length","nodeType":"YulIdentifier","src":"6493:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6484:3:115"},"nodeType":"YulFunctionCall","src":"6484:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"6502:1:115","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6477:6:115"},"nodeType":"YulFunctionCall","src":"6477:27:115"},"nodeType":"YulExpressionStatement","src":"6477:27:115"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6464:1:115"},{"name":"length","nodeType":"YulIdentifier","src":"6467:6:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6461:2:115"},"nodeType":"YulFunctionCall","src":"6461:13:115"},"nodeType":"YulIf","src":"6458:2:115"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"6285:3:115","type":""},{"name":"dst","nodeType":"YulTypedName","src":"6290:3:115","type":""},{"name":"length","nodeType":"YulTypedName","src":"6295:6:115","type":""}],"src":"6254:258:115"},{"body":{"nodeType":"YulBlock","src":"6564:109:115","statements":[{"body":{"nodeType":"YulBlock","src":"6651:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6660:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6663:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6653:6:115"},"nodeType":"YulFunctionCall","src":"6653:12:115"},"nodeType":"YulExpressionStatement","src":"6653:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6587:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6598:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"6605:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6594:3:115"},"nodeType":"YulFunctionCall","src":"6594:54:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6584:2:115"},"nodeType":"YulFunctionCall","src":"6584:65:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6577:6:115"},"nodeType":"YulFunctionCall","src":"6577:73:115"},"nodeType":"YulIf","src":"6574:2:115"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6553:5:115","type":""}],"src":"6517:156:115"}]},"contents":"{\n    { }\n    function abi_decode_t_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        let array_1 := allocateMemory(array_allocation_size_t_bytes(_1))\n        mstore(array_1, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(array, array) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(array_1, _1), 0x20), array)\n        array := array_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint24t_uint256t_uint160(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        if iszero(eq(value_2, and(value_2, 0xffffff))) { revert(value4, value4) }\n        value2 := value_2\n        value3 := calldataload(add(headStart, 96))\n        let value_3 := calldataload(add(headStart, 128))\n        validator_revert_t_address(value_3)\n        value4 := value_3\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        value0 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_int256t_int256_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_int256t_int256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(value2, value2) }\n        value2 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _2 := mload(_1)\n        let array := allocateMemory(array_allocation_size_t_bytes(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(value0, value0) }\n        copy_memory_to_memory(add(_1, 32), add(array, 32), _2)\n        value0 := array\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_t_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_packed_t_address_t_uint24_t_address__to_t_address_t_uint24_t_address__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000\n        mstore(pos, and(shl(96, value0), _1))\n        mstore(add(pos, 20), and(shl(232, value1), 0xffffff0000000000000000000000000000000000000000000000000000000000))\n        mstore(add(pos, 23), and(shl(96, value2), _1))\n        end := add(pos, 43)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_bool_t_int256_t_uint160_t_bytes_memory_ptr__to_t_address_t_bool_t_int256_t_uint160_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), iszero(iszero(value1)))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), 160)\n        tail := abi_encode_t_bytes(value4, add(headStart, 160))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_t_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_9b951eb3fb3742579e39d15610bb1800acf108358e69a1cabf56fc48cbe86cff__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"Unexpected error\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function allocateMemory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, size)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_t_bytes(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        size := add(and(add(length, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function validator_revert_t_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n}","id":115,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"8379":[{"length":32,"start":327},{"length":32,"start":1137},{"length":32,"start":1771}],"8383":[{"length":32,"start":1101}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c806390793ea81161005b57806390793ea8146100d3578063c45a0155146100e8578063cdca1753146100f0578063f7729d43146101035761007d565b806311c17848146100825780632f80bb1d1461009757806330d07f21146100c0575b600080fd5b610095610090366004610f04565b610116565b005b6100aa6100a5366004610e9e565b610221565b6040516100b79190611148565b60405180910390f35b6100aa6100ce366004610e30565b610286565b6100db61044b565b6040516100b79190611084565b6100db61046f565b6100aa6100fe366004610e9e565b610493565b6100aa610111366004610e30565b6104e1565b60008313806101255750600082135b61012e57600080fd5b600080600061013c84610660565b92509250925061016e7f0000000000000000000000000000000000000000000000000000000000000000848484610691565b5060008060008089136101b4578573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610888a6000036101e9565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161089896000035b925092509250821561020057604051818152602081fd5b6000541561021657600054811461021657600080fd5b604051828152602081fd5b60005b600061022f846106a7565b9050600080600061023f87610660565b925092509250610253828483896000610286565b9550831561026b57610264876106af565b9650610277565b85945050505050610280565b50505050610224565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff808616878216109083166102b15760008490555b6102bc8787876106e4565b73ffffffffffffffffffffffffffffffffffffffff1663128acb0830836102e288610722565b60000373ffffffffffffffffffffffffffffffffffffffff881615610307578761032d565b856103265773fffd8963efd1fc6a506488495d951d5263988d2561032d565b6401000276a45b8b8b8e6040516020016103429392919061101e565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016103719594939291906110a5565b6040805180830381600087803b15801561038a57600080fd5b505af19250505080156103d8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526103d591810190610ee1565b60015b61043e573d808015610406576040519150601f19603f3d011682016040523d82523d6000602084013e61040b565b606091505b5073ffffffffffffffffffffffffffffffffffffffff841661042c57600080555b61043581610754565b92505050610442565b5050505b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005b60006104a1846106a7565b905060008060006104b187610660565b9250925092506104c58383838960006104e1565b9550831561026b576104d6876106af565b965050505050610496565b600073ffffffffffffffffffffffffffffffffffffffff8086169087161061050a8787876106e4565b73ffffffffffffffffffffffffffffffffffffffff1663128acb08308361053088610722565b73ffffffffffffffffffffffffffffffffffffffff8816156105525787610578565b856105715773fffd8963efd1fc6a506488495d951d5263988d25610578565b6401000276a45b8c8b8d60405160200161058d9392919061101e565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016105bc9594939291906110a5565b6040805180830381600087803b1580156105d557600080fd5b505af1925050508015610623575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261062091810190610ee1565b60015b61043e573d808015610651576040519150601f19603f3d011682016040523d82523d6000602084013e610656565b606091505b5061043581610754565b6000808061066e8482610805565b925061067b846014610905565b9050610688846017610805565b91509193909250565b6000610442856106a28686866109f5565b610a72565b516042111590565b80516060906102809083906017907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe901610aa2565b600061071a7f00000000000000000000000000000000000000000000000000000000000000006107158686866109f5565b610c89565b949350505050565b60007f8000000000000000000000000000000000000000000000000000000000000000821061075057600080fd5b5090565b600081516020146107f1576044825110156107a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079b90611111565b60405180910390fd5b600482019150818060200190518101906107be9190610f52565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079b91906110f7565b818060200190518101906102809190610fbc565b60008182601401101561087957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b81601401835110156108ec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b60008182600301101561097957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b81600301835110156109ec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b6109fd610dbf565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610a35579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b6000610a7e8383610c89565b90503373ffffffffffffffffffffffffffffffffffffffff82161461028057600080fd5b60608182601f011015610b1657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b828284011015610b8757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b81830184511015610bf957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b606082158015610c185760405191506000825260208201604052610c80565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610c51578051835260209283019201610c39565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610610ccb57600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0460d5808301919091528251808303909101815260f5909101909152805191012090565b604080516060810182526000808252602082018190529181019190915290565b600082601f830112610def578081fd5b8135610e02610dfd82611175565b611151565b818152846020838601011115610e16578283fd5b816020850160208301379081016020019190915292915050565b600080600080600060a08688031215610e47578081fd5b8535610e52816111e5565b94506020860135610e62816111e5565b9350604086013562ffffff81168114610e79578182fd5b9250606086013591506080860135610e90816111e5565b809150509295509295909350565b60008060408385031215610eb0578182fd5b823567ffffffffffffffff811115610ec6578283fd5b610ed285828601610ddf565b95602094909401359450505050565b60008060408385031215610ef3578182fd5b505080516020909101519092909150565b600080600060608486031215610f18578283fd5b8335925060208401359150604084013567ffffffffffffffff811115610f3c578182fd5b610f4886828701610ddf565b9150509250925092565b600060208284031215610f63578081fd5b815167ffffffffffffffff811115610f79578182fd5b8201601f81018413610f89578182fd5b8051610f97610dfd82611175565b818152856020838501011115610fab578384fd5b6104428260208301602086016111b5565b600060208284031215610fcd578081fd5b5051919050565b60008151808452610fec8160208601602086016111b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a060808301526110ec60a0830184610fd4565b979650505050505050565b60006020825261110a6020830184610fd4565b9392505050565b60208082526010908201527f556e6578706563746564206572726f7200000000000000000000000000000000604082015260600190565b90815260200190565b60405181810167ffffffffffffffff8111828210171561116d57fe5b604052919050565b600067ffffffffffffffff82111561118957fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b838110156111d05781810151838201526020016111b8565b838111156111df576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461120757600080fd5b5056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90793EA8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x90793EA8 EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0xE8 JUMPI DUP1 PUSH4 0xCDCA1753 EQ PUSH2 0xF0 JUMPI DUP1 PUSH4 0xF7729D43 EQ PUSH2 0x103 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x11C17848 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2F80BB1D EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0x30D07F21 EQ PUSH2 0xC0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0xF04 JUMP JUMPDEST PUSH2 0x116 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAA PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0xE9E JUMP JUMPDEST PUSH2 0x221 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB7 SWAP2 SWAP1 PUSH2 0x1148 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xAA PUSH2 0xCE CALLDATASIZE PUSH1 0x4 PUSH2 0xE30 JUMP JUMPDEST PUSH2 0x286 JUMP JUMPDEST PUSH2 0xDB PUSH2 0x44B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB7 SWAP2 SWAP1 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0xDB PUSH2 0x46F JUMP JUMPDEST PUSH2 0xAA PUSH2 0xFE CALLDATASIZE PUSH1 0x4 PUSH2 0xE9E JUMP JUMPDEST PUSH2 0x493 JUMP JUMPDEST PUSH2 0xAA PUSH2 0x111 CALLDATASIZE PUSH1 0x4 PUSH2 0xE30 JUMP JUMPDEST PUSH2 0x4E1 JUMP JUMPDEST PUSH1 0x0 DUP4 SGT DUP1 PUSH2 0x125 JUMPI POP PUSH1 0x0 DUP3 SGT JUMPDEST PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x13C DUP5 PUSH2 0x660 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x16E PUSH32 0x0 DUP5 DUP5 DUP5 PUSH2 0x691 JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP10 SGT PUSH2 0x1B4 JUMPI DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT DUP9 DUP11 PUSH1 0x0 SUB PUSH2 0x1E9 JUMP JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT DUP10 DUP10 PUSH1 0x0 SUB JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP3 ISZERO PUSH2 0x200 JUMPI PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 REVERT JUMPDEST PUSH1 0x0 SLOAD ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 SLOAD DUP2 EQ PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 REVERT JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x0 PUSH2 0x22F DUP5 PUSH2 0x6A7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x23F DUP8 PUSH2 0x660 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x253 DUP3 DUP5 DUP4 DUP10 PUSH1 0x0 PUSH2 0x286 JUMP JUMPDEST SWAP6 POP DUP4 ISZERO PUSH2 0x26B JUMPI PUSH2 0x264 DUP8 PUSH2 0x6AF JUMP JUMPDEST SWAP7 POP PUSH2 0x277 JUMP JUMPDEST DUP6 SWAP5 POP POP POP POP POP PUSH2 0x280 JUMP JUMPDEST POP POP POP POP PUSH2 0x224 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND DUP8 DUP3 AND LT SWAP1 DUP4 AND PUSH2 0x2B1 JUMPI PUSH1 0x0 DUP5 SWAP1 SSTORE JUMPDEST PUSH2 0x2BC DUP8 DUP8 DUP8 PUSH2 0x6E4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 ADDRESS DUP4 PUSH2 0x2E2 DUP9 PUSH2 0x722 JUMP JUMPDEST PUSH1 0x0 SUB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND ISZERO PUSH2 0x307 JUMPI DUP8 PUSH2 0x32D JUMP JUMPDEST DUP6 PUSH2 0x326 JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x32D JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP12 DUP12 DUP15 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x342 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x101E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x371 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x10A5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x3D8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x3D5 SWAP2 DUP2 ADD SWAP1 PUSH2 0xEE1 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x43E JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x406 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x40B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 SSTORE JUMPDEST PUSH2 0x435 DUP2 PUSH2 0x754 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x442 JUMP JUMPDEST POP POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x0 PUSH2 0x4A1 DUP5 PUSH2 0x6A7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4B1 DUP8 PUSH2 0x660 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x4C5 DUP4 DUP4 DUP4 DUP10 PUSH1 0x0 PUSH2 0x4E1 JUMP JUMPDEST SWAP6 POP DUP4 ISZERO PUSH2 0x26B JUMPI PUSH2 0x4D6 DUP8 PUSH2 0x6AF JUMP JUMPDEST SWAP7 POP POP POP POP POP PUSH2 0x496 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND SWAP1 DUP8 AND LT PUSH2 0x50A DUP8 DUP8 DUP8 PUSH2 0x6E4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 ADDRESS DUP4 PUSH2 0x530 DUP9 PUSH2 0x722 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND ISZERO PUSH2 0x552 JUMPI DUP8 PUSH2 0x578 JUMP JUMPDEST DUP6 PUSH2 0x571 JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x578 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP13 DUP12 DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x58D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x101E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BC SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x10A5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x623 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x620 SWAP2 DUP2 ADD SWAP1 PUSH2 0xEE1 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x43E JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x651 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x656 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH2 0x435 DUP2 PUSH2 0x754 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x66E DUP5 DUP3 PUSH2 0x805 JUMP JUMPDEST SWAP3 POP PUSH2 0x67B DUP5 PUSH1 0x14 PUSH2 0x905 JUMP JUMPDEST SWAP1 POP PUSH2 0x688 DUP5 PUSH1 0x17 PUSH2 0x805 JUMP JUMPDEST SWAP2 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x442 DUP6 PUSH2 0x6A2 DUP7 DUP7 DUP7 PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0xA72 JUMP JUMPDEST MLOAD PUSH1 0x42 GT ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x280 SWAP1 DUP4 SWAP1 PUSH1 0x17 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x71A PUSH32 0x0 PUSH2 0x715 DUP7 DUP7 DUP7 PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0xC89 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 LT PUSH2 0x750 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x20 EQ PUSH2 0x7F1 JUMPI PUSH1 0x44 DUP3 MLOAD LT ISZERO PUSH2 0x7A4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x79B SWAP1 PUSH2 0x1111 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x7BE SWAP2 SWAP1 PUSH2 0xF52 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x79B SWAP2 SWAP1 PUSH2 0x10F7 JUMP JUMPDEST DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x280 SWAP2 SWAP1 PUSH2 0xFBC JUMP JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x14 ADD LT ISZERO PUSH2 0x879 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F416464726573735F6F766572666C6F770000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x14 ADD DUP4 MLOAD LT ISZERO PUSH2 0x8EC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F416464726573735F6F75744F66426F756E64730000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH13 0x1000000000000000000000000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x3 ADD LT ISZERO PUSH2 0x979 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F55696E7432345F6F766572666C6F77000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 ADD DUP4 MLOAD LT ISZERO PUSH2 0x9EC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F55696E7432345F6F75744F66426F756E6473000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x3 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x9FD PUSH2 0xDBF JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0xA35 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH3 0xFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA7E DUP4 DUP4 PUSH2 0xC89 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 DUP3 PUSH1 0x1F ADD LT ISZERO PUSH2 0xB16 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F766572666C6F77000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 DUP5 ADD LT ISZERO PUSH2 0xB87 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F766572666C6F77000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 ADD DUP5 MLOAD LT ISZERO PUSH2 0xBF9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F75744F66426F756E6473000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO DUP1 ISZERO PUSH2 0xC18 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x0 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xC80 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F DUP5 AND DUP1 ISZERO PUSH1 0x20 MUL DUP2 DUP5 ADD ADD DUP6 DUP2 ADD DUP8 DUP4 ISZERO PUSH1 0x20 MUL DUP5 DUP12 ADD ADD ADD JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0xC51 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0xC39 JUMP JUMPDEST POP POP DUP6 DUP5 MSTORE PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x40 MSTORE POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0xCCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 DUP6 ADD MSTORE SWAP4 SWAP1 SWAP2 AND DUP4 DUP6 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x80 DUP5 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 PUSH1 0xD5 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xF5 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xDEF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xE02 PUSH2 0xDFD DUP3 PUSH2 0x1175 JUMP JUMPDEST PUSH2 0x1151 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xE16 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xE47 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xE52 DUP2 PUSH2 0x11E5 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0xE62 DUP2 PUSH2 0x11E5 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE79 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0xE90 DUP2 PUSH2 0x11E5 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEB0 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xEC6 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xED2 DUP6 DUP3 DUP7 ADD PUSH2 0xDDF JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEF3 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xF18 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF3C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xF48 DUP7 DUP3 DUP8 ADD PUSH2 0xDDF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF63 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF79 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0xF89 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0xF97 PUSH2 0xDFD DUP3 PUSH2 0x1175 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0xFAB JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x442 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x11B5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFCD JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xFEC DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x11B5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SWAP4 DUP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0xE8 SWAP4 SWAP1 SWAP4 SHL PUSH32 0xFFFFFF0000000000000000000000000000000000000000000000000000000000 AND PUSH1 0x14 DUP3 ADD MSTORE SWAP3 SHL AND PUSH1 0x17 DUP3 ADD MSTORE PUSH1 0x2B ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND DUP4 MSTORE DUP7 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE DUP6 PUSH1 0x40 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x60 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x10EC PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0xFD4 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x110A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xFD4 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x556E6578706563746564206572726F7200000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x116D JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1189 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11D0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11B8 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x11DF JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"1103:5629:76:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1732:1193;;;;;;:::i;:::-;;:::i;:::-;;6065:665;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4957:1074;;;;;;:::i;:::-;;:::i;420:38:50:-;;;:::i;:::-;;;;;;;:::i;328:41::-;;;:::i;4263:660:76:-;;;;;;:::i;:::-;;:::i;3411:818::-;;;;;;:::i;:::-;;:::i;1732:1193::-;1878:1;1863:12;:16;:36;;;;1898:1;1883:12;:16;1863:36;1855:45;;;;;;1974:15;1991:16;2009:10;2023:22;:4;:20;:22::i;:::-;1973:72;;;;;;2055:66;2089:7;2098;2107:8;2117:3;2055:33;:66::i;:::-;;2133:17;2152:19;2173:22;2214:1;2199:12;:16;:180;;2324:7;2313:18;;:8;:18;;;2341:12;2365;2364:13;;2199:180;;;2241:8;2231:18;;:7;:18;;;2259:12;2283;2282:13;;2199:180;2132:247;;;;;;2393:12;2389:530;;;2465:4;2459:11;2499:14;2494:3;2487:27;2543:2;2538:3;2531:15;2430:130;2695:15;;:20;2691:68;;2743:15;;2725:14;:33;2717:42;;;;;;2817:4;2811:11;2851;2846:3;2839:24;2892:2;2887:3;2880:15;6065:665;6156:16;6184:540;6211:21;6235:23;:4;:21;:23::i;:::-;6211:47;;6274:16;6292:15;6309:10;6323:22;:4;:20;:22::i;:::-;6273:72;;;;;;6451:60;6474:7;6483:8;6493:3;6498:9;6509:1;6451:22;:60::i;:::-;6439:72;;6585:16;6581:133;;;6628:16;:4;:14;:16::i;:::-;6621:23;;6581:133;;;6690:9;6683:16;;;;;;;;6581:133;6184:540;;;;;;;6065:665;;;;:::o;4957:1074::-;5153:16;5199:18;;;;;;;;;5341:22;;5337:55;;5365:15;:27;;;5337:55;5418:31;5426:7;5435:8;5445:3;5418:7;:31::i;:::-;:36;;;5480:4;5553:10;5582:20;:9;:18;:20::i;:::-;5581:21;;5620:22;;;;:157;;5760:17;5620:157;;;5666:10;:70;;5709:27;5666:70;;;5679:27;5666:70;5812:8;5822:3;5827:7;5795:40;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5418:431;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5418:431:76;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;5402:623;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5907:22:76;;;5903:50;;5938:15;5931:22;;5903:50;5989:25;6007:6;5989:17;:25::i;:::-;5982:32;;;;;;5402:623;;;4957:1074;;;;;;;;;:::o;420:38:50:-;;;:::o;328:41::-;;;:::o;4263:660:76:-;4352:17;4381:536;4408:21;4432:23;:4;:21;:23::i;:::-;4408:47;;4471:15;4488:16;4506:10;4520:22;:4;:20;:22::i;:::-;4470:72;;;;;;4647:58;4669:7;4678:8;4688:3;4693:8;4703:1;4647:21;:58::i;:::-;4636:69;;4779:16;4775:132;;;4822:16;:4;:14;:16::i;:::-;4815:23;;4381:536;;;;;;3411:818;3605:17;3652:18;;;;;;;;3697:31;3652:7;3662:8;3724:3;3697:7;:31::i;:::-;:36;;;3759:4;3832:10;3860:19;:8;:17;:19::i;:::-;3897:22;;;;:157;;4037:17;3897:157;;;3943:10;:70;;3986:27;3943:70;;;3956:27;3943:70;4089:7;4098:3;4103:8;4072:40;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3697:429;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3697:429:76;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;3681:542;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4187:25;4205:6;4187:17;:25::i;1779:240:87:-;1846:14;;;1909:17;:4;1846:14;1909;:17::i;:::-;1900:26;-1:-1:-1;1942:24:87;:4;304:2;1942:13;:24::i;:::-;1936:30;-1:-1:-1;1985:27:87;:4;507:20;1985:14;:27::i;:::-;1976:36;;1779:240;;;;;:::o;742:257:81:-;888:17;924:68;939:7;948:43;971:6;979;987:3;948:22;:43::i;:::-;924:14;:68::i;992:138:87:-;1083:11;777:24;-1:-1:-1;1083:40:87;;992:138::o;2561:149::-;2677:11;;2622:12;;2653:50;;2677:4;;507:20;;2677:25;;2653:10;:50::i;1470:215:76:-;1553:12;1597:80;1624:7;1633:43;1656:6;1664;1672:3;1633:22;:43::i;:::-;1597:26;:80::i;:::-;1577:101;1470:215;-1:-1:-1;;;;1470:215:76:o;924:123:17:-;976:8;1008;1004:1;:12;996:21;;;;;;-1:-1:-1;1038:1:17;924:123::o;3005:372:76:-;3075:7;3098:6;:13;3115:2;3098:19;3094:231;;3153:2;3137:6;:13;:18;3133:50;;;3157:26;;;;;;;;;;:::i;:::-;;;;;;;;3133:50;3246:4;3238:6;3234:17;3224:27;;3296:6;3285:28;;;;;;;;;;;;:::i;:::-;3278:36;;;;;;;;;;;:::i;3094:231::-;3352:6;3341:29;;;;;;;;;;;;:::i;3214:416:80:-;3293:7;3335:6;3320;3329:2;3320:11;:21;;3312:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3399:6;3408:2;3399:11;3382:6;:13;:28;;3374:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3524:30:80;3540:4;3524:30;3518:37;3557:27;3514:71;;;3214:416::o;3636:365::-;3714:6;3754;3740;3749:1;3740:10;:20;;3732:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3817:6;3826:1;3817:10;3800:6;:13;:27;;3792:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3929:29:80;3945:3;3929:29;3923:36;;3636:365::o;784:244:88:-;871:14;;:::i;:::-;910:6;901:15;;:6;:15;;;897:56;;;938:6;;946;897:56;-1:-1:-1;970:51:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;784:244::o;1248:269:81:-;1370:17;1419:44;1446:7;1455;1419:26;:44::i;:::-;1399:65;-1:-1:-1;1482:10:81;:27;;;;1474:36;;;;;399:2809:80;491:12;539:7;523;533:2;523:12;:23;;515:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;603:6;592:7;583:6;:16;:26;;575:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;672:7;663:6;:16;646:6;:13;:33;;638:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;712:22;775:15;;803:1967;;;;2911:4;2905:11;2892:24;;3097:1;3086:9;3079:20;3145:4;3134:9;3130:20;3124:4;3117:34;768:2397;;803:1967;985:4;979:11;966:24;;1644:2;1635:7;1631:16;2026:9;2019:17;2013:4;2009:28;1997:9;1986;1982:25;1978:60;2074:7;2070:2;2066:16;2326:6;2312:9;2305:17;2299:4;2295:28;2283:9;2275:6;2271:22;2267:57;2263:70;2100:425;2359:3;2355:2;2352:11;2100:425;;;2497:9;;2486:21;;2400:4;2392:13;;;;2432;2100:425;;;-1:-1:-1;;2543:26:80;;;2751:2;2734:11;2747:7;2730:25;2724:4;2717:39;-1:-1:-1;768:2397:80;-1:-1:-1;3192:9:80;399:2809;-1:-1:-1;;;;399:2809:80:o;1276:512:88:-;1360:12;1405:3;:10;;;1392:23;;:3;:10;;;:23;;;1384:32;;;;;;-1:-1:-1;1639:10:88;;1651;;;;;1663:7;;;;;1628:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1618:54;;;;;;1510:229;;;;;;;;;;;;;;;;;;;;;241:66;1510:229;;;;;;;;;;;;;;;;;;;;;;;;;1479:278;;;;;;1276:512::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:485:115:-;;111:3;104:4;96:6;92:17;88:27;78:2;;133:5;126;119:20;78:2;173:6;160:20;204:49;219:33;249:2;219:33;:::i;:::-;204:49;:::i;:::-;278:2;269:7;262:19;324:3;317:4;312:2;304:6;300:15;296:26;293:35;290:2;;;345:5;338;331:20;290:2;414;407:4;399:6;395:17;388:4;379:7;375:18;362:55;437:16;;;455:4;433:27;426:42;;;;441:7;68:431;-1:-1:-1;;68:431:115:o;504:795::-;;;;;;683:3;671:9;662:7;658:23;654:33;651:2;;;705:6;697;690:22;651:2;749:9;736:23;768:33;795:5;768:33;:::i;:::-;820:5;-1:-1:-1;877:2:115;862:18;;849:32;890:35;849:32;890:35;:::i;:::-;944:7;-1:-1:-1;1003:2:115;988:18;;975:32;1051:8;1038:22;;1026:35;;1016:2;;1080:6;1072;1065:22;1016:2;1108:7;-1:-1:-1;1162:2:115;1147:18;;1134:32;;-1:-1:-1;1218:3:115;1203:19;;1190:33;1232:35;1190:33;1232:35;:::i;:::-;1286:7;1276:17;;;641:658;;;;;;;;:::o;1304:410::-;;;1442:2;1430:9;1421:7;1417:23;1413:32;1410:2;;;1463:6;1455;1448:22;1410:2;1508:9;1495:23;1541:18;1533:6;1530:30;1527:2;;;1578:6;1570;1563:22;1527:2;1606:51;1649:7;1640:6;1629:9;1625:22;1606:51;:::i;:::-;1596:61;1704:2;1689:18;;;;1676:32;;-1:-1:-1;;;;1400:314:115:o;1719:253::-;;;1857:2;1845:9;1836:7;1832:23;1828:32;1825:2;;;1878:6;1870;1863:22;1825:2;-1:-1:-1;;1906:16:115;;1962:2;1947:18;;;1941:25;1906:16;;1941:25;;-1:-1:-1;1815:157:115:o;1977:476::-;;;;2130:2;2118:9;2109:7;2105:23;2101:32;2098:2;;;2151:6;2143;2136:22;2098:2;2192:9;2179:23;2169:33;;2249:2;2238:9;2234:18;2221:32;2211:42;;2304:2;2293:9;2289:18;2276:32;2331:18;2323:6;2320:30;2317:2;;;2368:6;2360;2353:22;2317:2;2396:51;2439:7;2430:6;2419:9;2415:22;2396:51;:::i;:::-;2386:61;;;2088:365;;;;;:::o;2458:676::-;;2591:2;2579:9;2570:7;2566:23;2562:32;2559:2;;;2612:6;2604;2597:22;2559:2;2650:9;2644:16;2683:18;2675:6;2672:30;2669:2;;;2720:6;2712;2705:22;2669:2;2748:22;;2801:4;2793:13;;2789:27;-1:-1:-1;2779:2:115;;2835:6;2827;2820:22;2779:2;2869;2863:9;2894:49;2909:33;2939:2;2909:33;:::i;2894:49::-;2966:2;2959:5;2952:17;3006:7;3001:2;2996;2992;2988:11;2984:20;2981:33;2978:2;;;3032:6;3024;3017:22;2978:2;3050:54;3101:2;3096;3089:5;3085:14;3080:2;3076;3072:11;3050:54;:::i;3139:194::-;;3262:2;3250:9;3241:7;3237:23;3233:32;3230:2;;;3283:6;3275;3268:22;3230:2;-1:-1:-1;3311:16:115;;3220:113;-1:-1:-1;3220:113:115:o;3338:318::-;;3419:5;3413:12;3446:6;3441:3;3434:19;3462:63;3518:6;3511:4;3506:3;3502:14;3495:4;3488:5;3484:16;3462:63;:::i;:::-;3570:2;3558:15;3575:66;3554:88;3545:98;;;;3645:4;3541:109;;3389:267;-1:-1:-1;;3389:267:115:o;3661:514::-;3949:2;3945:15;;;3854:66;3941:24;;;3929:37;;4004:3;4000:16;;;;4018:66;3996:89;3991:2;3982:12;;3975:111;4120:15;;4116:24;4111:2;4102:12;;4095:46;4166:2;4157:12;;3834:341::o;4180:226::-;4356:42;4344:55;;;;4326:74;;4314:2;4299:18;;4281:125::o;4411:593::-;;4654:42;4735:2;4727:6;4723:15;4712:9;4705:34;4789:6;4782:14;4775:22;4770:2;4759:9;4755:18;4748:50;4834:6;4829:2;4818:9;4814:18;4807:34;4889:2;4881:6;4877:15;4872:2;4861:9;4857:18;4850:43;;4930:3;4924;4913:9;4909:19;4902:32;4951:47;4993:3;4982:9;4978:19;4970:6;4951:47;:::i;:::-;4943:55;4634:370;-1:-1:-1;;;;;;;4634:370:115:o;5009:221::-;;5158:2;5147:9;5140:21;5178:46;5220:2;5209:9;5205:18;5197:6;5178:46;:::i;:::-;5170:54;5130:100;-1:-1:-1;;;5130:100:115:o;5235:340::-;5437:2;5419:21;;;5476:2;5456:18;;;5449:30;5515:18;5510:2;5495:18;;5488:46;5566:2;5551:18;;5409:166::o;5580:177::-;5726:25;;;5714:2;5699:18;;5681:76::o;5762:242::-;5832:2;5826:9;5862:17;;;5909:18;5894:34;;5930:22;;;5891:62;5888:2;;;5956:9;5888:2;5983;5976:22;5806:198;;-1:-1:-1;5806:198:115:o;6009:240::-;;6092:18;6084:6;6081:30;6078:2;;;6114:9;6078:2;-1:-1:-1;6162:4:115;6150:17;6169:66;6146:90;6238:4;6142:101;;6068:181::o;6254:258::-;6326:1;6336:113;6350:6;6347:1;6344:13;6336:113;;;6426:11;;;6420:18;6407:11;;;6400:39;6372:2;6365:10;6336:113;;;6467:6;6464:1;6461:13;6458:2;;;6502:1;6493:6;6488:3;6484:16;6477:27;6458:2;;6307:205;;;:::o;6517:156::-;6605:42;6598:5;6594:54;6587:5;6584:65;6574:2;;6663:1;6660;6653:12;6574:2;6564:109;:::o"},"methodIdentifiers":{"SAMB()":"90793ea8","astraCLSwapCallback(int256,int256,bytes)":"11c17848","factory()":"c45a0155","quoteExactInput(bytes,uint256)":"cdca1753","quoteExactInputSingle(address,address,uint24,uint256,uint160)":"f7729d43","quoteExactOutput(bytes,uint256)":"2f80bb1d","quoteExactOutputSingle(address,address,uint24,uint256,uint160)":"30d07f21"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_SAMB\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"SAMB\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"}],\"name\":\"astraCLSwapCallback\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"quoteExactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"quoteExactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"quoteExactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"quoteExactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"These functions are not gas efficient and should _not_ be called on chain. Instead, optimistically execute the swap and check the amounts in the callback.\",\"kind\":\"dev\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IAstraCLPoolActions#swap call\"}},\"quoteExactInput(bytes,uint256)\":{\"params\":{\"amountIn\":\"The amount of the first token to swap\",\"path\":\"The path of the swap, i.e. each token pair and the pool fee\"},\"returns\":{\"amountOut\":\"The amount of the last token that would be received\"}},\"quoteExactInputSingle(address,address,uint24,uint256,uint160)\":{\"params\":{\"amountIn\":\"The desired input amount\",\"fee\":\"The fee of the token pool to consider for the pair\",\"sqrtPriceLimitX96\":\"The price limit of the pool that cannot be exceeded by the swap\",\"tokenIn\":\"The token being swapped in\",\"tokenOut\":\"The token being swapped out\"},\"returns\":{\"amountOut\":\"The amount of `tokenOut` that would be received\"}},\"quoteExactOutput(bytes,uint256)\":{\"params\":{\"amountOut\":\"The amount of the last token to receive\",\"path\":\"The path of the swap, i.e. each token pair and the pool fee. Path must be provided in reverse order\"},\"returns\":{\"amountIn\":\"The amount of first token required to be paid\"}},\"quoteExactOutputSingle(address,address,uint24,uint256,uint160)\":{\"params\":{\"amountOut\":\"The desired output amount\",\"fee\":\"The fee of the token pool to consider for the pair\",\"sqrtPriceLimitX96\":\"The price limit of the pool that cannot be exceeded by the swap\",\"tokenIn\":\"The token being swapped in\",\"tokenOut\":\"The token being swapped out\"},\"returns\":{\"amountIn\":\"The amount required as the input for the swap in order to receive `amountOut`\"}}},\"stateVariables\":{\"amountOutCached\":{\"details\":\"Transient storage variable used to check a safety condition in exact output swaps.\"}},\"title\":\"Provides quotes for swaps\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IAstraCLPool#swap.\"},\"quoteExactInput(bytes,uint256)\":{\"notice\":\"Returns the amount out received for a given exact input swap without executing the swap\"},\"quoteExactInputSingle(address,address,uint24,uint256,uint160)\":{\"notice\":\"Returns the amount out received for a given exact input but for a swap of a single pool\"},\"quoteExactOutput(bytes,uint256)\":{\"notice\":\"Returns the amount in required for a given exact output swap without executing the swap\"},\"quoteExactOutputSingle(address,address,uint24,uint256,uint160)\":{\"notice\":\"Returns the amount in required to receive the given exact output amount but for a swap of a single pool\"}},\"notice\":\"Allows getting the expected amount out or amount in for a given swap without executing the swap\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lens/Quoter.sol\":\"Quoter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol\":{\"keccak256\":\"0xaa82f63f0c930e51d6aaae0d59e7bf3ef5b32371ac0549f6e07bfcab5b4dcb16\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://73419af0b4f35f02c3b89d387d6ac46041637a7133e249de617103b7567bf4c4\",\"dweb:/ipfs/QmTfwEX1dCoUUUMaMFzDnqDcFXihHQnEG1fbkBFpidRs8o\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0xd4c1c1b67f946b077d7c52a158113763a89a210fc2927b8491055a962ecd18c0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5344400c74320ca8dbe19241db7ff49babbd6c875c1b561c79d6e4315a9fb5f9\",\"dweb:/ipfs/QmRKCNTbkovxK1WvejXZr3iAHhGN97ZT1yWGsWCJFkrT5X\"]},\"@airdao/astra-cl-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0xe22d07f1ebf9c8468c81cb6905bfc8f8a54fa2f9b4a50742202a47cdbcb5af80\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d4773ca5008d2a2f496370695942c8ba3d6e1d487adbf5cda1149da12e3a6268\",\"dweb:/ipfs/QmcPYTLpEWfU8e3KAYBfHH7uYR4tGAkvnWrWS1CG8EkyLC\"]},\"contracts/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x566b2f2f7bf89d107c66316e12b9cad9fade2f9cc2076bceb2090f54bada22da\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d13d485890a8eb6b2b6b38cf0b7fc39c7fc66462a9553159947ece2de55d9ba3\",\"dweb:/ipfs/QmaSEEBMjMvvrLqxmrskUmDwg86g7RHDa6SYiYiA77SJ1X\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IQuoter.sol\":{\"keccak256\":\"0x124b4334f058f70afd8f3b04315cc0812961d400957225d0875872b2a31afbff\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://efdc8133033a1596f60f3619a317f8b3af98a6adffd85a9898c5a809c5c22417\",\"dweb:/ipfs/QmRkGjgzgSxhUVxwqiWZuz9M4Ff3TwTbzUgN3yJd4gxMfN\"]},\"contracts/lens/Quoter.sol\":{\"keccak256\":\"0xf430bac0355d38d23b192fc4e60d20a66df67af0f13805f65b1ac24805f80f01\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2c533fbe232a4b5a29993772472e62972ff7a0b932cbaf22f35756919159c891\",\"dweb:/ipfs/QmVT5A9b5yo2765oA4XahciE1AeieB2D4uXX6mdB9Kh9CG\"]},\"contracts/libraries/BytesLib.sol\":{\"keccak256\":\"0xed1b8acd0184eb321d5f4b5c2576608d1c12f5db1bb72d950054438f7f1946a6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f55d6aca86dcf1f1ab6413f48964f821306a29914c2117c16f20446faa5d6d0a\",\"dweb:/ipfs/QmWKbbg6kA9kkPVrCh6hJMnPhK1NhuVoHEd9s3vmYWsvTa\"]},\"contracts/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xf21a3d7e2bc14386ce7b072b124b580df53441a32591770845860e8947f942d0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6941e21d9bc52bddc65079c5e7bc9d6ffd6553f6ed7f3d3b340996a55115b46f\",\"dweb:/ipfs/QmaDJ9uafahho77WP5izBCRL4W3mVM7NFL5q5QR5YvAC3A\"]},\"contracts/libraries/Path.sol\":{\"keccak256\":\"0x0a6928608f48763796089e22dfc02a462cce63bb7727663961b3ed8c4f3eb862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://73bb4f107faf873db8700ce8950d2c4c88d41e0e1716da599bb733ad884f95eb\",\"dweb:/ipfs/QmZXSaPVpgDXpkKqYRdByJ3UXaMV2ATkr7V72nRZij8wmB\"]},\"contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xdd82100913bcb7c490e9e6912ab33994bd97d5a59e67209826ebf917bc8271c1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ecfc24c77d80aa718604d8a2c4d59460b76b5fd567d15206414e3838dd6698b7\",\"dweb:/ipfs/QmVtUC9dnade4RkzXaSqEFdAkiEftJ777jmT619LX2VLGv\"]}},\"version\":1}"}},"contracts/lens/QuoterV2.sol":{"QuoterV2":{"abi":[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_SAMB","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"SAMB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"path","type":"bytes"}],"name":"astraCLSwapCallback","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"quoteExactInput","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint160[]","name":"sqrtPriceX96AfterList","type":"uint160[]"},{"internalType":"uint32[]","name":"initializedTicksCrossedList","type":"uint32[]"},{"internalType":"uint256","name":"gasEstimate","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct IQuoterV2.QuoteExactInputSingleParams","name":"params","type":"tuple"}],"name":"quoteExactInputSingle","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceX96After","type":"uint160"},{"internalType":"uint32","name":"initializedTicksCrossed","type":"uint32"},{"internalType":"uint256","name":"gasEstimate","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"quoteExactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint160[]","name":"sqrtPriceX96AfterList","type":"uint160[]"},{"internalType":"uint32[]","name":"initializedTicksCrossedList","type":"uint32[]"},{"internalType":"uint256","name":"gasEstimate","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct IQuoterV2.QuoteExactOutputSingleParams","name":"params","type":"tuple"}],"name":"quoteExactOutputSingle","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceX96After","type":"uint160"},{"internalType":"uint32","name":"initializedTicksCrossed","type":"uint32"},{"internalType":"uint256","name":"gasEstimate","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:507:115","statements":[{"nodeType":"YulBlock","src":"6:3:115","statements":[]},{"body":{"nodeType":"YulBlock","src":"76:117:115","statements":[{"nodeType":"YulAssignment","src":"86:22:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"101:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"95:5:115"},"nodeType":"YulFunctionCall","src":"95:13:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"86:5:115"}]},{"body":{"nodeType":"YulBlock","src":"171:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"180:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"183:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"173:6:115"},"nodeType":"YulFunctionCall","src":"173:12:115"},"nodeType":"YulExpressionStatement","src":"173:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"130:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"141:5:115"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"156:3:115","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"161:1:115","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"152:3:115"},"nodeType":"YulFunctionCall","src":"152:11:115"},{"kind":"number","nodeType":"YulLiteral","src":"165:1:115","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"148:3:115"},"nodeType":"YulFunctionCall","src":"148:19:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"137:3:115"},"nodeType":"YulFunctionCall","src":"137:31:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"127:2:115"},"nodeType":"YulFunctionCall","src":"127:42:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"120:6:115"},"nodeType":"YulFunctionCall","src":"120:50:115"},"nodeType":"YulIf","src":"117:2:115"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"55:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"66:5:115","type":""}],"src":"14:179:115"},{"body":{"nodeType":"YulBlock","src":"296:209:115","statements":[{"body":{"nodeType":"YulBlock","src":"342:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"351:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"359:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"344:6:115"},"nodeType":"YulFunctionCall","src":"344:22:115"},"nodeType":"YulExpressionStatement","src":"344:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"317:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"326:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"313:3:115"},"nodeType":"YulFunctionCall","src":"313:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"338:2:115","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"309:3:115"},"nodeType":"YulFunctionCall","src":"309:32:115"},"nodeType":"YulIf","src":"306:2:115"},{"nodeType":"YulAssignment","src":"377:52:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"419:9:115"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"387:31:115"},"nodeType":"YulFunctionCall","src":"387:42:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"377:6:115"}]},{"nodeType":"YulAssignment","src":"438:61:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"484:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"495:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"480:3:115"},"nodeType":"YulFunctionCall","src":"480:18:115"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"448:31:115"},"nodeType":"YulFunctionCall","src":"448:51:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"438:6:115"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"254:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"265:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"277:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"285:6:115","type":""}],"src":"198:307:115"}]},"contents":"{\n    { }\n    function abi_decode_t_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_t_address_fromMemory(headStart)\n        value1 := abi_decode_t_address_fromMemory(add(headStart, 32))\n    }\n}","id":115,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60c06040523480156200001157600080fd5b506040516200212c3803806200212c833981016040819052620000349162000070565b6001600160601b0319606092831b8116608052911b1660a052620000a7565b80516001600160a01b03811681146200006b57600080fd5b919050565b6000806040838503121562000083578182fd5b6200008e8362000053565b91506200009e6020840162000053565b90509250929050565b60805160601c60a05160601c612051620000db600039806104dd52508061015a52806107335280610b3f52506120516000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063bd21704a1161005b578063bd21704a146100d8578063c45a0155146100fb578063c6a5026a14610103578063cdca1753146101165761007d565b806311c17848146100825780632f80bb1d1461009757806390793ea8146100c3575b600080fd5b610095610090366004611b91565b610129565b005b6100aa6100a5366004611b2b565b6102e5565b6040516100ba9493929190611eac565b60405180910390f35b6100cb6104db565b6040516100ba9190611def565b6100eb6100e6366004611c49565b6104ff565b6040516100ba9493929190611f54565b6100cb610731565b6100eb610111366004611c49565b610755565b6100aa610124366004611b2b565b610910565b60008313806101385750600082135b61014157600080fd5b600080600061014f84610ae8565b9250925092506101817f0000000000000000000000000000000000000000000000000000000000000000848484610b19565b5060008060008089136101c7578573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610888a6000036101fc565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161089896000035b925092509250600061020f878787610b38565b90506000808273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561025a57600080fd5b505afa15801561026e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102929190611c6b565b50505050509150915085156102b857604051848152826020820152816040820152606081fd5b600054156102ce5760005484146102ce57600080fd5b604051858152826020820152816040820152606081fd5b600060608060006102f586610b76565b67ffffffffffffffff8111801561030b57600080fd5b50604051908082528060200260200182016040528015610335578160200160208202803683370190505b50925061034186610b76565b67ffffffffffffffff8111801561035757600080fd5b50604051908082528060200260200182016040528015610381578160200160208202803683370190505b50915060005b60008060006103958a610ae8565b9250925092506000806000806104186040518060a001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018f81526020018762ffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152506104ff565b9350935093509350828b898151811061042d57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818a898151811061047457fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b926104a18e610ba5565b156104b6576104af8e610bad565b9d506104c6565b8c9b5050505050505050506104d2565b50505050505050610387565b92959194509250565b7f000000000000000000000000000000000000000000000000000000000000000081565b60208101518151606083015160009283928392839273ffffffffffffffffffffffffffffffffffffffff8082169084161092849261053d9290610b38565b9050866080015173ffffffffffffffffffffffffffffffffffffffff166000141561056b5760408701516000555b60005a90508173ffffffffffffffffffffffffffffffffffffffff1663128acb08308561059b8c60400151610be8565b6000038c6080015173ffffffffffffffffffffffffffffffffffffffff166000146105ca578c608001516105f0565b876105e95773fffd8963efd1fc6a506488495d951d5263988d256105f0565b6401000276a45b8d602001518e606001518f6000015160405160200161061193929190611d89565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401610640959493929190611e10565b6040805180830381600087803b15801561065957600080fd5b505af19250505080156106a7575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526106a491810190611b6e565b60015b610724573d8080156106d5576040519150601f19603f3d011682016040523d82523d6000602084013e6106da565b606091505b505a82039450886080015173ffffffffffffffffffffffffffffffffffffffff166000141561070857600080555b610713818487610c1a565b97509750975097505050505061072a565b50505050505b9193509193565b7f000000000000000000000000000000000000000000000000000000000000000081565b60208101518151606083015160009283928392839273ffffffffffffffffffffffffffffffffffffffff808216908416109284926107939290610b38565b905060005a90508173ffffffffffffffffffffffffffffffffffffffff1663128acb0830856107c58c60400151610be8565b60808d015173ffffffffffffffffffffffffffffffffffffffff16156107ef578c60800151610815565b8761080e5773fffd8963efd1fc6a506488495d951d5263988d25610815565b6401000276a45b8d600001518e606001518f6020015160405160200161083693929190611d89565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401610865959493929190611e10565b6040805180830381600087803b15801561087e57600080fd5b505af19250505080156108cc575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108c991810190611b6e565b60015b610724573d8080156108fa576040519150601f19603f3d011682016040523d82523d6000602084013e6108ff565b606091505b505a82039450610713818487610c1a565b6000606080600061092086610b76565b67ffffffffffffffff8111801561093657600080fd5b50604051908082528060200260200182016040528015610960578160200160208202803683370190505b50925061096c86610b76565b67ffffffffffffffff8111801561098257600080fd5b506040519080825280602002602001820160405280156109ac578160200160208202803683370190505b50915060005b60008060006109c08a610ae8565b925092509250600080600080610a436040518060a001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018f81526020018762ffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815250610755565b9350935093509350828b8981518110610a5857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818a8981518110610a9f57fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b92610acc8e610ba5565b156104b657610ada8e610bad565b9d50505050505050506109b2565b60008080610af68482610cee565b9250610b03846014610dee565b9050610b10846017610cee565b91509193909250565b6000610b2f85610b2a868686610ede565b610f5b565b95945050505050565b6000610b6e7f0000000000000000000000000000000000000000000000000000000000000000610b69868686610ede565b610f8b565b949350505050565b805160177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec909101045b919050565b516042111590565b8051606090610be29083906017907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9016110c1565b92915050565b60007f80000000000000000000000000000000000000000000000000000000000000008210610c1657600080fd5b5090565b6000806000806000808773ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610c6957600080fd5b505afa158015610c7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca19190611c6b565b50939650610cb694508d93506112a892505050565b91975095509050610cde73ffffffffffffffffffffffffffffffffffffffff89168383611369565b9350869250505093509350935093565b600081826014011015610d6257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015610dd557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015610e6257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b8160030183511015610ed557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b610ee66119fa565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610f1e579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b6000610f678383610f8b565b90503373ffffffffffffffffffffffffffffffffffffffff821614610be257600080fd5b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610610fcd57600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0460d5808301919091528251808303909101815260f5909101909152805191012090565b60608182601f01101561113557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b8282840110156111a657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b8183018451101561121857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b606082158015611237576040519150600082526020820160405261129f565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611270578051835260209283019201611258565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b60008060008351606014611348576044845110156112fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f290611e75565b60405180910390fd5b600484019350838060200190518101906113159190611bdf565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f29190611e62565b8380602001905181019061135c9190611d02565b9250925092509193909250565b60008060008060008060008060088b73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113bd57600080fd5b505afa1580156113d1573d6000803e3d6000fd5b505050506040513d60208110156113e757600080fd5b5051600290810b908c900b816113f957fe5b0560020b901d905060006101008c73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561144c57600080fd5b505afa158015611460573d6000803e3d6000fd5b505050506040513d602081101561147657600080fd5b5051600290810b908d900b8161148857fe5b0560020b8161149357fe5b079050600060088d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114e057600080fd5b505afa1580156114f4573d6000803e3d6000fd5b505050506040513d602081101561150a57600080fd5b5051600290810b908d900b8161151c57fe5b0560020b901d905060006101008e73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561156f57600080fd5b505afa158015611583573d6000803e3d6000fd5b505050506040513d602081101561159957600080fd5b5051600290810b908e900b816115ab57fe5b0560020b816115b657fe5b07905060008160ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296856040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561161757600080fd5b505afa15801561162b573d6000803e3d6000fd5b505050506040513d602081101561164157600080fd5b5051161180156116d457508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561169257600080fd5b505afa1580156116a6573d6000803e3d6000fd5b505050506040513d60208110156116bc57600080fd5b5051600290810b908d900b816116ce57fe5b0760020b155b80156116e557508b60020b8d60020b135b945060008360ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296876040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561174557600080fd5b505afa158015611759573d6000803e3d6000fd5b505050506040513d602081101561176f57600080fd5b50511611801561180257508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156117c057600080fd5b505afa1580156117d4573d6000803e3d6000fd5b505050506040513d60208110156117ea57600080fd5b5051600290810b908e900b816117fc57fe5b0760020b155b801561181357508b60020b8d60020b125b95508160010b8460010b128061183f57508160010b8460010b14801561183f57508060ff168360ff1611155b1561185557839950829750819850809650611862565b8199508097508398508296505b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff87161b9150505b8560010b8760010b13611999578560010b8760010b14156118d3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff858103161c165b6000818c73ffffffffffffffffffffffffffffffffffffffff16635339c2968a6040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561192a57600080fd5b505afa15801561193e573d6000803e3d6000fd5b505050506040513d602081101561195457600080fd5b5051169050611962816119c1565b61ffff16989098019750506001909501947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61188e565b81156119a6576001880397505b82156119b3576001880397505b505050505050509392505050565b6000805b8215610be2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301909216916001016119c5565b604080516060810182526000808252602082018190529181019190915290565b600082601f830112611a2a578081fd5b8135611a3d611a3882611faf565b611f8b565b818152846020838601011115611a51578283fd5b816020850160208301379081016020019190915292915050565b8051600281900b8114610ba057600080fd5b600060a08284031215611a8e578081fd5b60405160a0810181811067ffffffffffffffff82111715611aab57fe5b6040529050808235611abc8161201f565b81526020830135611acc8161201f565b602082015260408381013590820152606083013562ffffff81168114611af157600080fd5b6060820152611b0260808401611b0e565b60808201525092915050565b8035610ba08161201f565b805161ffff81168114610ba057600080fd5b60008060408385031215611b3d578182fd5b823567ffffffffffffffff811115611b53578283fd5b611b5f85828601611a1a565b95602094909401359450505050565b60008060408385031215611b80578182fd5b505080516020909101519092909150565b600080600060608486031215611ba5578081fd5b8335925060208401359150604084013567ffffffffffffffff811115611bc9578182fd5b611bd586828701611a1a565b9150509250925092565b600060208284031215611bf0578081fd5b815167ffffffffffffffff811115611c06578182fd5b8201601f81018413611c16578182fd5b8051611c24611a3882611faf565b818152856020838501011115611c38578384fd5b610b2f826020830160208601611fef565b600060a08284031215611c5a578081fd5b611c648383611a7d565b9392505050565b600080600080600080600060e0888a031215611c85578283fd5b8751611c908161201f565b9650611c9e60208901611a6b565b9550611cac60408901611b19565b9450611cba60608901611b19565b9350611cc860808901611b19565b925060a088015160ff81168114611cdd578283fd5b60c08901519092508015158114611cf2578182fd5b8091505092959891949750929550565b600080600060608486031215611d16578081fd5b835192506020840151611d288161201f565b9150611d3660408501611a6b565b90509250925092565b60008151808452611d57816020860160208601611fef565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a06080830152611e5760a0830184611d3f565b979650505050505050565b600060208252611c646020830184611d3f565b60208082526010908201527f556e6578706563746564206572726f7200000000000000000000000000000000604082015260600190565b600060808201868352602060808185015281875180845260a0860191508289019350845b81811015611f0257845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101611ed0565b505084810360408601528651808252908201925081870190845b81811015611f3e57825163ffffffff1685529383019391830191600101611f1c565b5050505060609290920192909252949350505050565b93845273ffffffffffffffffffffffffffffffffffffffff92909216602084015263ffffffff166040830152606082015260800190565b60405181810167ffffffffffffffff81118282101715611fa757fe5b604052919050565b600067ffffffffffffffff821115611fc357fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b8381101561200a578181015183820152602001611ff2565b83811115612019576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461204157600080fd5b5056fea164736f6c6343000706000a","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x212C CODESIZE SUB DUP1 PUSH3 0x212C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x70 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH3 0xA7 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x83 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH3 0x8E DUP4 PUSH3 0x53 JUMP JUMPDEST SWAP2 POP PUSH3 0x9E PUSH1 0x20 DUP5 ADD PUSH3 0x53 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x2051 PUSH3 0xDB PUSH1 0x0 CODECOPY DUP1 PUSH2 0x4DD MSTORE POP DUP1 PUSH2 0x15A MSTORE DUP1 PUSH2 0x733 MSTORE DUP1 PUSH2 0xB3F MSTORE POP PUSH2 0x2051 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBD21704A GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xBD21704A EQ PUSH2 0xD8 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0xFB JUMPI DUP1 PUSH4 0xC6A5026A EQ PUSH2 0x103 JUMPI DUP1 PUSH4 0xCDCA1753 EQ PUSH2 0x116 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x11C17848 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2F80BB1D EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0x90793EA8 EQ PUSH2 0xC3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B91 JUMP JUMPDEST PUSH2 0x129 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAA PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B2B JUMP JUMPDEST PUSH2 0x2E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBA SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1EAC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCB PUSH2 0x4DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBA SWAP2 SWAP1 PUSH2 0x1DEF JUMP JUMPDEST PUSH2 0xEB PUSH2 0xE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C49 JUMP JUMPDEST PUSH2 0x4FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBA SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1F54 JUMP JUMPDEST PUSH2 0xCB PUSH2 0x731 JUMP JUMPDEST PUSH2 0xEB PUSH2 0x111 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C49 JUMP JUMPDEST PUSH2 0x755 JUMP JUMPDEST PUSH2 0xAA PUSH2 0x124 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B2B JUMP JUMPDEST PUSH2 0x910 JUMP JUMPDEST PUSH1 0x0 DUP4 SGT DUP1 PUSH2 0x138 JUMPI POP PUSH1 0x0 DUP3 SGT JUMPDEST PUSH2 0x141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x14F DUP5 PUSH2 0xAE8 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x181 PUSH32 0x0 DUP5 DUP5 DUP5 PUSH2 0xB19 JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP10 SGT PUSH2 0x1C7 JUMPI DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT DUP9 DUP11 PUSH1 0x0 SUB PUSH2 0x1FC JUMP JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT DUP10 DUP10 PUSH1 0x0 SUB JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 PUSH2 0x20F DUP8 DUP8 DUP8 PUSH2 0xB38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x292 SWAP2 SWAP1 PUSH2 0x1C6B JUMP JUMPDEST POP POP POP POP POP SWAP2 POP SWAP2 POP DUP6 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x40 MLOAD DUP5 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 REVERT JUMPDEST PUSH1 0x0 SLOAD ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 SLOAD DUP5 EQ PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP6 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x2F5 DUP7 PUSH2 0xB76 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x30B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x335 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP PUSH2 0x341 DUP7 PUSH2 0xB76 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x357 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x381 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x395 DUP11 PUSH2 0xAE8 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x418 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP16 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x4FF JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP3 DUP12 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x42D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 DUP11 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x474 JUMPI INVALID JUMPDEST PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP12 POP SWAP7 DUP3 ADD SWAP7 PUSH1 0x1 SWAP1 SWAP7 ADD SWAP6 DUP12 SWAP3 PUSH2 0x4A1 DUP15 PUSH2 0xBA5 JUMP JUMPDEST ISZERO PUSH2 0x4B6 JUMPI PUSH2 0x4AF DUP15 PUSH2 0xBAD JUMP JUMPDEST SWAP14 POP PUSH2 0x4C6 JUMP JUMPDEST DUP13 SWAP12 POP POP POP POP POP POP POP POP POP PUSH2 0x4D2 JUMP JUMPDEST POP POP POP POP POP POP POP PUSH2 0x387 JUMP JUMPDEST SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP1 DUP5 AND LT SWAP3 DUP5 SWAP3 PUSH2 0x53D SWAP3 SWAP1 PUSH2 0xB38 JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0x80 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 EQ ISZERO PUSH2 0x56B JUMPI PUSH1 0x40 DUP8 ADD MLOAD PUSH1 0x0 SSTORE JUMPDEST PUSH1 0x0 GAS SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 ADDRESS DUP6 PUSH2 0x59B DUP13 PUSH1 0x40 ADD MLOAD PUSH2 0xBE8 JUMP JUMPDEST PUSH1 0x0 SUB DUP13 PUSH1 0x80 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 EQ PUSH2 0x5CA JUMPI DUP13 PUSH1 0x80 ADD MLOAD PUSH2 0x5F0 JUMP JUMPDEST DUP8 PUSH2 0x5E9 JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x5F0 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP14 PUSH1 0x20 ADD MLOAD DUP15 PUSH1 0x60 ADD MLOAD DUP16 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x611 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1D89 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x640 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1E10 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x6A7 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x6A4 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1B6E JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x724 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x6D5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x6DA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP GAS DUP3 SUB SWAP5 POP DUP9 PUSH1 0x80 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 EQ ISZERO PUSH2 0x708 JUMPI PUSH1 0x0 DUP1 SSTORE JUMPDEST PUSH2 0x713 DUP2 DUP5 DUP8 PUSH2 0xC1A JUMP JUMPDEST SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP POP POP POP POP PUSH2 0x72A JUMP JUMPDEST POP POP POP POP POP JUMPDEST SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP1 DUP5 AND LT SWAP3 DUP5 SWAP3 PUSH2 0x793 SWAP3 SWAP1 PUSH2 0xB38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 GAS SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 ADDRESS DUP6 PUSH2 0x7C5 DUP13 PUSH1 0x40 ADD MLOAD PUSH2 0xBE8 JUMP JUMPDEST PUSH1 0x80 DUP14 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x7EF JUMPI DUP13 PUSH1 0x80 ADD MLOAD PUSH2 0x815 JUMP JUMPDEST DUP8 PUSH2 0x80E JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x815 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP14 PUSH1 0x0 ADD MLOAD DUP15 PUSH1 0x60 ADD MLOAD DUP16 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x836 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1D89 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x865 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1E10 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x87E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x8CC JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x8C9 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1B6E JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x724 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x8FA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x8FF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP GAS DUP3 SUB SWAP5 POP PUSH2 0x713 DUP2 DUP5 DUP8 PUSH2 0xC1A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x920 DUP7 PUSH2 0xB76 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x936 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x960 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP PUSH2 0x96C DUP7 PUSH2 0xB76 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x982 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x9AC JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x9C0 DUP11 PUSH2 0xAE8 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0xA43 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP16 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x755 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP3 DUP12 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0xA58 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 DUP11 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0xA9F JUMPI INVALID JUMPDEST PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP12 POP SWAP7 DUP3 ADD SWAP7 PUSH1 0x1 SWAP1 SWAP7 ADD SWAP6 DUP12 SWAP3 PUSH2 0xACC DUP15 PUSH2 0xBA5 JUMP JUMPDEST ISZERO PUSH2 0x4B6 JUMPI PUSH2 0xADA DUP15 PUSH2 0xBAD JUMP JUMPDEST SWAP14 POP POP POP POP POP POP POP POP PUSH2 0x9B2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0xAF6 DUP5 DUP3 PUSH2 0xCEE JUMP JUMPDEST SWAP3 POP PUSH2 0xB03 DUP5 PUSH1 0x14 PUSH2 0xDEE JUMP JUMPDEST SWAP1 POP PUSH2 0xB10 DUP5 PUSH1 0x17 PUSH2 0xCEE JUMP JUMPDEST SWAP2 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB2F DUP6 PUSH2 0xB2A DUP7 DUP7 DUP7 PUSH2 0xEDE JUMP JUMPDEST PUSH2 0xF5B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB6E PUSH32 0x0 PUSH2 0xB69 DUP7 DUP7 DUP7 PUSH2 0xEDE JUMP JUMPDEST PUSH2 0xF8B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x17 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC SWAP1 SWAP2 ADD DIV JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST MLOAD PUSH1 0x42 GT ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH2 0xBE2 SWAP1 DUP4 SWAP1 PUSH1 0x17 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 ADD PUSH2 0x10C1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 LT PUSH2 0xC16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC7D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCA1 SWAP2 SWAP1 PUSH2 0x1C6B JUMP JUMPDEST POP SWAP4 SWAP7 POP PUSH2 0xCB6 SWAP5 POP DUP14 SWAP4 POP PUSH2 0x12A8 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 SWAP8 POP SWAP6 POP SWAP1 POP PUSH2 0xCDE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND DUP4 DUP4 PUSH2 0x1369 JUMP JUMPDEST SWAP4 POP DUP7 SWAP3 POP POP POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x14 ADD LT ISZERO PUSH2 0xD62 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F416464726573735F6F766572666C6F770000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x14 ADD DUP4 MLOAD LT ISZERO PUSH2 0xDD5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F416464726573735F6F75744F66426F756E64730000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH13 0x1000000000000000000000000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x3 ADD LT ISZERO PUSH2 0xE62 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F55696E7432345F6F766572666C6F77000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 ADD DUP4 MLOAD LT ISZERO PUSH2 0xED5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F55696E7432345F6F75744F66426F756E6473000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x3 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH2 0xEE6 PUSH2 0x19FA JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0xF1E JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH3 0xFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF67 DUP4 DUP4 PUSH2 0xF8B JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0xBE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0xFCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 DUP6 ADD MSTORE SWAP4 SWAP1 SWAP2 AND DUP4 DUP6 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x80 DUP5 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 PUSH1 0xD5 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xF5 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP3 PUSH1 0x1F ADD LT ISZERO PUSH2 0x1135 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F766572666C6F77000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 DUP5 ADD LT ISZERO PUSH2 0x11A6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F766572666C6F77000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 ADD DUP5 MLOAD LT ISZERO PUSH2 0x1218 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F75744F66426F756E6473000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO DUP1 ISZERO PUSH2 0x1237 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x0 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x129F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F DUP5 AND DUP1 ISZERO PUSH1 0x20 MUL DUP2 DUP5 ADD ADD DUP6 DUP2 ADD DUP8 DUP4 ISZERO PUSH1 0x20 MUL DUP5 DUP12 ADD ADD ADD JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x1270 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x1258 JUMP JUMPDEST POP POP DUP6 DUP5 MSTORE PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x40 MSTORE POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x60 EQ PUSH2 0x1348 JUMPI PUSH1 0x44 DUP5 MLOAD LT ISZERO PUSH2 0x12FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12F2 SWAP1 PUSH2 0x1E75 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP5 ADD SWAP4 POP DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1315 SWAP2 SWAP1 PUSH2 0x1BDF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12F2 SWAP2 SWAP1 PUSH2 0x1E62 JUMP JUMPDEST DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x135C SWAP2 SWAP1 PUSH2 0x1D02 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x8 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13D1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP13 SWAP1 SIGNEXTEND DUP2 PUSH2 0x13F9 JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND SWAP1 SAR SWAP1 POP PUSH1 0x0 PUSH2 0x100 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x144C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1460 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1476 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x1488 JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x1493 JUMPI INVALID JUMPDEST SMOD SWAP1 POP PUSH1 0x0 PUSH1 0x8 DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14F4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x150A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x151C JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND SWAP1 SAR SWAP1 POP PUSH1 0x0 PUSH2 0x100 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x156F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1583 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1599 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP15 SWAP1 SIGNEXTEND DUP2 PUSH2 0x15AB JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x15B6 JUMPI INVALID JUMPDEST SMOD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL DUP16 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5339C296 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1617 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x162B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1641 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND GT DUP1 ISZERO PUSH2 0x16D4 JUMPI POP DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1692 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x16CE JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x16E5 JUMPI POP DUP12 PUSH1 0x2 SIGNEXTEND DUP14 PUSH1 0x2 SIGNEXTEND SGT JUMPDEST SWAP5 POP PUSH1 0x0 DUP4 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL DUP16 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5339C296 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1745 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1759 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x176F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND GT DUP1 ISZERO PUSH2 0x1802 JUMPI POP DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP15 SWAP1 SIGNEXTEND DUP2 PUSH2 0x17FC JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1813 JUMPI POP DUP12 PUSH1 0x2 SIGNEXTEND DUP14 PUSH1 0x2 SIGNEXTEND SLT JUMPDEST SWAP6 POP DUP2 PUSH1 0x1 SIGNEXTEND DUP5 PUSH1 0x1 SIGNEXTEND SLT DUP1 PUSH2 0x183F JUMPI POP DUP2 PUSH1 0x1 SIGNEXTEND DUP5 PUSH1 0x1 SIGNEXTEND EQ DUP1 ISZERO PUSH2 0x183F JUMPI POP DUP1 PUSH1 0xFF AND DUP4 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO PUSH2 0x1855 JUMPI DUP4 SWAP10 POP DUP3 SWAP8 POP DUP2 SWAP9 POP DUP1 SWAP7 POP PUSH2 0x1862 JUMP JUMPDEST DUP2 SWAP10 POP DUP1 SWAP8 POP DUP4 SWAP9 POP DUP3 SWAP7 POP JUMPDEST POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xFF DUP8 AND SHL SWAP2 POP POP JUMPDEST DUP6 PUSH1 0x1 SIGNEXTEND DUP8 PUSH1 0x1 SIGNEXTEND SGT PUSH2 0x1999 JUMPI DUP6 PUSH1 0x1 SIGNEXTEND DUP8 PUSH1 0x1 SIGNEXTEND EQ ISZERO PUSH2 0x18D3 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xFF DUP6 DUP2 SUB AND SHR AND JUMPDEST PUSH1 0x0 DUP2 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5339C296 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x192A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x193E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1954 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND SWAP1 POP PUSH2 0x1962 DUP2 PUSH2 0x19C1 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP9 SWAP1 SWAP9 ADD SWAP8 POP POP PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x188E JUMP JUMPDEST DUP2 ISZERO PUSH2 0x19A6 JUMPI PUSH1 0x1 DUP9 SUB SWAP8 POP JUMPDEST DUP3 ISZERO PUSH2 0x19B3 JUMPI PUSH1 0x1 DUP9 SUB SWAP8 POP JUMPDEST POP POP POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 ISZERO PUSH2 0xBE2 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD SWAP1 SWAP3 AND SWAP2 PUSH1 0x1 ADD PUSH2 0x19C5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1A2A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1A3D PUSH2 0x1A38 DUP3 PUSH2 0x1FAF JUMP JUMPDEST PUSH2 0x1F8B JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1A51 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0xBA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A8E JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1AAB JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP1 POP DUP1 DUP3 CALLDATALOAD PUSH2 0x1ABC DUP2 PUSH2 0x201F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1ACC DUP2 PUSH2 0x201F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1AF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x1B02 PUSH1 0x80 DUP5 ADD PUSH2 0x1B0E JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xBA0 DUP2 PUSH2 0x201F JUMP JUMPDEST DUP1 MLOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xBA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1B3D JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1B53 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1B5F DUP6 DUP3 DUP7 ADD PUSH2 0x1A1A JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1B80 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1BA5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1BC9 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1BD5 DUP7 DUP3 DUP8 ADD PUSH2 0x1A1A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BF0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C06 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x1C16 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1C24 PUSH2 0x1A38 DUP3 PUSH2 0x1FAF JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x1C38 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0xB2F DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1FEF JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C5A JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1C64 DUP4 DUP4 PUSH2 0x1A7D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x1C85 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP8 MLOAD PUSH2 0x1C90 DUP2 PUSH2 0x201F JUMP JUMPDEST SWAP7 POP PUSH2 0x1C9E PUSH1 0x20 DUP10 ADD PUSH2 0x1A6B JUMP JUMPDEST SWAP6 POP PUSH2 0x1CAC PUSH1 0x40 DUP10 ADD PUSH2 0x1B19 JUMP JUMPDEST SWAP5 POP PUSH2 0x1CBA PUSH1 0x60 DUP10 ADD PUSH2 0x1B19 JUMP JUMPDEST SWAP4 POP PUSH2 0x1CC8 PUSH1 0x80 DUP10 ADD PUSH2 0x1B19 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1CDD JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0xC0 DUP10 ADD MLOAD SWAP1 SWAP3 POP DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1CF2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1D16 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x1D28 DUP2 PUSH2 0x201F JUMP JUMPDEST SWAP2 POP PUSH2 0x1D36 PUSH1 0x40 DUP6 ADD PUSH2 0x1A6B JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1D57 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1FEF JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SWAP4 DUP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0xE8 SWAP4 SWAP1 SWAP4 SHL PUSH32 0xFFFFFF0000000000000000000000000000000000000000000000000000000000 AND PUSH1 0x14 DUP3 ADD MSTORE SWAP3 SHL AND PUSH1 0x17 DUP3 ADD MSTORE PUSH1 0x2B ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND DUP4 MSTORE DUP7 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE DUP6 PUSH1 0x40 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x60 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x1E57 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1D3F JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1C64 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1D3F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x556E6578706563746564206572726F7200000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD DUP7 DUP4 MSTORE PUSH1 0x20 PUSH1 0x80 DUP2 DUP6 ADD MSTORE DUP2 DUP8 MLOAD DUP1 DUP5 MSTORE PUSH1 0xA0 DUP7 ADD SWAP2 POP DUP3 DUP10 ADD SWAP4 POP DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1F02 JUMPI DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1ED0 JUMP JUMPDEST POP POP DUP5 DUP2 SUB PUSH1 0x40 DUP7 ADD MSTORE DUP7 MLOAD DUP1 DUP3 MSTORE SWAP1 DUP3 ADD SWAP3 POP DUP2 DUP8 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1F3E JUMPI DUP3 MLOAD PUSH4 0xFFFFFFFF AND DUP6 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1F1C JUMP JUMPDEST POP POP POP POP PUSH1 0x60 SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1FA7 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1FC3 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x200A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1FF2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2019 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2041 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"1269:9165:77:-:0;;;1591:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;520:18:50;;;;;;;;548:12;;;;;1269:9165:77;;14:179:115;95:13;;-1:-1:-1;;;;;137:31:115;;127:42;;117:2;;183:1;180;173:12;117:2;76:117;;;:::o;198:307::-;;;338:2;326:9;317:7;313:23;309:32;306:2;;;359:6;351;344:22;306:2;387:42;419:9;387:42;:::i;:::-;377:52;;448:51;495:2;484:9;480:18;448:51;:::i;:::-;438:61;;296:209;;;;;:::o;:::-;1269:9165:77;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10703:115","statements":[{"nodeType":"YulBlock","src":"6:3:115","statements":[]},{"body":{"nodeType":"YulBlock","src":"68:431:115","statements":[{"body":{"nodeType":"YulBlock","src":"117:24:115","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"126:5:115"},{"name":"array","nodeType":"YulIdentifier","src":"133:5:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"119:6:115"},"nodeType":"YulFunctionCall","src":"119:20:115"},"nodeType":"YulExpressionStatement","src":"119:20:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"96:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"104:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"92:3:115"},"nodeType":"YulFunctionCall","src":"92:17:115"},{"name":"end","nodeType":"YulIdentifier","src":"111:3:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"88:3:115"},"nodeType":"YulFunctionCall","src":"88:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"81:6:115"},"nodeType":"YulFunctionCall","src":"81:35:115"},"nodeType":"YulIf","src":"78:2:115"},{"nodeType":"YulVariableDeclaration","src":"150:30:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"173:6:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"160:12:115"},"nodeType":"YulFunctionCall","src":"160:20:115"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"154:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"189:64:115","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"249:2:115"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"219:29:115"},"nodeType":"YulFunctionCall","src":"219:33:115"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"204:14:115"},"nodeType":"YulFunctionCall","src":"204:49:115"},"variables":[{"name":"array_1","nodeType":"YulTypedName","src":"193:7:115","type":""}]},{"expression":{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"269:7:115"},{"name":"_1","nodeType":"YulIdentifier","src":"278:2:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"262:6:115"},"nodeType":"YulFunctionCall","src":"262:19:115"},"nodeType":"YulExpressionStatement","src":"262:19:115"},{"body":{"nodeType":"YulBlock","src":"329:24:115","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"338:5:115"},{"name":"array","nodeType":"YulIdentifier","src":"345:5:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"331:6:115"},"nodeType":"YulFunctionCall","src":"331:20:115"},"nodeType":"YulExpressionStatement","src":"331:20:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"304:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"312:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"300:3:115"},"nodeType":"YulFunctionCall","src":"300:15:115"},{"kind":"number","nodeType":"YulLiteral","src":"317:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"296:3:115"},"nodeType":"YulFunctionCall","src":"296:26:115"},{"name":"end","nodeType":"YulIdentifier","src":"324:3:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"293:2:115"},"nodeType":"YulFunctionCall","src":"293:35:115"},"nodeType":"YulIf","src":"290:2:115"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"379:7:115"},{"kind":"number","nodeType":"YulLiteral","src":"388:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"375:3:115"},"nodeType":"YulFunctionCall","src":"375:18:115"},{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"399:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"407:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"395:3:115"},"nodeType":"YulFunctionCall","src":"395:17:115"},{"name":"_1","nodeType":"YulIdentifier","src":"414:2:115"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"362:12:115"},"nodeType":"YulFunctionCall","src":"362:55:115"},"nodeType":"YulExpressionStatement","src":"362:55:115"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"441:7:115"},{"name":"_1","nodeType":"YulIdentifier","src":"450:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"437:3:115"},"nodeType":"YulFunctionCall","src":"437:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"455:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"433:3:115"},"nodeType":"YulFunctionCall","src":"433:27:115"},{"name":"array","nodeType":"YulIdentifier","src":"462:5:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"426:6:115"},"nodeType":"YulFunctionCall","src":"426:42:115"},"nodeType":"YulExpressionStatement","src":"426:42:115"},{"nodeType":"YulAssignment","src":"477:16:115","value":{"name":"array_1","nodeType":"YulIdentifier","src":"486:7:115"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"477:5:115"}]}]},"name":"abi_decode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"42:6:115","type":""},{"name":"end","nodeType":"YulTypedName","src":"50:3:115","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"58:5:115","type":""}],"src":"14:485:115"},{"body":{"nodeType":"YulBlock","src":"564:106:115","statements":[{"nodeType":"YulAssignment","src":"574:22:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"589:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"583:5:115"},"nodeType":"YulFunctionCall","src":"583:13:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"574:5:115"}]},{"body":{"nodeType":"YulBlock","src":"648:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"657:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"660:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"650:6:115"},"nodeType":"YulFunctionCall","src":"650:12:115"},"nodeType":"YulExpressionStatement","src":"650:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"618:5:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"636:1:115","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"639:5:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"625:10:115"},"nodeType":"YulFunctionCall","src":"625:20:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"615:2:115"},"nodeType":"YulFunctionCall","src":"615:31:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"608:6:115"},"nodeType":"YulFunctionCall","src":"608:39:115"},"nodeType":"YulIf","src":"605:2:115"}]},"name":"abi_decode_t_int24_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"543:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"554:5:115","type":""}],"src":"504:166:115"},{"body":{"nodeType":"YulBlock","src":"762:868:115","statements":[{"body":{"nodeType":"YulBlock","src":"806:24:115","statements":[{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"815:5:115"},{"name":"value","nodeType":"YulIdentifier","src":"822:5:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"808:6:115"},"nodeType":"YulFunctionCall","src":"808:20:115"},"nodeType":"YulExpressionStatement","src":"808:20:115"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"783:3:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"788:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"779:3:115"},"nodeType":"YulFunctionCall","src":"779:19:115"},{"kind":"number","nodeType":"YulLiteral","src":"800:4:115","type":"","value":"0xa0"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"775:3:115"},"nodeType":"YulFunctionCall","src":"775:30:115"},"nodeType":"YulIf","src":"772:2:115"},{"nodeType":"YulVariableDeclaration","src":"839:23:115","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"859:2:115","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"853:5:115"},"nodeType":"YulFunctionCall","src":"853:9:115"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"843:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"871:35:115","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"893:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"901:4:115","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"889:3:115"},"nodeType":"YulFunctionCall","src":"889:17:115"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"875:10:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"981:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"983:7:115"},"nodeType":"YulFunctionCall","src":"983:9:115"},"nodeType":"YulExpressionStatement","src":"983:9:115"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"924:10:115"},{"kind":"number","nodeType":"YulLiteral","src":"936:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"921:2:115"},"nodeType":"YulFunctionCall","src":"921:34:115"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"960:10:115"},{"name":"memPtr","nodeType":"YulIdentifier","src":"972:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"957:2:115"},"nodeType":"YulFunctionCall","src":"957:22:115"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"918:2:115"},"nodeType":"YulFunctionCall","src":"918:62:115"},"nodeType":"YulIf","src":"915:2:115"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1010:2:115","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1014:10:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1003:6:115"},"nodeType":"YulFunctionCall","src":"1003:22:115"},"nodeType":"YulExpressionStatement","src":"1003:22:115"},{"nodeType":"YulAssignment","src":"1034:15:115","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1043:6:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1034:5:115"}]},{"nodeType":"YulVariableDeclaration","src":"1058:38:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1086:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1073:12:115"},"nodeType":"YulFunctionCall","src":"1073:23:115"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1062:7:115","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1132:7:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1105:26:115"},"nodeType":"YulFunctionCall","src":"1105:35:115"},"nodeType":"YulExpressionStatement","src":"1105:35:115"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1156:6:115"},{"name":"value_1","nodeType":"YulIdentifier","src":"1164:7:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:115"},"nodeType":"YulFunctionCall","src":"1149:23:115"},"nodeType":"YulExpressionStatement","src":"1149:23:115"},{"nodeType":"YulVariableDeclaration","src":"1181:47:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1213:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1224:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1209:3:115"},"nodeType":"YulFunctionCall","src":"1209:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1196:12:115"},"nodeType":"YulFunctionCall","src":"1196:32:115"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"1185:7:115","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"1264:7:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1237:26:115"},"nodeType":"YulFunctionCall","src":"1237:35:115"},"nodeType":"YulExpressionStatement","src":"1237:35:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1292:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"1300:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1288:3:115"},"nodeType":"YulFunctionCall","src":"1288:15:115"},{"name":"value_2","nodeType":"YulIdentifier","src":"1305:7:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1281:6:115"},"nodeType":"YulFunctionCall","src":"1281:32:115"},"nodeType":"YulExpressionStatement","src":"1281:32:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1333:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"1341:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1329:3:115"},"nodeType":"YulFunctionCall","src":"1329:15:115"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1363:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1374:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1359:3:115"},"nodeType":"YulFunctionCall","src":"1359:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1346:12:115"},"nodeType":"YulFunctionCall","src":"1346:32:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1322:6:115"},"nodeType":"YulFunctionCall","src":"1322:57:115"},"nodeType":"YulExpressionStatement","src":"1322:57:115"},{"nodeType":"YulVariableDeclaration","src":"1388:47:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1420:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1431:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1416:3:115"},"nodeType":"YulFunctionCall","src":"1416:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1403:12:115"},"nodeType":"YulFunctionCall","src":"1403:32:115"},"variables":[{"name":"value_3","nodeType":"YulTypedName","src":"1392:7:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"1491:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1500:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1503:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1493:6:115"},"nodeType":"YulFunctionCall","src":"1493:12:115"},"nodeType":"YulExpressionStatement","src":"1493:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value_3","nodeType":"YulIdentifier","src":"1457:7:115"},{"arguments":[{"name":"value_3","nodeType":"YulIdentifier","src":"1470:7:115"},{"kind":"number","nodeType":"YulLiteral","src":"1479:8:115","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1466:3:115"},"nodeType":"YulFunctionCall","src":"1466:22:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1454:2:115"},"nodeType":"YulFunctionCall","src":"1454:35:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1447:6:115"},"nodeType":"YulFunctionCall","src":"1447:43:115"},"nodeType":"YulIf","src":"1444:2:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1527:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"1535:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1523:3:115"},"nodeType":"YulFunctionCall","src":"1523:15:115"},{"name":"value_3","nodeType":"YulIdentifier","src":"1540:7:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1516:6:115"},"nodeType":"YulFunctionCall","src":"1516:32:115"},"nodeType":"YulExpressionStatement","src":"1516:32:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1568:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"1576:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1564:3:115"},"nodeType":"YulFunctionCall","src":"1564:16:115"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1607:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1618:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1603:3:115"},"nodeType":"YulFunctionCall","src":"1603:19:115"}],"functionName":{"name":"abi_decode_t_uint160","nodeType":"YulIdentifier","src":"1582:20:115"},"nodeType":"YulFunctionCall","src":"1582:41:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1557:6:115"},"nodeType":"YulFunctionCall","src":"1557:67:115"},"nodeType":"YulExpressionStatement","src":"1557:67:115"}]},"name":"abi_decode_t_struct$_QuoteExactInputSingleParams","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"733:9:115","type":""},{"name":"end","nodeType":"YulTypedName","src":"744:3:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"752:5:115","type":""}],"src":"675:955:115"},{"body":{"nodeType":"YulBlock","src":"1686:87:115","statements":[{"nodeType":"YulAssignment","src":"1696:29:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1718:6:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1705:12:115"},"nodeType":"YulFunctionCall","src":"1705:20:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1696:5:115"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1761:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1734:26:115"},"nodeType":"YulFunctionCall","src":"1734:33:115"},"nodeType":"YulExpressionStatement","src":"1734:33:115"}]},"name":"abi_decode_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1665:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1676:5:115","type":""}],"src":"1635:138:115"},{"body":{"nodeType":"YulBlock","src":"1839:104:115","statements":[{"nodeType":"YulAssignment","src":"1849:22:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1864:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1858:5:115"},"nodeType":"YulFunctionCall","src":"1858:13:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1849:5:115"}]},{"body":{"nodeType":"YulBlock","src":"1921:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1930:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1933:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1923:6:115"},"nodeType":"YulFunctionCall","src":"1923:12:115"},"nodeType":"YulExpressionStatement","src":"1923:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1893:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1904:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"1911:6:115","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1900:3:115"},"nodeType":"YulFunctionCall","src":"1900:18:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1890:2:115"},"nodeType":"YulFunctionCall","src":"1890:29:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1883:6:115"},"nodeType":"YulFunctionCall","src":"1883:37:115"},"nodeType":"YulIf","src":"1880:2:115"}]},"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1818:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1829:5:115","type":""}],"src":"1778:165:115"},{"body":{"nodeType":"YulBlock","src":"2044:314:115","statements":[{"body":{"nodeType":"YulBlock","src":"2090:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2099:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2107:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2092:6:115"},"nodeType":"YulFunctionCall","src":"2092:22:115"},"nodeType":"YulExpressionStatement","src":"2092:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2065:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"2074:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2061:3:115"},"nodeType":"YulFunctionCall","src":"2061:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"2086:2:115","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2057:3:115"},"nodeType":"YulFunctionCall","src":"2057:32:115"},"nodeType":"YulIf","src":"2054:2:115"},{"nodeType":"YulVariableDeclaration","src":"2125:37:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2152:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2139:12:115"},"nodeType":"YulFunctionCall","src":"2139:23:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2129:6:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"2205:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2214:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2222:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2207:6:115"},"nodeType":"YulFunctionCall","src":"2207:22:115"},"nodeType":"YulExpressionStatement","src":"2207:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2177:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"2185:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2174:2:115"},"nodeType":"YulFunctionCall","src":"2174:30:115"},"nodeType":"YulIf","src":"2171:2:115"},{"nodeType":"YulAssignment","src":"2240:61:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2273:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"2284:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2269:3:115"},"nodeType":"YulFunctionCall","src":"2269:22:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2293:7:115"}],"functionName":{"name":"abi_decode_t_bytes","nodeType":"YulIdentifier","src":"2250:18:115"},"nodeType":"YulFunctionCall","src":"2250:51:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2240:6:115"}]},{"nodeType":"YulAssignment","src":"2310:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2337:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2348:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2333:3:115"},"nodeType":"YulFunctionCall","src":"2333:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2320:12:115"},"nodeType":"YulFunctionCall","src":"2320:32:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2310:6:115"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptrt_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2002:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2013:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2025:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2033:6:115","type":""}],"src":"1948:410:115"},{"body":{"nodeType":"YulBlock","src":"2459:157:115","statements":[{"body":{"nodeType":"YulBlock","src":"2505:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2514:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2522:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2507:6:115"},"nodeType":"YulFunctionCall","src":"2507:22:115"},"nodeType":"YulExpressionStatement","src":"2507:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2480:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"2489:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2476:3:115"},"nodeType":"YulFunctionCall","src":"2476:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"2501:2:115","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2472:3:115"},"nodeType":"YulFunctionCall","src":"2472:32:115"},"nodeType":"YulIf","src":"2469:2:115"},{"nodeType":"YulAssignment","src":"2540:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2556:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2550:5:115"},"nodeType":"YulFunctionCall","src":"2550:16:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2540:6:115"}]},{"nodeType":"YulAssignment","src":"2575:35:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2595:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2606:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2591:3:115"},"nodeType":"YulFunctionCall","src":"2591:18:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2585:5:115"},"nodeType":"YulFunctionCall","src":"2585:25:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2575:6:115"}]}]},"name":"abi_decode_tuple_t_int256t_int256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2417:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2428:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2440:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2448:6:115","type":""}],"src":"2363:253:115"},{"body":{"nodeType":"YulBlock","src":"2732:365:115","statements":[{"body":{"nodeType":"YulBlock","src":"2778:26:115","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"2787:6:115"},{"name":"value2","nodeType":"YulIdentifier","src":"2795:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2780:6:115"},"nodeType":"YulFunctionCall","src":"2780:22:115"},"nodeType":"YulExpressionStatement","src":"2780:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2753:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"2762:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2749:3:115"},"nodeType":"YulFunctionCall","src":"2749:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"2774:2:115","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2745:3:115"},"nodeType":"YulFunctionCall","src":"2745:32:115"},"nodeType":"YulIf","src":"2742:2:115"},{"nodeType":"YulAssignment","src":"2813:33:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2836:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2823:12:115"},"nodeType":"YulFunctionCall","src":"2823:23:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2813:6:115"}]},{"nodeType":"YulAssignment","src":"2855:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2882:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2893:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2878:3:115"},"nodeType":"YulFunctionCall","src":"2878:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2865:12:115"},"nodeType":"YulFunctionCall","src":"2865:32:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2855:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"2906:46:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2937:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2948:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2933:3:115"},"nodeType":"YulFunctionCall","src":"2933:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2920:12:115"},"nodeType":"YulFunctionCall","src":"2920:32:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2910:6:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"2995:26:115","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"3004:6:115"},{"name":"value2","nodeType":"YulIdentifier","src":"3012:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2997:6:115"},"nodeType":"YulFunctionCall","src":"2997:22:115"},"nodeType":"YulExpressionStatement","src":"2997:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2967:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"2975:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2964:2:115"},"nodeType":"YulFunctionCall","src":"2964:30:115"},"nodeType":"YulIf","src":"2961:2:115"},{"nodeType":"YulAssignment","src":"3030:61:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3063:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"3074:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3059:3:115"},"nodeType":"YulFunctionCall","src":"3059:22:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3083:7:115"}],"functionName":{"name":"abi_decode_t_bytes","nodeType":"YulIdentifier","src":"3040:18:115"},"nodeType":"YulFunctionCall","src":"3040:51:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3030:6:115"}]}]},"name":"abi_decode_tuple_t_int256t_int256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2682:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2693:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2705:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2713:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2721:6:115","type":""}],"src":"2621:476:115"},{"body":{"nodeType":"YulBlock","src":"3193:585:115","statements":[{"body":{"nodeType":"YulBlock","src":"3239:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3248:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3256:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3241:6:115"},"nodeType":"YulFunctionCall","src":"3241:22:115"},"nodeType":"YulExpressionStatement","src":"3241:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3214:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"3223:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3210:3:115"},"nodeType":"YulFunctionCall","src":"3210:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"3235:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3206:3:115"},"nodeType":"YulFunctionCall","src":"3206:32:115"},"nodeType":"YulIf","src":"3203:2:115"},{"nodeType":"YulVariableDeclaration","src":"3274:30:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3294:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3288:5:115"},"nodeType":"YulFunctionCall","src":"3288:16:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3278:6:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"3347:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3356:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3364:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3349:6:115"},"nodeType":"YulFunctionCall","src":"3349:22:115"},"nodeType":"YulExpressionStatement","src":"3349:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3319:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"3327:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3316:2:115"},"nodeType":"YulFunctionCall","src":"3316:30:115"},"nodeType":"YulIf","src":"3313:2:115"},{"nodeType":"YulVariableDeclaration","src":"3382:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3396:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"3407:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3392:3:115"},"nodeType":"YulFunctionCall","src":"3392:22:115"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3386:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"3462:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3471:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3479:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3464:6:115"},"nodeType":"YulFunctionCall","src":"3464:22:115"},"nodeType":"YulExpressionStatement","src":"3464:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3441:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"3445:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3437:3:115"},"nodeType":"YulFunctionCall","src":"3437:13:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3452:7:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3433:3:115"},"nodeType":"YulFunctionCall","src":"3433:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3426:6:115"},"nodeType":"YulFunctionCall","src":"3426:35:115"},"nodeType":"YulIf","src":"3423:2:115"},{"nodeType":"YulVariableDeclaration","src":"3497:19:115","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3513:2:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3507:5:115"},"nodeType":"YulFunctionCall","src":"3507:9:115"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3501:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3525:62:115","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3583:2:115"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"3553:29:115"},"nodeType":"YulFunctionCall","src":"3553:33:115"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"3538:14:115"},"nodeType":"YulFunctionCall","src":"3538:49:115"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"3529:5:115","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3603:5:115"},{"name":"_2","nodeType":"YulIdentifier","src":"3610:2:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3596:6:115"},"nodeType":"YulFunctionCall","src":"3596:17:115"},"nodeType":"YulExpressionStatement","src":"3596:17:115"},{"body":{"nodeType":"YulBlock","src":"3659:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3668:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3676:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3661:6:115"},"nodeType":"YulFunctionCall","src":"3661:22:115"},"nodeType":"YulExpressionStatement","src":"3661:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3636:2:115"},{"name":"_2","nodeType":"YulIdentifier","src":"3640:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3632:3:115"},"nodeType":"YulFunctionCall","src":"3632:11:115"},{"kind":"number","nodeType":"YulLiteral","src":"3645:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3628:3:115"},"nodeType":"YulFunctionCall","src":"3628:20:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3650:7:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3625:2:115"},"nodeType":"YulFunctionCall","src":"3625:33:115"},"nodeType":"YulIf","src":"3622:2:115"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3720:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"3724:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3716:3:115"},"nodeType":"YulFunctionCall","src":"3716:11:115"},{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3733:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"3740:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3729:3:115"},"nodeType":"YulFunctionCall","src":"3729:14:115"},{"name":"_2","nodeType":"YulIdentifier","src":"3745:2:115"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"3694:21:115"},"nodeType":"YulFunctionCall","src":"3694:54:115"},"nodeType":"YulExpressionStatement","src":"3694:54:115"},{"nodeType":"YulAssignment","src":"3757:15:115","value":{"name":"array","nodeType":"YulIdentifier","src":"3767:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3757:6:115"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3159:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3170:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3182:6:115","type":""}],"src":"3102:676:115"},{"body":{"nodeType":"YulBlock","src":"3898:166:115","statements":[{"body":{"nodeType":"YulBlock","src":"3945:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3954:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3962:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3947:6:115"},"nodeType":"YulFunctionCall","src":"3947:22:115"},"nodeType":"YulExpressionStatement","src":"3947:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3919:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"3928:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3915:3:115"},"nodeType":"YulFunctionCall","src":"3915:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"3940:3:115","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3911:3:115"},"nodeType":"YulFunctionCall","src":"3911:33:115"},"nodeType":"YulIf","src":"3908:2:115"},{"nodeType":"YulAssignment","src":"3980:78:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4039:9:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4050:7:115"}],"functionName":{"name":"abi_decode_t_struct$_QuoteExactInputSingleParams","nodeType":"YulIdentifier","src":"3990:48:115"},"nodeType":"YulFunctionCall","src":"3990:68:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3980:6:115"}]}]},"name":"abi_decode_tuple_t_struct$_QuoteExactInputSingleParams_$9919_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3864:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3875:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3887:6:115","type":""}],"src":"3783:281:115"},{"body":{"nodeType":"YulBlock","src":"4185:166:115","statements":[{"body":{"nodeType":"YulBlock","src":"4232:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4241:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"4249:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4234:6:115"},"nodeType":"YulFunctionCall","src":"4234:22:115"},"nodeType":"YulExpressionStatement","src":"4234:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4206:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"4215:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4202:3:115"},"nodeType":"YulFunctionCall","src":"4202:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"4227:3:115","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4198:3:115"},"nodeType":"YulFunctionCall","src":"4198:33:115"},"nodeType":"YulIf","src":"4195:2:115"},{"nodeType":"YulAssignment","src":"4267:78:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4326:9:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4337:7:115"}],"functionName":{"name":"abi_decode_t_struct$_QuoteExactInputSingleParams","nodeType":"YulIdentifier","src":"4277:48:115"},"nodeType":"YulFunctionCall","src":"4277:68:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4267:6:115"}]}]},"name":"abi_decode_tuple_t_struct$_QuoteExactOutputSingleParams_$9962_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4151:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4162:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4174:6:115","type":""}],"src":"4069:282:115"},{"body":{"nodeType":"YulBlock","src":"4529:772:115","statements":[{"body":{"nodeType":"YulBlock","src":"4576:26:115","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"4585:6:115"},{"name":"value4","nodeType":"YulIdentifier","src":"4593:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4578:6:115"},"nodeType":"YulFunctionCall","src":"4578:22:115"},"nodeType":"YulExpressionStatement","src":"4578:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4550:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"4559:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4546:3:115"},"nodeType":"YulFunctionCall","src":"4546:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"4571:3:115","type":"","value":"224"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4542:3:115"},"nodeType":"YulFunctionCall","src":"4542:33:115"},"nodeType":"YulIf","src":"4539:2:115"},{"nodeType":"YulVariableDeclaration","src":"4611:29:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4630:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4624:5:115"},"nodeType":"YulFunctionCall","src":"4624:16:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4615:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4676:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4649:26:115"},"nodeType":"YulFunctionCall","src":"4649:33:115"},"nodeType":"YulExpressionStatement","src":"4649:33:115"},{"nodeType":"YulAssignment","src":"4691:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"4701:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4691:6:115"}]},{"nodeType":"YulAssignment","src":"4715:59:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4759:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4770:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4755:3:115"},"nodeType":"YulFunctionCall","src":"4755:18:115"}],"functionName":{"name":"abi_decode_t_int24_fromMemory","nodeType":"YulIdentifier","src":"4725:29:115"},"nodeType":"YulFunctionCall","src":"4725:49:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4715:6:115"}]},{"nodeType":"YulAssignment","src":"4783:60:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4828:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4839:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4824:3:115"},"nodeType":"YulFunctionCall","src":"4824:18:115"}],"functionName":{"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulIdentifier","src":"4793:30:115"},"nodeType":"YulFunctionCall","src":"4793:50:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4783:6:115"}]},{"nodeType":"YulAssignment","src":"4852:60:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4897:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4908:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4893:3:115"},"nodeType":"YulFunctionCall","src":"4893:18:115"}],"functionName":{"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulIdentifier","src":"4862:30:115"},"nodeType":"YulFunctionCall","src":"4862:50:115"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4852:6:115"}]},{"nodeType":"YulAssignment","src":"4921:61:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4966:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4977:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4962:3:115"},"nodeType":"YulFunctionCall","src":"4962:19:115"}],"functionName":{"name":"abi_decode_t_uint16_fromMemory","nodeType":"YulIdentifier","src":"4931:30:115"},"nodeType":"YulFunctionCall","src":"4931:51:115"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"4921:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"4991:41:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5016:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5027:3:115","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5012:3:115"},"nodeType":"YulFunctionCall","src":"5012:19:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5006:5:115"},"nodeType":"YulFunctionCall","src":"5006:26:115"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"4995:7:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"5084:26:115","statements":[{"expression":{"arguments":[{"name":"value5","nodeType":"YulIdentifier","src":"5093:6:115"},{"name":"value5","nodeType":"YulIdentifier","src":"5101:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5086:6:115"},"nodeType":"YulFunctionCall","src":"5086:22:115"},"nodeType":"YulExpressionStatement","src":"5086:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"5054:7:115"},{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"5067:7:115"},{"kind":"number","nodeType":"YulLiteral","src":"5076:4:115","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5063:3:115"},"nodeType":"YulFunctionCall","src":"5063:18:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5051:2:115"},"nodeType":"YulFunctionCall","src":"5051:31:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5044:6:115"},"nodeType":"YulFunctionCall","src":"5044:39:115"},"nodeType":"YulIf","src":"5041:2:115"},{"nodeType":"YulAssignment","src":"5119:17:115","value":{"name":"value_1","nodeType":"YulIdentifier","src":"5129:7:115"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"5119:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"5145:41:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5170:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5181:3:115","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5166:3:115"},"nodeType":"YulFunctionCall","src":"5166:19:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5160:5:115"},"nodeType":"YulFunctionCall","src":"5160:26:115"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"5149:7:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"5243:26:115","statements":[{"expression":{"arguments":[{"name":"value6","nodeType":"YulIdentifier","src":"5252:6:115"},{"name":"value6","nodeType":"YulIdentifier","src":"5260:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5245:6:115"},"nodeType":"YulFunctionCall","src":"5245:22:115"},"nodeType":"YulExpressionStatement","src":"5245:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"5208:7:115"},{"arguments":[{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"5231:7:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5224:6:115"},"nodeType":"YulFunctionCall","src":"5224:15:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5217:6:115"},"nodeType":"YulFunctionCall","src":"5217:23:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5205:2:115"},"nodeType":"YulFunctionCall","src":"5205:36:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5198:6:115"},"nodeType":"YulFunctionCall","src":"5198:44:115"},"nodeType":"YulIf","src":"5195:2:115"},{"nodeType":"YulAssignment","src":"5278:17:115","value":{"name":"value_2","nodeType":"YulIdentifier","src":"5288:7:115"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"5278:6:115"}]}]},"name":"abi_decode_tuple_t_uint160t_int24t_uint16t_uint16t_uint16t_uint8t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4447:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4458:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4470:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4478:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4486:6:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4494:6:115","type":""},{"name":"value4","nodeType":"YulTypedName","src":"4502:6:115","type":""},{"name":"value5","nodeType":"YulTypedName","src":"4510:6:115","type":""},{"name":"value6","nodeType":"YulTypedName","src":"4518:6:115","type":""}],"src":"4356:945:115"},{"body":{"nodeType":"YulBlock","src":"5419:294:115","statements":[{"body":{"nodeType":"YulBlock","src":"5465:26:115","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"5474:6:115"},{"name":"value2","nodeType":"YulIdentifier","src":"5482:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5467:6:115"},"nodeType":"YulFunctionCall","src":"5467:22:115"},"nodeType":"YulExpressionStatement","src":"5467:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5440:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"5449:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5436:3:115"},"nodeType":"YulFunctionCall","src":"5436:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"5461:2:115","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5432:3:115"},"nodeType":"YulFunctionCall","src":"5432:32:115"},"nodeType":"YulIf","src":"5429:2:115"},{"nodeType":"YulAssignment","src":"5500:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5516:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5510:5:115"},"nodeType":"YulFunctionCall","src":"5510:16:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5500:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"5535:38:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5558:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5569:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5554:3:115"},"nodeType":"YulFunctionCall","src":"5554:18:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5548:5:115"},"nodeType":"YulFunctionCall","src":"5548:25:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"5539:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5609:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"5582:26:115"},"nodeType":"YulFunctionCall","src":"5582:33:115"},"nodeType":"YulExpressionStatement","src":"5582:33:115"},{"nodeType":"YulAssignment","src":"5624:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"5634:5:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5624:6:115"}]},{"nodeType":"YulAssignment","src":"5648:59:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5692:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5703:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5688:3:115"},"nodeType":"YulFunctionCall","src":"5688:18:115"}],"functionName":{"name":"abi_decode_t_int24_fromMemory","nodeType":"YulIdentifier","src":"5658:29:115"},"nodeType":"YulFunctionCall","src":"5658:49:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5648:6:115"}]}]},"name":"abi_decode_tuple_t_uint256t_uint160t_int24_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5369:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5380:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5392:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5400:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5408:6:115","type":""}],"src":"5306:407:115"},{"body":{"nodeType":"YulBlock","src":"5769:267:115","statements":[{"nodeType":"YulVariableDeclaration","src":"5779:26:115","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5799:5:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5793:5:115"},"nodeType":"YulFunctionCall","src":"5793:12:115"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5783:6:115","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5821:3:115"},{"name":"length","nodeType":"YulIdentifier","src":"5826:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5814:6:115"},"nodeType":"YulFunctionCall","src":"5814:19:115"},"nodeType":"YulExpressionStatement","src":"5814:19:115"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5868:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"5875:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5864:3:115"},"nodeType":"YulFunctionCall","src":"5864:16:115"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5886:3:115"},{"kind":"number","nodeType":"YulLiteral","src":"5891:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5882:3:115"},"nodeType":"YulFunctionCall","src":"5882:14:115"},{"name":"length","nodeType":"YulIdentifier","src":"5898:6:115"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"5842:21:115"},"nodeType":"YulFunctionCall","src":"5842:63:115"},"nodeType":"YulExpressionStatement","src":"5842:63:115"},{"nodeType":"YulAssignment","src":"5914:116:115","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5929:3:115"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5942:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"5950:2:115","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5938:3:115"},"nodeType":"YulFunctionCall","src":"5938:15:115"},{"kind":"number","nodeType":"YulLiteral","src":"5955:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5934:3:115"},"nodeType":"YulFunctionCall","src":"5934:88:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5925:3:115"},"nodeType":"YulFunctionCall","src":"5925:98:115"},{"kind":"number","nodeType":"YulLiteral","src":"6025:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5921:3:115"},"nodeType":"YulFunctionCall","src":"5921:109:115"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5914:3:115"}]}]},"name":"abi_encode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5746:5:115","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5753:3:115","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5761:3:115","type":""}],"src":"5718:318:115"},{"body":{"nodeType":"YulBlock","src":"6214:341:115","statements":[{"nodeType":"YulVariableDeclaration","src":"6224:76:115","value":{"kind":"number","nodeType":"YulLiteral","src":"6234:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6228:2:115","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6316:3:115"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6329:2:115","type":"","value":"96"},{"name":"value0","nodeType":"YulIdentifier","src":"6333:6:115"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6325:3:115"},"nodeType":"YulFunctionCall","src":"6325:15:115"},{"name":"_1","nodeType":"YulIdentifier","src":"6342:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6321:3:115"},"nodeType":"YulFunctionCall","src":"6321:24:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6309:6:115"},"nodeType":"YulFunctionCall","src":"6309:37:115"},"nodeType":"YulExpressionStatement","src":"6309:37:115"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6366:3:115"},{"kind":"number","nodeType":"YulLiteral","src":"6371:2:115","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6362:3:115"},"nodeType":"YulFunctionCall","src":"6362:12:115"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6384:3:115","type":"","value":"232"},{"name":"value1","nodeType":"YulIdentifier","src":"6389:6:115"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6380:3:115"},"nodeType":"YulFunctionCall","src":"6380:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"6398:66:115","type":"","value":"0xffffff0000000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6376:3:115"},"nodeType":"YulFunctionCall","src":"6376:89:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6355:6:115"},"nodeType":"YulFunctionCall","src":"6355:111:115"},"nodeType":"YulExpressionStatement","src":"6355:111:115"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6486:3:115"},{"kind":"number","nodeType":"YulLiteral","src":"6491:2:115","type":"","value":"23"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6482:3:115"},"nodeType":"YulFunctionCall","src":"6482:12:115"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6504:2:115","type":"","value":"96"},{"name":"value2","nodeType":"YulIdentifier","src":"6508:6:115"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6500:3:115"},"nodeType":"YulFunctionCall","src":"6500:15:115"},{"name":"_1","nodeType":"YulIdentifier","src":"6517:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6496:3:115"},"nodeType":"YulFunctionCall","src":"6496:24:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6475:6:115"},"nodeType":"YulFunctionCall","src":"6475:46:115"},"nodeType":"YulExpressionStatement","src":"6475:46:115"},{"nodeType":"YulAssignment","src":"6530:19:115","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6541:3:115"},{"kind":"number","nodeType":"YulLiteral","src":"6546:2:115","type":"","value":"43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6537:3:115"},"nodeType":"YulFunctionCall","src":"6537:12:115"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6530:3:115"}]}]},"name":"abi_encode_tuple_packed_t_address_t_uint24_t_address__to_t_address_t_uint24_t_address__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"6174:3:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6179:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6187:6:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6195:6:115","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6206:3:115","type":""}],"src":"6041:514:115"},{"body":{"nodeType":"YulBlock","src":"6661:125:115","statements":[{"nodeType":"YulAssignment","src":"6671:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6683:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"6694:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6679:3:115"},"nodeType":"YulFunctionCall","src":"6679:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6671:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6713:9:115"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6728:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6736:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6724:3:115"},"nodeType":"YulFunctionCall","src":"6724:55:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6706:6:115"},"nodeType":"YulFunctionCall","src":"6706:74:115"},"nodeType":"YulExpressionStatement","src":"6706:74:115"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6630:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6641:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6652:4:115","type":""}],"src":"6560:226:115"},{"body":{"nodeType":"YulBlock","src":"7014:370:115","statements":[{"nodeType":"YulVariableDeclaration","src":"7024:52:115","value":{"kind":"number","nodeType":"YulLiteral","src":"7034:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7028:2:115","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7092:9:115"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7107:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"7115:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7103:3:115"},"nodeType":"YulFunctionCall","src":"7103:15:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7085:6:115"},"nodeType":"YulFunctionCall","src":"7085:34:115"},"nodeType":"YulExpressionStatement","src":"7085:34:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7139:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"7150:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7135:3:115"},"nodeType":"YulFunctionCall","src":"7135:18:115"},{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7169:6:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7162:6:115"},"nodeType":"YulFunctionCall","src":"7162:14:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7155:6:115"},"nodeType":"YulFunctionCall","src":"7155:22:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7128:6:115"},"nodeType":"YulFunctionCall","src":"7128:50:115"},"nodeType":"YulExpressionStatement","src":"7128:50:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7198:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"7209:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7194:3:115"},"nodeType":"YulFunctionCall","src":"7194:18:115"},{"name":"value2","nodeType":"YulIdentifier","src":"7214:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7187:6:115"},"nodeType":"YulFunctionCall","src":"7187:34:115"},"nodeType":"YulExpressionStatement","src":"7187:34:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7241:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"7252:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7237:3:115"},"nodeType":"YulFunctionCall","src":"7237:18:115"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"7261:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"7269:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7257:3:115"},"nodeType":"YulFunctionCall","src":"7257:15:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7230:6:115"},"nodeType":"YulFunctionCall","src":"7230:43:115"},"nodeType":"YulExpressionStatement","src":"7230:43:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7293:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"7304:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7289:3:115"},"nodeType":"YulFunctionCall","src":"7289:19:115"},{"kind":"number","nodeType":"YulLiteral","src":"7310:3:115","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7282:6:115"},"nodeType":"YulFunctionCall","src":"7282:32:115"},"nodeType":"YulExpressionStatement","src":"7282:32:115"},{"nodeType":"YulAssignment","src":"7323:55:115","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"7350:6:115"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7362:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"7373:3:115","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7358:3:115"},"nodeType":"YulFunctionCall","src":"7358:19:115"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"7331:18:115"},"nodeType":"YulFunctionCall","src":"7331:47:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7323:4:115"}]}]},"name":"abi_encode_tuple_t_address_t_bool_t_int256_t_uint160_t_bytes_memory_ptr__to_t_address_t_bool_t_int256_t_uint160_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6951:9:115","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6962:6:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6970:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6978:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6986:6:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6994:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7005:4:115","type":""}],"src":"6791:593:115"},{"body":{"nodeType":"YulBlock","src":"7510:100:115","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7527:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"7538:2:115","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7520:6:115"},"nodeType":"YulFunctionCall","src":"7520:21:115"},"nodeType":"YulExpressionStatement","src":"7520:21:115"},{"nodeType":"YulAssignment","src":"7550:54:115","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7577:6:115"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7589:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"7600:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7585:3:115"},"nodeType":"YulFunctionCall","src":"7585:18:115"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"7558:18:115"},"nodeType":"YulFunctionCall","src":"7558:46:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7550:4:115"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7479:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7490:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7501:4:115","type":""}],"src":"7389:221:115"},{"body":{"nodeType":"YulBlock","src":"7789:166:115","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7806:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"7817:2:115","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7799:6:115"},"nodeType":"YulFunctionCall","src":"7799:21:115"},"nodeType":"YulExpressionStatement","src":"7799:21:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7840:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"7851:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7836:3:115"},"nodeType":"YulFunctionCall","src":"7836:18:115"},{"kind":"number","nodeType":"YulLiteral","src":"7856:2:115","type":"","value":"16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7829:6:115"},"nodeType":"YulFunctionCall","src":"7829:30:115"},"nodeType":"YulExpressionStatement","src":"7829:30:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7879:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"7890:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7875:3:115"},"nodeType":"YulFunctionCall","src":"7875:18:115"},{"kind":"string","nodeType":"YulLiteral","src":"7895:18:115","type":"","value":"Unexpected error"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7868:6:115"},"nodeType":"YulFunctionCall","src":"7868:46:115"},"nodeType":"YulExpressionStatement","src":"7868:46:115"},{"nodeType":"YulAssignment","src":"7923:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7935:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"7946:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7931:3:115"},"nodeType":"YulFunctionCall","src":"7931:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7923:4:115"}]}]},"name":"abi_encode_tuple_t_stringliteral_9b951eb3fb3742579e39d15610bb1800acf108358e69a1cabf56fc48cbe86cff__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7766:9:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7780:4:115","type":""}],"src":"7615:340:115"},{"body":{"nodeType":"YulBlock","src":"8243:1082:115","statements":[{"nodeType":"YulVariableDeclaration","src":"8253:33:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8271:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"8282:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8267:3:115"},"nodeType":"YulFunctionCall","src":"8267:19:115"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"8257:6:115","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8302:9:115"},{"name":"value0","nodeType":"YulIdentifier","src":"8313:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8295:6:115"},"nodeType":"YulFunctionCall","src":"8295:25:115"},"nodeType":"YulExpressionStatement","src":"8295:25:115"},{"nodeType":"YulVariableDeclaration","src":"8329:12:115","value":{"kind":"number","nodeType":"YulLiteral","src":"8339:2:115","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8333:2:115","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8361:9:115"},{"name":"_1","nodeType":"YulIdentifier","src":"8372:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8357:3:115"},"nodeType":"YulFunctionCall","src":"8357:18:115"},{"kind":"number","nodeType":"YulLiteral","src":"8377:3:115","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8350:6:115"},"nodeType":"YulFunctionCall","src":"8350:31:115"},"nodeType":"YulExpressionStatement","src":"8350:31:115"},{"nodeType":"YulVariableDeclaration","src":"8390:17:115","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"8401:6:115"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"8394:3:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8416:27:115","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8436:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8430:5:115"},"nodeType":"YulFunctionCall","src":"8430:13:115"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8420:6:115","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"8459:6:115"},{"name":"length","nodeType":"YulIdentifier","src":"8467:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8452:6:115"},"nodeType":"YulFunctionCall","src":"8452:22:115"},"nodeType":"YulExpressionStatement","src":"8452:22:115"},{"nodeType":"YulAssignment","src":"8483:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8494:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"8505:3:115","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8490:3:115"},"nodeType":"YulFunctionCall","src":"8490:19:115"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8483:3:115"}]},{"nodeType":"YulVariableDeclaration","src":"8518:29:115","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8536:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"8544:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8532:3:115"},"nodeType":"YulFunctionCall","src":"8532:15:115"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"8522:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8556:13:115","value":{"name":"tail","nodeType":"YulIdentifier","src":"8565:4:115"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"8560:1:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"8627:169:115","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8648:3:115"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8663:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8657:5:115"},"nodeType":"YulFunctionCall","src":"8657:13:115"},{"kind":"number","nodeType":"YulLiteral","src":"8672:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8653:3:115"},"nodeType":"YulFunctionCall","src":"8653:62:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8641:6:115"},"nodeType":"YulFunctionCall","src":"8641:75:115"},"nodeType":"YulExpressionStatement","src":"8641:75:115"},{"nodeType":"YulAssignment","src":"8729:19:115","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8740:3:115"},{"name":"_1","nodeType":"YulIdentifier","src":"8745:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8736:3:115"},"nodeType":"YulFunctionCall","src":"8736:12:115"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8729:3:115"}]},{"nodeType":"YulAssignment","src":"8761:25:115","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8775:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"8783:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8771:3:115"},"nodeType":"YulFunctionCall","src":"8771:15:115"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8761:6:115"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8589:1:115"},{"name":"length","nodeType":"YulIdentifier","src":"8592:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8586:2:115"},"nodeType":"YulFunctionCall","src":"8586:13:115"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"8600:18:115","statements":[{"nodeType":"YulAssignment","src":"8602:14:115","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8611:1:115"},{"kind":"number","nodeType":"YulLiteral","src":"8614:1:115","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8607:3:115"},"nodeType":"YulFunctionCall","src":"8607:9:115"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"8602:1:115"}]}]},"pre":{"nodeType":"YulBlock","src":"8582:3:115","statements":[]},"src":"8578:218:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8816:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"8827:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8812:3:115"},"nodeType":"YulFunctionCall","src":"8812:18:115"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8836:3:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"8841:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8832:3:115"},"nodeType":"YulFunctionCall","src":"8832:19:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8805:6:115"},"nodeType":"YulFunctionCall","src":"8805:47:115"},"nodeType":"YulExpressionStatement","src":"8805:47:115"},{"nodeType":"YulVariableDeclaration","src":"8861:16:115","value":{"name":"pos","nodeType":"YulIdentifier","src":"8874:3:115"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"8865:5:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8886:29:115","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"8908:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8902:5:115"},"nodeType":"YulFunctionCall","src":"8902:13:115"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"8890:8:115","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8931:3:115"},{"name":"length_1","nodeType":"YulIdentifier","src":"8936:8:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8924:6:115"},"nodeType":"YulFunctionCall","src":"8924:21:115"},"nodeType":"YulExpressionStatement","src":"8924:21:115"},{"nodeType":"YulAssignment","src":"8954:21:115","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8967:3:115"},{"name":"_1","nodeType":"YulIdentifier","src":"8972:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8963:3:115"},"nodeType":"YulFunctionCall","src":"8963:12:115"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"8954:5:115"}]},{"nodeType":"YulVariableDeclaration","src":"8984:31:115","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"9004:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"9012:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9000:3:115"},"nodeType":"YulFunctionCall","src":"9000:15:115"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"8988:8:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9024:15:115","value":{"name":"tail","nodeType":"YulIdentifier","src":"9035:4:115"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"9028:3:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"9105:149:115","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"9126:5:115"},{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"9143:8:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9137:5:115"},"nodeType":"YulFunctionCall","src":"9137:15:115"},{"kind":"number","nodeType":"YulLiteral","src":"9154:10:115","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9133:3:115"},"nodeType":"YulFunctionCall","src":"9133:32:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9119:6:115"},"nodeType":"YulFunctionCall","src":"9119:47:115"},"nodeType":"YulExpressionStatement","src":"9119:47:115"},{"nodeType":"YulAssignment","src":"9179:23:115","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"9192:5:115"},{"name":"_1","nodeType":"YulIdentifier","src":"9199:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9188:3:115"},"nodeType":"YulFunctionCall","src":"9188:14:115"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"9179:5:115"}]},{"nodeType":"YulAssignment","src":"9215:29:115","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"9231:8:115"},{"name":"_1","nodeType":"YulIdentifier","src":"9241:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9227:3:115"},"nodeType":"YulFunctionCall","src":"9227:17:115"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"9215:8:115"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"9059:3:115"},{"name":"length_1","nodeType":"YulIdentifier","src":"9064:8:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9056:2:115"},"nodeType":"YulFunctionCall","src":"9056:17:115"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9074:22:115","statements":[{"nodeType":"YulAssignment","src":"9076:18:115","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"9087:3:115"},{"kind":"number","nodeType":"YulLiteral","src":"9092:1:115","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9083:3:115"},"nodeType":"YulFunctionCall","src":"9083:11:115"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"9076:3:115"}]}]},"pre":{"nodeType":"YulBlock","src":"9052:3:115","statements":[]},"src":"9048:206:115"},{"nodeType":"YulAssignment","src":"9263:13:115","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"9271:5:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9263:4:115"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9296:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9307:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9292:3:115"},"nodeType":"YulFunctionCall","src":"9292:18:115"},{"name":"value3","nodeType":"YulIdentifier","src":"9312:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9285:6:115"},"nodeType":"YulFunctionCall","src":"9285:34:115"},"nodeType":"YulExpressionStatement","src":"9285:34:115"}]},"name":"abi_encode_tuple_t_uint256_t_array$_t_uint160_$dyn_memory_ptr_t_array$_t_uint32_$dyn_memory_ptr_t_uint256__to_t_uint256_t_array$_t_uint160_$dyn_memory_ptr_t_array$_t_uint32_$dyn_memory_ptr_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8188:9:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8199:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8207:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8215:6:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8223:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8234:4:115","type":""}],"src":"7960:1365:115"},{"body":{"nodeType":"YulBlock","src":"9513:272:115","statements":[{"nodeType":"YulAssignment","src":"9523:27:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9535:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9546:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9531:3:115"},"nodeType":"YulFunctionCall","src":"9531:19:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9523:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9566:9:115"},{"name":"value0","nodeType":"YulIdentifier","src":"9577:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9559:6:115"},"nodeType":"YulFunctionCall","src":"9559:25:115"},"nodeType":"YulExpressionStatement","src":"9559:25:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9604:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9615:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9600:3:115"},"nodeType":"YulFunctionCall","src":"9600:18:115"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9624:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"9632:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9620:3:115"},"nodeType":"YulFunctionCall","src":"9620:55:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9593:6:115"},"nodeType":"YulFunctionCall","src":"9593:83:115"},"nodeType":"YulExpressionStatement","src":"9593:83:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9696:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9707:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9692:3:115"},"nodeType":"YulFunctionCall","src":"9692:18:115"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"9716:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"9724:10:115","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9712:3:115"},"nodeType":"YulFunctionCall","src":"9712:23:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9685:6:115"},"nodeType":"YulFunctionCall","src":"9685:51:115"},"nodeType":"YulExpressionStatement","src":"9685:51:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9756:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9767:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9752:3:115"},"nodeType":"YulFunctionCall","src":"9752:18:115"},{"name":"value3","nodeType":"YulIdentifier","src":"9772:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9745:6:115"},"nodeType":"YulFunctionCall","src":"9745:34:115"},"nodeType":"YulExpressionStatement","src":"9745:34:115"}]},"name":"abi_encode_tuple_t_uint256_t_uint160_t_uint32_t_uint256__to_t_uint256_t_uint160_t_uint32_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9458:9:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9469:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9477:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9485:6:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9493:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9504:4:115","type":""}],"src":"9330:455:115"},{"body":{"nodeType":"YulBlock","src":"9834:198:115","statements":[{"nodeType":"YulAssignment","src":"9844:19:115","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9860:2:115","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9854:5:115"},"nodeType":"YulFunctionCall","src":"9854:9:115"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9844:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"9872:35:115","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9894:6:115"},{"name":"size","nodeType":"YulIdentifier","src":"9902:4:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9890:3:115"},"nodeType":"YulFunctionCall","src":"9890:17:115"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"9876:10:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"9982:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"9984:7:115"},"nodeType":"YulFunctionCall","src":"9984:9:115"},"nodeType":"YulExpressionStatement","src":"9984:9:115"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"9925:10:115"},{"kind":"number","nodeType":"YulLiteral","src":"9937:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9922:2:115"},"nodeType":"YulFunctionCall","src":"9922:34:115"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"9961:10:115"},{"name":"memPtr","nodeType":"YulIdentifier","src":"9973:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9958:2:115"},"nodeType":"YulFunctionCall","src":"9958:22:115"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"9919:2:115"},"nodeType":"YulFunctionCall","src":"9919:62:115"},"nodeType":"YulIf","src":"9916:2:115"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10011:2:115","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"10015:10:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10004:6:115"},"nodeType":"YulFunctionCall","src":"10004:22:115"},"nodeType":"YulExpressionStatement","src":"10004:22:115"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"9814:4:115","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"9823:6:115","type":""}],"src":"9790:242:115"},{"body":{"nodeType":"YulBlock","src":"10096:181:115","statements":[{"body":{"nodeType":"YulBlock","src":"10140:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"10142:7:115"},"nodeType":"YulFunctionCall","src":"10142:9:115"},"nodeType":"YulExpressionStatement","src":"10142:9:115"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10112:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"10120:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10109:2:115"},"nodeType":"YulFunctionCall","src":"10109:30:115"},"nodeType":"YulIf","src":"10106:2:115"},{"nodeType":"YulAssignment","src":"10162:109:115","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10182:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"10190:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10178:3:115"},"nodeType":"YulFunctionCall","src":"10178:17:115"},{"kind":"number","nodeType":"YulLiteral","src":"10197:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10174:3:115"},"nodeType":"YulFunctionCall","src":"10174:90:115"},{"kind":"number","nodeType":"YulLiteral","src":"10266:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10170:3:115"},"nodeType":"YulFunctionCall","src":"10170:101:115"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"10162:4:115"}]}]},"name":"array_allocation_size_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"10076:6:115","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"10087:4:115","type":""}],"src":"10037:240:115"},{"body":{"nodeType":"YulBlock","src":"10335:205:115","statements":[{"nodeType":"YulVariableDeclaration","src":"10345:10:115","value":{"kind":"number","nodeType":"YulLiteral","src":"10354:1:115","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"10349:1:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"10414:63:115","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"10439:3:115"},{"name":"i","nodeType":"YulIdentifier","src":"10444:1:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10435:3:115"},"nodeType":"YulFunctionCall","src":"10435:11:115"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"10458:3:115"},{"name":"i","nodeType":"YulIdentifier","src":"10463:1:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10454:3:115"},"nodeType":"YulFunctionCall","src":"10454:11:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10448:5:115"},"nodeType":"YulFunctionCall","src":"10448:18:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10428:6:115"},"nodeType":"YulFunctionCall","src":"10428:39:115"},"nodeType":"YulExpressionStatement","src":"10428:39:115"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"10375:1:115"},{"name":"length","nodeType":"YulIdentifier","src":"10378:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10372:2:115"},"nodeType":"YulFunctionCall","src":"10372:13:115"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"10386:19:115","statements":[{"nodeType":"YulAssignment","src":"10388:15:115","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"10397:1:115"},{"kind":"number","nodeType":"YulLiteral","src":"10400:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10393:3:115"},"nodeType":"YulFunctionCall","src":"10393:10:115"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"10388:1:115"}]}]},"pre":{"nodeType":"YulBlock","src":"10368:3:115","statements":[]},"src":"10364:113:115"},{"body":{"nodeType":"YulBlock","src":"10503:31:115","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"10516:3:115"},{"name":"length","nodeType":"YulIdentifier","src":"10521:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10512:3:115"},"nodeType":"YulFunctionCall","src":"10512:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"10530:1:115","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10505:6:115"},"nodeType":"YulFunctionCall","src":"10505:27:115"},"nodeType":"YulExpressionStatement","src":"10505:27:115"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"10492:1:115"},{"name":"length","nodeType":"YulIdentifier","src":"10495:6:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10489:2:115"},"nodeType":"YulFunctionCall","src":"10489:13:115"},"nodeType":"YulIf","src":"10486:2:115"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"10313:3:115","type":""},{"name":"dst","nodeType":"YulTypedName","src":"10318:3:115","type":""},{"name":"length","nodeType":"YulTypedName","src":"10323:6:115","type":""}],"src":"10282:258:115"},{"body":{"nodeType":"YulBlock","src":"10592:109:115","statements":[{"body":{"nodeType":"YulBlock","src":"10679:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10688:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10691:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10681:6:115"},"nodeType":"YulFunctionCall","src":"10681:12:115"},"nodeType":"YulExpressionStatement","src":"10681:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10615:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10626:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"10633:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10622:3:115"},"nodeType":"YulFunctionCall","src":"10622:54:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"10612:2:115"},"nodeType":"YulFunctionCall","src":"10612:65:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10605:6:115"},"nodeType":"YulFunctionCall","src":"10605:73:115"},"nodeType":"YulIf","src":"10602:2:115"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10581:5:115","type":""}],"src":"10545:156:115"}]},"contents":"{\n    { }\n    function abi_decode_t_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        let array_1 := allocateMemory(array_allocation_size_t_bytes(_1))\n        mstore(array_1, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(array, array) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(array_1, _1), 0x20), array)\n        array := array_1\n    }\n    function abi_decode_t_int24_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, signextend(2, value))) { revert(0, 0) }\n    }\n    function abi_decode_t_struct$_QuoteExactInputSingleParams(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0xa0) { revert(value, value) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0xa0)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n        value := memPtr\n        let value_1 := calldataload(headStart)\n        validator_revert_t_address(value_1)\n        mstore(memPtr, value_1)\n        let value_2 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_2)\n        mstore(add(memPtr, 32), value_2)\n        mstore(add(memPtr, 64), calldataload(add(headStart, 64)))\n        let value_3 := calldataload(add(headStart, 96))\n        if iszero(eq(value_3, and(value_3, 0xffffff))) { revert(0, 0) }\n        mstore(add(memPtr, 96), value_3)\n        mstore(add(memPtr, 128), abi_decode_t_uint160(add(headStart, 128)))\n    }\n    function abi_decode_t_uint160(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_t_address(value)\n    }\n    function abi_decode_t_uint16_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        value0 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_int256t_int256_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_int256t_int256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(value2, value2) }\n        value2 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _2 := mload(_1)\n        let array := allocateMemory(array_allocation_size_t_bytes(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(value0, value0) }\n        copy_memory_to_memory(add(_1, 32), add(array, 32), _2)\n        value0 := array\n    }\n    function abi_decode_tuple_t_struct$_QuoteExactInputSingleParams_$9919_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value0, value0) }\n        value0 := abi_decode_t_struct$_QuoteExactInputSingleParams(headStart, dataEnd)\n    }\n    function abi_decode_tuple_t_struct$_QuoteExactOutputSingleParams_$9962_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value0, value0) }\n        value0 := abi_decode_t_struct$_QuoteExactInputSingleParams(headStart, dataEnd)\n    }\n    function abi_decode_tuple_t_uint160t_int24t_uint16t_uint16t_uint16t_uint8t_bool_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(value4, value4) }\n        let value := mload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := abi_decode_t_int24_fromMemory(add(headStart, 32))\n        value2 := abi_decode_t_uint16_fromMemory(add(headStart, 64))\n        value3 := abi_decode_t_uint16_fromMemory(add(headStart, 96))\n        value4 := abi_decode_t_uint16_fromMemory(add(headStart, 128))\n        let value_1 := mload(add(headStart, 160))\n        if iszero(eq(value_1, and(value_1, 0xff))) { revert(value5, value5) }\n        value5 := value_1\n        let value_2 := mload(add(headStart, 192))\n        if iszero(eq(value_2, iszero(iszero(value_2)))) { revert(value6, value6) }\n        value6 := value_2\n    }\n    function abi_decode_tuple_t_uint256t_uint160t_int24_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n        value0 := mload(headStart)\n        let value := mload(add(headStart, 32))\n        validator_revert_t_address(value)\n        value1 := value\n        value2 := abi_decode_t_int24_fromMemory(add(headStart, 64))\n    }\n    function abi_encode_t_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_packed_t_address_t_uint24_t_address__to_t_address_t_uint24_t_address__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000\n        mstore(pos, and(shl(96, value0), _1))\n        mstore(add(pos, 20), and(shl(232, value1), 0xffffff0000000000000000000000000000000000000000000000000000000000))\n        mstore(add(pos, 23), and(shl(96, value2), _1))\n        end := add(pos, 43)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_bool_t_int256_t_uint160_t_bytes_memory_ptr__to_t_address_t_bool_t_int256_t_uint160_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), iszero(iszero(value1)))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), 160)\n        tail := abi_encode_t_bytes(value4, add(headStart, 160))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_t_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_9b951eb3fb3742579e39d15610bb1800acf108358e69a1cabf56fc48cbe86cff__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"Unexpected error\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256_t_array$_t_uint160_$dyn_memory_ptr_t_array$_t_uint32_$dyn_memory_ptr_t_uint256__to_t_uint256_t_array$_t_uint160_$dyn_memory_ptr_t_array$_t_uint32_$dyn_memory_ptr_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let tail_1 := add(headStart, 128)\n        mstore(headStart, value0)\n        let _1 := 32\n        mstore(add(headStart, _1), 128)\n        let pos := tail_1\n        let length := mload(value1)\n        mstore(tail_1, length)\n        pos := add(headStart, 160)\n        let srcPtr := add(value1, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        mstore(add(headStart, 64), sub(pos, headStart))\n        let pos_1 := pos\n        let length_1 := mload(value2)\n        mstore(pos, length_1)\n        pos_1 := add(pos, _1)\n        let srcPtr_1 := add(value2, _1)\n        let i_1 := tail\n        for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n        {\n            mstore(pos_1, and(mload(srcPtr_1), 0xffffffff))\n            pos_1 := add(pos_1, _1)\n            srcPtr_1 := add(srcPtr_1, _1)\n        }\n        tail := pos_1\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_uint256_t_uint160_t_uint32_t_uint256__to_t_uint256_t_uint160_t_uint32_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 64), and(value2, 0xffffffff))\n        mstore(add(headStart, 96), value3)\n    }\n    function allocateMemory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, size)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_t_bytes(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        size := add(and(add(length, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function validator_revert_t_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n}","id":115,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"8379":[{"length":32,"start":346},{"length":32,"start":1843},{"length":32,"start":2879}],"8383":[{"length":32,"start":1245}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c8063bd21704a1161005b578063bd21704a146100d8578063c45a0155146100fb578063c6a5026a14610103578063cdca1753146101165761007d565b806311c17848146100825780632f80bb1d1461009757806390793ea8146100c3575b600080fd5b610095610090366004611b91565b610129565b005b6100aa6100a5366004611b2b565b6102e5565b6040516100ba9493929190611eac565b60405180910390f35b6100cb6104db565b6040516100ba9190611def565b6100eb6100e6366004611c49565b6104ff565b6040516100ba9493929190611f54565b6100cb610731565b6100eb610111366004611c49565b610755565b6100aa610124366004611b2b565b610910565b60008313806101385750600082135b61014157600080fd5b600080600061014f84610ae8565b9250925092506101817f0000000000000000000000000000000000000000000000000000000000000000848484610b19565b5060008060008089136101c7578573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610888a6000036101fc565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161089896000035b925092509250600061020f878787610b38565b90506000808273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561025a57600080fd5b505afa15801561026e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102929190611c6b565b50505050509150915085156102b857604051848152826020820152816040820152606081fd5b600054156102ce5760005484146102ce57600080fd5b604051858152826020820152816040820152606081fd5b600060608060006102f586610b76565b67ffffffffffffffff8111801561030b57600080fd5b50604051908082528060200260200182016040528015610335578160200160208202803683370190505b50925061034186610b76565b67ffffffffffffffff8111801561035757600080fd5b50604051908082528060200260200182016040528015610381578160200160208202803683370190505b50915060005b60008060006103958a610ae8565b9250925092506000806000806104186040518060a001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018f81526020018762ffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152506104ff565b9350935093509350828b898151811061042d57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818a898151811061047457fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b926104a18e610ba5565b156104b6576104af8e610bad565b9d506104c6565b8c9b5050505050505050506104d2565b50505050505050610387565b92959194509250565b7f000000000000000000000000000000000000000000000000000000000000000081565b60208101518151606083015160009283928392839273ffffffffffffffffffffffffffffffffffffffff8082169084161092849261053d9290610b38565b9050866080015173ffffffffffffffffffffffffffffffffffffffff166000141561056b5760408701516000555b60005a90508173ffffffffffffffffffffffffffffffffffffffff1663128acb08308561059b8c60400151610be8565b6000038c6080015173ffffffffffffffffffffffffffffffffffffffff166000146105ca578c608001516105f0565b876105e95773fffd8963efd1fc6a506488495d951d5263988d256105f0565b6401000276a45b8d602001518e606001518f6000015160405160200161061193929190611d89565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401610640959493929190611e10565b6040805180830381600087803b15801561065957600080fd5b505af19250505080156106a7575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526106a491810190611b6e565b60015b610724573d8080156106d5576040519150601f19603f3d011682016040523d82523d6000602084013e6106da565b606091505b505a82039450886080015173ffffffffffffffffffffffffffffffffffffffff166000141561070857600080555b610713818487610c1a565b97509750975097505050505061072a565b50505050505b9193509193565b7f000000000000000000000000000000000000000000000000000000000000000081565b60208101518151606083015160009283928392839273ffffffffffffffffffffffffffffffffffffffff808216908416109284926107939290610b38565b905060005a90508173ffffffffffffffffffffffffffffffffffffffff1663128acb0830856107c58c60400151610be8565b60808d015173ffffffffffffffffffffffffffffffffffffffff16156107ef578c60800151610815565b8761080e5773fffd8963efd1fc6a506488495d951d5263988d25610815565b6401000276a45b8d600001518e606001518f6020015160405160200161083693929190611d89565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401610865959493929190611e10565b6040805180830381600087803b15801561087e57600080fd5b505af19250505080156108cc575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108c991810190611b6e565b60015b610724573d8080156108fa576040519150601f19603f3d011682016040523d82523d6000602084013e6108ff565b606091505b505a82039450610713818487610c1a565b6000606080600061092086610b76565b67ffffffffffffffff8111801561093657600080fd5b50604051908082528060200260200182016040528015610960578160200160208202803683370190505b50925061096c86610b76565b67ffffffffffffffff8111801561098257600080fd5b506040519080825280602002602001820160405280156109ac578160200160208202803683370190505b50915060005b60008060006109c08a610ae8565b925092509250600080600080610a436040518060a001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018f81526020018762ffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815250610755565b9350935093509350828b8981518110610a5857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818a8981518110610a9f57fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b92610acc8e610ba5565b156104b657610ada8e610bad565b9d50505050505050506109b2565b60008080610af68482610cee565b9250610b03846014610dee565b9050610b10846017610cee565b91509193909250565b6000610b2f85610b2a868686610ede565b610f5b565b95945050505050565b6000610b6e7f0000000000000000000000000000000000000000000000000000000000000000610b69868686610ede565b610f8b565b949350505050565b805160177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec909101045b919050565b516042111590565b8051606090610be29083906017907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9016110c1565b92915050565b60007f80000000000000000000000000000000000000000000000000000000000000008210610c1657600080fd5b5090565b6000806000806000808773ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610c6957600080fd5b505afa158015610c7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca19190611c6b565b50939650610cb694508d93506112a892505050565b91975095509050610cde73ffffffffffffffffffffffffffffffffffffffff89168383611369565b9350869250505093509350935093565b600081826014011015610d6257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015610dd557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015610e6257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b8160030183511015610ed557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b610ee66119fa565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610f1e579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b6000610f678383610f8b565b90503373ffffffffffffffffffffffffffffffffffffffff821614610be257600080fd5b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610610fcd57600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0460d5808301919091528251808303909101815260f5909101909152805191012090565b60608182601f01101561113557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b8282840110156111a657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b8183018451101561121857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b606082158015611237576040519150600082526020820160405261129f565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611270578051835260209283019201611258565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b60008060008351606014611348576044845110156112fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f290611e75565b60405180910390fd5b600484019350838060200190518101906113159190611bdf565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f29190611e62565b8380602001905181019061135c9190611d02565b9250925092509193909250565b60008060008060008060008060088b73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113bd57600080fd5b505afa1580156113d1573d6000803e3d6000fd5b505050506040513d60208110156113e757600080fd5b5051600290810b908c900b816113f957fe5b0560020b901d905060006101008c73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561144c57600080fd5b505afa158015611460573d6000803e3d6000fd5b505050506040513d602081101561147657600080fd5b5051600290810b908d900b8161148857fe5b0560020b8161149357fe5b079050600060088d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114e057600080fd5b505afa1580156114f4573d6000803e3d6000fd5b505050506040513d602081101561150a57600080fd5b5051600290810b908d900b8161151c57fe5b0560020b901d905060006101008e73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561156f57600080fd5b505afa158015611583573d6000803e3d6000fd5b505050506040513d602081101561159957600080fd5b5051600290810b908e900b816115ab57fe5b0560020b816115b657fe5b07905060008160ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296856040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561161757600080fd5b505afa15801561162b573d6000803e3d6000fd5b505050506040513d602081101561164157600080fd5b5051161180156116d457508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561169257600080fd5b505afa1580156116a6573d6000803e3d6000fd5b505050506040513d60208110156116bc57600080fd5b5051600290810b908d900b816116ce57fe5b0760020b155b80156116e557508b60020b8d60020b135b945060008360ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296876040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561174557600080fd5b505afa158015611759573d6000803e3d6000fd5b505050506040513d602081101561176f57600080fd5b50511611801561180257508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156117c057600080fd5b505afa1580156117d4573d6000803e3d6000fd5b505050506040513d60208110156117ea57600080fd5b5051600290810b908e900b816117fc57fe5b0760020b155b801561181357508b60020b8d60020b125b95508160010b8460010b128061183f57508160010b8460010b14801561183f57508060ff168360ff1611155b1561185557839950829750819850809650611862565b8199508097508398508296505b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff87161b9150505b8560010b8760010b13611999578560010b8760010b14156118d3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff858103161c165b6000818c73ffffffffffffffffffffffffffffffffffffffff16635339c2968a6040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561192a57600080fd5b505afa15801561193e573d6000803e3d6000fd5b505050506040513d602081101561195457600080fd5b5051169050611962816119c1565b61ffff16989098019750506001909501947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61188e565b81156119a6576001880397505b82156119b3576001880397505b505050505050509392505050565b6000805b8215610be2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301909216916001016119c5565b604080516060810182526000808252602082018190529181019190915290565b600082601f830112611a2a578081fd5b8135611a3d611a3882611faf565b611f8b565b818152846020838601011115611a51578283fd5b816020850160208301379081016020019190915292915050565b8051600281900b8114610ba057600080fd5b600060a08284031215611a8e578081fd5b60405160a0810181811067ffffffffffffffff82111715611aab57fe5b6040529050808235611abc8161201f565b81526020830135611acc8161201f565b602082015260408381013590820152606083013562ffffff81168114611af157600080fd5b6060820152611b0260808401611b0e565b60808201525092915050565b8035610ba08161201f565b805161ffff81168114610ba057600080fd5b60008060408385031215611b3d578182fd5b823567ffffffffffffffff811115611b53578283fd5b611b5f85828601611a1a565b95602094909401359450505050565b60008060408385031215611b80578182fd5b505080516020909101519092909150565b600080600060608486031215611ba5578081fd5b8335925060208401359150604084013567ffffffffffffffff811115611bc9578182fd5b611bd586828701611a1a565b9150509250925092565b600060208284031215611bf0578081fd5b815167ffffffffffffffff811115611c06578182fd5b8201601f81018413611c16578182fd5b8051611c24611a3882611faf565b818152856020838501011115611c38578384fd5b610b2f826020830160208601611fef565b600060a08284031215611c5a578081fd5b611c648383611a7d565b9392505050565b600080600080600080600060e0888a031215611c85578283fd5b8751611c908161201f565b9650611c9e60208901611a6b565b9550611cac60408901611b19565b9450611cba60608901611b19565b9350611cc860808901611b19565b925060a088015160ff81168114611cdd578283fd5b60c08901519092508015158114611cf2578182fd5b8091505092959891949750929550565b600080600060608486031215611d16578081fd5b835192506020840151611d288161201f565b9150611d3660408501611a6b565b90509250925092565b60008151808452611d57816020860160208601611fef565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a06080830152611e5760a0830184611d3f565b979650505050505050565b600060208252611c646020830184611d3f565b60208082526010908201527f556e6578706563746564206572726f7200000000000000000000000000000000604082015260600190565b600060808201868352602060808185015281875180845260a0860191508289019350845b81811015611f0257845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101611ed0565b505084810360408601528651808252908201925081870190845b81811015611f3e57825163ffffffff1685529383019391830191600101611f1c565b5050505060609290920192909252949350505050565b93845273ffffffffffffffffffffffffffffffffffffffff92909216602084015263ffffffff166040830152606082015260800190565b60405181810167ffffffffffffffff81118282101715611fa757fe5b604052919050565b600067ffffffffffffffff821115611fc357fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b8381101561200a578181015183820152602001611ff2565b83811115612019576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461204157600080fd5b5056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBD21704A GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xBD21704A EQ PUSH2 0xD8 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0xFB JUMPI DUP1 PUSH4 0xC6A5026A EQ PUSH2 0x103 JUMPI DUP1 PUSH4 0xCDCA1753 EQ PUSH2 0x116 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x11C17848 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2F80BB1D EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0x90793EA8 EQ PUSH2 0xC3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B91 JUMP JUMPDEST PUSH2 0x129 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAA PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B2B JUMP JUMPDEST PUSH2 0x2E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBA SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1EAC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCB PUSH2 0x4DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBA SWAP2 SWAP1 PUSH2 0x1DEF JUMP JUMPDEST PUSH2 0xEB PUSH2 0xE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C49 JUMP JUMPDEST PUSH2 0x4FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBA SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1F54 JUMP JUMPDEST PUSH2 0xCB PUSH2 0x731 JUMP JUMPDEST PUSH2 0xEB PUSH2 0x111 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C49 JUMP JUMPDEST PUSH2 0x755 JUMP JUMPDEST PUSH2 0xAA PUSH2 0x124 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B2B JUMP JUMPDEST PUSH2 0x910 JUMP JUMPDEST PUSH1 0x0 DUP4 SGT DUP1 PUSH2 0x138 JUMPI POP PUSH1 0x0 DUP3 SGT JUMPDEST PUSH2 0x141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x14F DUP5 PUSH2 0xAE8 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x181 PUSH32 0x0 DUP5 DUP5 DUP5 PUSH2 0xB19 JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP10 SGT PUSH2 0x1C7 JUMPI DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT DUP9 DUP11 PUSH1 0x0 SUB PUSH2 0x1FC JUMP JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT DUP10 DUP10 PUSH1 0x0 SUB JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 PUSH2 0x20F DUP8 DUP8 DUP8 PUSH2 0xB38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x292 SWAP2 SWAP1 PUSH2 0x1C6B JUMP JUMPDEST POP POP POP POP POP SWAP2 POP SWAP2 POP DUP6 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x40 MLOAD DUP5 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 REVERT JUMPDEST PUSH1 0x0 SLOAD ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 SLOAD DUP5 EQ PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP6 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x2F5 DUP7 PUSH2 0xB76 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x30B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x335 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP PUSH2 0x341 DUP7 PUSH2 0xB76 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x357 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x381 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x395 DUP11 PUSH2 0xAE8 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x418 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP16 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x4FF JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP3 DUP12 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x42D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 DUP11 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x474 JUMPI INVALID JUMPDEST PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP12 POP SWAP7 DUP3 ADD SWAP7 PUSH1 0x1 SWAP1 SWAP7 ADD SWAP6 DUP12 SWAP3 PUSH2 0x4A1 DUP15 PUSH2 0xBA5 JUMP JUMPDEST ISZERO PUSH2 0x4B6 JUMPI PUSH2 0x4AF DUP15 PUSH2 0xBAD JUMP JUMPDEST SWAP14 POP PUSH2 0x4C6 JUMP JUMPDEST DUP13 SWAP12 POP POP POP POP POP POP POP POP POP PUSH2 0x4D2 JUMP JUMPDEST POP POP POP POP POP POP POP PUSH2 0x387 JUMP JUMPDEST SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP1 DUP5 AND LT SWAP3 DUP5 SWAP3 PUSH2 0x53D SWAP3 SWAP1 PUSH2 0xB38 JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0x80 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 EQ ISZERO PUSH2 0x56B JUMPI PUSH1 0x40 DUP8 ADD MLOAD PUSH1 0x0 SSTORE JUMPDEST PUSH1 0x0 GAS SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 ADDRESS DUP6 PUSH2 0x59B DUP13 PUSH1 0x40 ADD MLOAD PUSH2 0xBE8 JUMP JUMPDEST PUSH1 0x0 SUB DUP13 PUSH1 0x80 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 EQ PUSH2 0x5CA JUMPI DUP13 PUSH1 0x80 ADD MLOAD PUSH2 0x5F0 JUMP JUMPDEST DUP8 PUSH2 0x5E9 JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x5F0 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP14 PUSH1 0x20 ADD MLOAD DUP15 PUSH1 0x60 ADD MLOAD DUP16 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x611 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1D89 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x640 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1E10 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x6A7 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x6A4 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1B6E JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x724 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x6D5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x6DA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP GAS DUP3 SUB SWAP5 POP DUP9 PUSH1 0x80 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 EQ ISZERO PUSH2 0x708 JUMPI PUSH1 0x0 DUP1 SSTORE JUMPDEST PUSH2 0x713 DUP2 DUP5 DUP8 PUSH2 0xC1A JUMP JUMPDEST SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP POP POP POP POP PUSH2 0x72A JUMP JUMPDEST POP POP POP POP POP JUMPDEST SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP1 DUP5 AND LT SWAP3 DUP5 SWAP3 PUSH2 0x793 SWAP3 SWAP1 PUSH2 0xB38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 GAS SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 ADDRESS DUP6 PUSH2 0x7C5 DUP13 PUSH1 0x40 ADD MLOAD PUSH2 0xBE8 JUMP JUMPDEST PUSH1 0x80 DUP14 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x7EF JUMPI DUP13 PUSH1 0x80 ADD MLOAD PUSH2 0x815 JUMP JUMPDEST DUP8 PUSH2 0x80E JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x815 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP14 PUSH1 0x0 ADD MLOAD DUP15 PUSH1 0x60 ADD MLOAD DUP16 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x836 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1D89 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x865 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1E10 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x87E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x8CC JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x8C9 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1B6E JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x724 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x8FA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x8FF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP GAS DUP3 SUB SWAP5 POP PUSH2 0x713 DUP2 DUP5 DUP8 PUSH2 0xC1A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x920 DUP7 PUSH2 0xB76 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x936 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x960 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP PUSH2 0x96C DUP7 PUSH2 0xB76 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x982 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x9AC JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x9C0 DUP11 PUSH2 0xAE8 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0xA43 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP16 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x755 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP3 DUP12 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0xA58 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 DUP11 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0xA9F JUMPI INVALID JUMPDEST PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP12 POP SWAP7 DUP3 ADD SWAP7 PUSH1 0x1 SWAP1 SWAP7 ADD SWAP6 DUP12 SWAP3 PUSH2 0xACC DUP15 PUSH2 0xBA5 JUMP JUMPDEST ISZERO PUSH2 0x4B6 JUMPI PUSH2 0xADA DUP15 PUSH2 0xBAD JUMP JUMPDEST SWAP14 POP POP POP POP POP POP POP POP PUSH2 0x9B2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0xAF6 DUP5 DUP3 PUSH2 0xCEE JUMP JUMPDEST SWAP3 POP PUSH2 0xB03 DUP5 PUSH1 0x14 PUSH2 0xDEE JUMP JUMPDEST SWAP1 POP PUSH2 0xB10 DUP5 PUSH1 0x17 PUSH2 0xCEE JUMP JUMPDEST SWAP2 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB2F DUP6 PUSH2 0xB2A DUP7 DUP7 DUP7 PUSH2 0xEDE JUMP JUMPDEST PUSH2 0xF5B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB6E PUSH32 0x0 PUSH2 0xB69 DUP7 DUP7 DUP7 PUSH2 0xEDE JUMP JUMPDEST PUSH2 0xF8B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x17 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC SWAP1 SWAP2 ADD DIV JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST MLOAD PUSH1 0x42 GT ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH2 0xBE2 SWAP1 DUP4 SWAP1 PUSH1 0x17 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 ADD PUSH2 0x10C1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 LT PUSH2 0xC16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC7D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCA1 SWAP2 SWAP1 PUSH2 0x1C6B JUMP JUMPDEST POP SWAP4 SWAP7 POP PUSH2 0xCB6 SWAP5 POP DUP14 SWAP4 POP PUSH2 0x12A8 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 SWAP8 POP SWAP6 POP SWAP1 POP PUSH2 0xCDE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND DUP4 DUP4 PUSH2 0x1369 JUMP JUMPDEST SWAP4 POP DUP7 SWAP3 POP POP POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x14 ADD LT ISZERO PUSH2 0xD62 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F416464726573735F6F766572666C6F770000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x14 ADD DUP4 MLOAD LT ISZERO PUSH2 0xDD5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F416464726573735F6F75744F66426F756E64730000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH13 0x1000000000000000000000000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x3 ADD LT ISZERO PUSH2 0xE62 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F55696E7432345F6F766572666C6F77000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 ADD DUP4 MLOAD LT ISZERO PUSH2 0xED5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F55696E7432345F6F75744F66426F756E6473000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x3 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH2 0xEE6 PUSH2 0x19FA JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0xF1E JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH3 0xFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF67 DUP4 DUP4 PUSH2 0xF8B JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0xBE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0xFCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 DUP6 ADD MSTORE SWAP4 SWAP1 SWAP2 AND DUP4 DUP6 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x80 DUP5 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 PUSH1 0xD5 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xF5 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP3 PUSH1 0x1F ADD LT ISZERO PUSH2 0x1135 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F766572666C6F77000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 DUP5 ADD LT ISZERO PUSH2 0x11A6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F766572666C6F77000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 ADD DUP5 MLOAD LT ISZERO PUSH2 0x1218 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F75744F66426F756E6473000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO DUP1 ISZERO PUSH2 0x1237 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x0 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x129F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F DUP5 AND DUP1 ISZERO PUSH1 0x20 MUL DUP2 DUP5 ADD ADD DUP6 DUP2 ADD DUP8 DUP4 ISZERO PUSH1 0x20 MUL DUP5 DUP12 ADD ADD ADD JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x1270 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x1258 JUMP JUMPDEST POP POP DUP6 DUP5 MSTORE PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x40 MSTORE POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x60 EQ PUSH2 0x1348 JUMPI PUSH1 0x44 DUP5 MLOAD LT ISZERO PUSH2 0x12FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12F2 SWAP1 PUSH2 0x1E75 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP5 ADD SWAP4 POP DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1315 SWAP2 SWAP1 PUSH2 0x1BDF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12F2 SWAP2 SWAP1 PUSH2 0x1E62 JUMP JUMPDEST DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x135C SWAP2 SWAP1 PUSH2 0x1D02 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x8 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13D1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP13 SWAP1 SIGNEXTEND DUP2 PUSH2 0x13F9 JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND SWAP1 SAR SWAP1 POP PUSH1 0x0 PUSH2 0x100 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x144C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1460 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1476 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x1488 JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x1493 JUMPI INVALID JUMPDEST SMOD SWAP1 POP PUSH1 0x0 PUSH1 0x8 DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14F4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x150A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x151C JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND SWAP1 SAR SWAP1 POP PUSH1 0x0 PUSH2 0x100 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x156F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1583 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1599 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP15 SWAP1 SIGNEXTEND DUP2 PUSH2 0x15AB JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x15B6 JUMPI INVALID JUMPDEST SMOD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL DUP16 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5339C296 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1617 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x162B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1641 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND GT DUP1 ISZERO PUSH2 0x16D4 JUMPI POP DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1692 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x16CE JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x16E5 JUMPI POP DUP12 PUSH1 0x2 SIGNEXTEND DUP14 PUSH1 0x2 SIGNEXTEND SGT JUMPDEST SWAP5 POP PUSH1 0x0 DUP4 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL DUP16 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5339C296 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1745 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1759 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x176F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND GT DUP1 ISZERO PUSH2 0x1802 JUMPI POP DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP15 SWAP1 SIGNEXTEND DUP2 PUSH2 0x17FC JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1813 JUMPI POP DUP12 PUSH1 0x2 SIGNEXTEND DUP14 PUSH1 0x2 SIGNEXTEND SLT JUMPDEST SWAP6 POP DUP2 PUSH1 0x1 SIGNEXTEND DUP5 PUSH1 0x1 SIGNEXTEND SLT DUP1 PUSH2 0x183F JUMPI POP DUP2 PUSH1 0x1 SIGNEXTEND DUP5 PUSH1 0x1 SIGNEXTEND EQ DUP1 ISZERO PUSH2 0x183F JUMPI POP DUP1 PUSH1 0xFF AND DUP4 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO PUSH2 0x1855 JUMPI DUP4 SWAP10 POP DUP3 SWAP8 POP DUP2 SWAP9 POP DUP1 SWAP7 POP PUSH2 0x1862 JUMP JUMPDEST DUP2 SWAP10 POP DUP1 SWAP8 POP DUP4 SWAP9 POP DUP3 SWAP7 POP JUMPDEST POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xFF DUP8 AND SHL SWAP2 POP POP JUMPDEST DUP6 PUSH1 0x1 SIGNEXTEND DUP8 PUSH1 0x1 SIGNEXTEND SGT PUSH2 0x1999 JUMPI DUP6 PUSH1 0x1 SIGNEXTEND DUP8 PUSH1 0x1 SIGNEXTEND EQ ISZERO PUSH2 0x18D3 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xFF DUP6 DUP2 SUB AND SHR AND JUMPDEST PUSH1 0x0 DUP2 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5339C296 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x192A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x193E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1954 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND SWAP1 POP PUSH2 0x1962 DUP2 PUSH2 0x19C1 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP9 SWAP1 SWAP9 ADD SWAP8 POP POP PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x188E JUMP JUMPDEST DUP2 ISZERO PUSH2 0x19A6 JUMPI PUSH1 0x1 DUP9 SUB SWAP8 POP JUMPDEST DUP3 ISZERO PUSH2 0x19B3 JUMPI PUSH1 0x1 DUP9 SUB SWAP8 POP JUMPDEST POP POP POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 ISZERO PUSH2 0xBE2 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD SWAP1 SWAP3 AND SWAP2 PUSH1 0x1 ADD PUSH2 0x19C5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1A2A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1A3D PUSH2 0x1A38 DUP3 PUSH2 0x1FAF JUMP JUMPDEST PUSH2 0x1F8B JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1A51 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0xBA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A8E JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1AAB JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP1 POP DUP1 DUP3 CALLDATALOAD PUSH2 0x1ABC DUP2 PUSH2 0x201F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1ACC DUP2 PUSH2 0x201F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1AF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x1B02 PUSH1 0x80 DUP5 ADD PUSH2 0x1B0E JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xBA0 DUP2 PUSH2 0x201F JUMP JUMPDEST DUP1 MLOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xBA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1B3D JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1B53 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1B5F DUP6 DUP3 DUP7 ADD PUSH2 0x1A1A JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1B80 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1BA5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1BC9 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1BD5 DUP7 DUP3 DUP8 ADD PUSH2 0x1A1A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BF0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C06 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x1C16 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1C24 PUSH2 0x1A38 DUP3 PUSH2 0x1FAF JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x1C38 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0xB2F DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1FEF JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C5A JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1C64 DUP4 DUP4 PUSH2 0x1A7D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x1C85 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP8 MLOAD PUSH2 0x1C90 DUP2 PUSH2 0x201F JUMP JUMPDEST SWAP7 POP PUSH2 0x1C9E PUSH1 0x20 DUP10 ADD PUSH2 0x1A6B JUMP JUMPDEST SWAP6 POP PUSH2 0x1CAC PUSH1 0x40 DUP10 ADD PUSH2 0x1B19 JUMP JUMPDEST SWAP5 POP PUSH2 0x1CBA PUSH1 0x60 DUP10 ADD PUSH2 0x1B19 JUMP JUMPDEST SWAP4 POP PUSH2 0x1CC8 PUSH1 0x80 DUP10 ADD PUSH2 0x1B19 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1CDD JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0xC0 DUP10 ADD MLOAD SWAP1 SWAP3 POP DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1CF2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1D16 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x1D28 DUP2 PUSH2 0x201F JUMP JUMPDEST SWAP2 POP PUSH2 0x1D36 PUSH1 0x40 DUP6 ADD PUSH2 0x1A6B JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1D57 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1FEF JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SWAP4 DUP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0xE8 SWAP4 SWAP1 SWAP4 SHL PUSH32 0xFFFFFF0000000000000000000000000000000000000000000000000000000000 AND PUSH1 0x14 DUP3 ADD MSTORE SWAP3 SHL AND PUSH1 0x17 DUP3 ADD MSTORE PUSH1 0x2B ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND DUP4 MSTORE DUP7 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE DUP6 PUSH1 0x40 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x60 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x1E57 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1D3F JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1C64 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1D3F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x556E6578706563746564206572726F7200000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD DUP7 DUP4 MSTORE PUSH1 0x20 PUSH1 0x80 DUP2 DUP6 ADD MSTORE DUP2 DUP8 MLOAD DUP1 DUP5 MSTORE PUSH1 0xA0 DUP7 ADD SWAP2 POP DUP3 DUP10 ADD SWAP4 POP DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1F02 JUMPI DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1ED0 JUMP JUMPDEST POP POP DUP5 DUP2 SUB PUSH1 0x40 DUP7 ADD MSTORE DUP7 MLOAD DUP1 DUP3 MSTORE SWAP1 DUP3 ADD SWAP3 POP DUP2 DUP8 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1F3E JUMPI DUP3 MLOAD PUSH4 0xFFFFFFFF AND DUP6 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1F1C JUMP JUMPDEST POP POP POP POP PUSH1 0x60 SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1FA7 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1FC3 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x200A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1FF2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2019 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2041 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"1269:9165:77:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1947:1551;;;;;;:::i;:::-;;:::i;:::-;;8728:1704;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;420:38:50;;;:::i;:::-;;;;;;;:::i;7393:1329:77:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;328:41:50:-;;;:::i;4621:1058:77:-;;;;;;:::i;:::-;;:::i;5685:1702::-;;;;;;:::i;:::-;;:::i;1947:1551::-;2093:1;2078:12;:16;:36;;;;2113:1;2098:12;:16;2078:36;2070:45;;;;;;2189:15;2206:16;2224:10;2238:22;:4;:20;:22::i;:::-;2188:72;;;;;;2270:66;2304:7;2313;2322:8;2332:3;2270:33;:66::i;:::-;;2348:17;2367:19;2388:22;2429:1;2414:12;:16;:180;;2539:7;2528:18;;:8;:18;;;2556:12;2580;2579:13;;2414:180;;;2456:8;2446:18;;:7;:18;;;2474:12;2498;2497:13;;2414:180;2347:247;;;;;;2605:17;2625:31;2633:7;2642:8;2652:3;2625:7;:31::i;:::-;2605:51;;2667:25;2694:15;2723:4;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2666:69;;;;;;;;;2750:12;2746:746;;;2822:4;2816:11;2856:14;2851:3;2844:27;2911:17;2904:4;2899:3;2895:14;2888:41;2969:9;2962:4;2957:3;2953:14;2946:33;3008:2;3003:3;2996:15;2787:238;3160:15;;:20;3156:68;;3208:15;;3190:14;:33;3182:42;;;;;;3282:4;3276:11;3316;3311:3;3304:24;3368:17;3361:4;3356:3;3352:14;3345:41;3426:9;3419:4;3414:3;3410:14;3403:33;3465:2;3460:3;3453:15;8728:1704;8876:16;8906:38;8958:43;9015:19;9097:15;:4;:13;:15::i;:::-;9083:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9083:30:77;;9059:54;;9166:15;:4;:13;:15::i;:::-;9153:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9153:29:77;;9123:59;;9193:9;9216:1210;9244:16;9262:15;9279:10;9293:22;:4;:20;:22::i;:::-;9243:72;;;;;;9427:17;9462:26;9506:31;9555:20;9592:323;9636:261;;;;;;;;9700:7;9636:261;;;;;;9743:8;9636:261;;;;;;9785:9;9636:261;;;;9825:3;9636:261;;;;;;9873:1;9636:261;;;;;9592:22;:323::i;:::-;9409:506;;;;;;;;9957:18;9930:21;9952:1;9930:24;;;;;;;;;;;;;:45;;;;;;;;;;;10022:24;9989:27;10017:1;9989:30;;;;;;;;:57;;;;:30;;;;;;;;;;;:57;10072:9;;-1:-1:-1;10095:27:77;;;;10136:3;;;;;10072:9;;10213:23;:4;:21;:23::i;:::-;10209:207;;;10263:16;:4;:14;:16::i;:::-;10256:23;;10209:207;;;10326:9;10318:83;;;;;;;;;;;;10209:207;9216:1210;;;;;;;;;8728:1704;;;;;;;;:::o;420:38:50:-;;;:::o;7393:1329:77:-;7679:15;;;;7662:14;;7765:10;;;;7532:16;;;;;;;;7662:32;;;;;;;;;7532:16;;7724:52;;7679:15;7724:7;:52::i;:::-;7704:72;;7900:6;:24;;;:29;;7928:1;7900:29;7896:66;;;7949:13;;;;7931:15;:31;7896:66;7972:17;7992:9;7972:29;;8027:4;:9;;;8062:4;8135:10;8164:24;:6;:13;;;:22;:24::i;:::-;8163:25;;8206:6;:24;;;:29;;8234:1;8206:29;:171;;8353:6;:24;;;8206:171;;;8259:10;:70;;8302:27;8259:70;;;8272:27;8259:70;8412:6;:15;;;8429:6;:10;;;8441:6;:14;;;8395:61;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8027:443;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8027:443:77;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;8011:705;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8550:9;8538;:21;8524:35;;8577:6;:24;;;:29;;8605:1;8577:29;8573:57;;;8615:15;8608:22;;8573:57;8666:39;8679:6;8687:4;8693:11;8666:12;:39::i;:::-;8659:46;;;;;;;;;;;;;;8011:705;;;7393:1329;;;;;;;;;:::o;328:41:50:-;;;:::o;4621:1058:77:-;4906:15;;;;4889:14;;4992:10;;;;4758:17;;;;;;;;4889:32;;;;;;;;;4758:17;;4951:52;;4906:15;4951:7;:52::i;:::-;4931:72;;5014:17;5034:9;5014:29;;5069:4;:9;;;5104:4;5177:10;5205:26;:6;:15;;;:24;:26::i;:::-;5249:24;;;;:29;;;:171;;5396:6;:24;;;5249:171;;;5302:10;:70;;5345:27;5302:70;;;5315:27;5302:70;5455:6;:14;;;5471:6;:10;;;5483:6;:15;;;5438:61;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5069:444;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5069:444:77;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;5053:620;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5593:9;5581;:21;5567:35;;5623:39;5636:6;5644:4;5650:11;5623:12;:39::i;5685:1702::-;5831:17;5862:38;5914:43;5971:19;6053:15;:4;:13;:15::i;:::-;6039:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6039:30:77;;6015:54;;6122:15;:4;:13;:15::i;:::-;6109:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6109:29:77;;6079:59;;6149:9;6172:1209;6200:15;6217:16;6235:10;6249:22;:4;:20;:22::i;:::-;6199:72;;;;;;6383:18;6419:26;6463:31;6512:20;6549:322;6592:261;;;;;;;;6655:7;6592:261;;;;;;6698:8;6592:261;;;;;;6776:8;6592:261;;;;6737:3;6592:261;;;;;;6829:1;6592:261;;;;;6549:21;:322::i;:::-;6365:506;;;;;;;;6913:18;6886:21;6908:1;6886:24;;;;;;;;;;;;;:45;;;;;;;;;;;6978:24;6945:27;6973:1;6945:30;;;;;;;;:57;;;;:30;;;;;;;;;;;:57;7027:10;;-1:-1:-1;7051:27:77;;;;7092:3;;;;;7027:10;;7169:23;:4;:21;:23::i;:::-;7165:206;;;7219:16;:4;:14;:16::i;:::-;7212:23;;6172:1209;;;;;;;;;1779:240:87;1846:14;;;1909:17;:4;1846:14;1909;:17::i;:::-;1900:26;-1:-1:-1;1942:24:87;:4;304:2;1942:13;:24::i;:::-;1936:30;-1:-1:-1;1985:27:87;:4;507:20;1985:14;:27::i;:::-;1976:36;;1779:240;;;;;:::o;742:257:81:-;888:17;924:68;939:7;948:43;971:6;979;987:3;948:22;:43::i;:::-;924:14;:68::i;:::-;917:75;742:257;-1:-1:-1;;;;;742:257:81:o;1685:215:77:-;1768:12;1812:80;1839:7;1848:43;1871:6;1879;1887:3;1848:22;:43::i;:::-;1812:26;:80::i;:::-;1792:101;1685:215;-1:-1:-1;;;;1685:215:77:o;1282:235:87:-;1471:11;;507:20;1471:23;;;;1470:39;1282:235;;;;:::o;992:138::-;1083:11;777:24;-1:-1:-1;1083:40:87;;992:138::o;2561:149::-;2677:11;;2622:12;;2653:50;;2677:4;;507:20;;2677:25;;2653:10;:50::i;:::-;2646:57;2561:149;-1:-1:-1;;2561:149:87:o;924:123:17:-;976:8;1008;1004:1;:12;996:21;;;;;;-1:-1:-1;1038:1:17;924:123::o;4037:578:77:-;4172:14;4188:25;4215:30;4247:7;4266:16;4292:15;4344:4;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4317:39:77;;-1:-1:-1;4407:25:77;;-1:-1:-1;4425:6:77;;-1:-1:-1;4407:17:77;;-1:-1:-1;;;4407:25:77:i;:::-;4366:66;;-1:-1:-1;4366:66:77;-1:-1:-1;4366:66:77;-1:-1:-1;4469:56:77;:33;;;4503:10;4366:66;4469:33;:56::i;:::-;4443:82;-1:-1:-1;4596:11:77;;-1:-1:-1;;;4037:578:77;;;;;;;:::o;3214:416:80:-;3293:7;3335:6;3320;3329:2;3320:11;:21;;3312:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3399:6;3408:2;3399:11;3382:6;:13;:28;;3374:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3524:30:80;3540:4;3524:30;3518:37;3557:27;3514:71;;;3214:416::o;3636:365::-;3714:6;3754;3740;3749:1;3740:10;:20;;3732:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3817:6;3826:1;3817:10;3800:6;:13;:27;;3792:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3929:29:80;3945:3;3929:29;3923:36;;3636:365::o;784:244:88:-;871:14;;:::i;:::-;910:6;901:15;;:6;:15;;;897:56;;;938:6;;946;897:56;-1:-1:-1;970:51:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;784:244::o;1248:269:81:-;1370:17;1419:44;1446:7;1455;1419:26;:44::i;:::-;1399:65;-1:-1:-1;1482:10:81;:27;;;;1474:36;;;;;1276:512:88;1360:12;1405:3;:10;;;1392:23;;:3;:10;;;:23;;;1384:32;;;;;;-1:-1:-1;1639:10:88;;1651;;;;;1663:7;;;;;1628:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1618:54;;;;;;1510:229;;;;;;;;;;;;;;;;;;;;;241:66;1510:229;;;;;;;;;;;;;;;;;;;;;;;;;1479:278;;;;;;1276:512::o;399:2809:80:-;491:12;539:7;523;533:2;523:12;:23;;515:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;603:6;592:7;583:6;:16;:26;;575:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;672:7;663:6;:16;646:6;:13;:33;;638:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;712:22;775:15;;803:1967;;;;2911:4;2905:11;2892:24;;3097:1;3086:9;3079:20;3145:4;3134:9;3130:20;3124:4;3117:34;768:2397;;803:1967;985:4;979:11;966:24;;1644:2;1635:7;1631:16;2026:9;2019:17;2013:4;2009:28;1997:9;1986;1982:25;1978:60;2074:7;2070:2;2066:16;2326:6;2312:9;2305:17;2299:4;2295:28;2283:9;2275:6;2271:22;2267:57;2263:70;2100:425;2359:3;2355:2;2352:11;2100:425;;;2497:9;;2486:21;;2400:4;2392:13;;;;2432;2100:425;;;-1:-1:-1;;2543:26:80;;;2751:2;2734:11;2747:7;2730:25;2724:4;2717:39;-1:-1:-1;768:2397:80;-1:-1:-1;3192:9:80;399:2809;-1:-1:-1;;;;399:2809:80:o;3578:453:77:-;3662:14;3678:25;3705:15;3736:6;:13;3753:2;3736:19;3732:231;;3791:2;3775:6;:13;:18;3771:50;;;3795:26;;;;;;;;;;:::i;:::-;;;;;;;;3771:50;3884:4;3876:6;3872:17;3862:27;;3934:6;3923:28;;;;;;;;;;;;:::i;:::-;3916:36;;;;;;;;;;;:::i;3732:231::-;3990:6;3979:45;;;;;;;;;;;;:::i;:::-;3972:52;;;;;;3578:453;;;;;:::o;693:3303:89:-;838:30;880:18;908:19;937:17;964:18;992:26;1028:25;1181:13;1240:1;1217:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1217:18:89;1204:31;;;;;;;;;;;;;;1203:38;;;;1181:61;;1256:12;1313:3;1291:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1291:18:89;1278:31;;;;;;;;;;;;;;1277:39;;;;;;;;1256:61;;1332:18;1395:1;1372:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1372:18:89;1360:30;;;;;;;;;;;;;;1359:37;;;;1332:65;;1411:17;1472:3;1450:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1450:18:89;1438:30;;;;;;;;;;;;;;1437:38;;;;;;;;1411:65;;1951:1;1935:11;1930:16;;:1;:16;;1897:4;:15;;;1913:12;1897:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1897:29:89;:50;1896:56;1895:117;;;;;1987:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1987:18:89;1975:30;;;;;;;;;;;;;;1974:37;;;1895:117;:161;;;;;2046:9;2033:22;;:10;:22;;;1895:161;1856:200;;2366:1;2355:6;2350:11;;:1;:11;;2322:4;:15;;;2338:7;2322:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2322:24:89;:40;2321:46;2320:108;;;;;2403:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2403:18:89;2390:31;;;;;;;;;;;;;;2389:38;;;2320:108;:152;;;;;2462:9;2449:22;;:10;:22;;;2320:152;2280:192;;2501:12;2491:22;;:7;:22;;;:76;;;;2529:12;2518:23;;:7;:23;;;:48;;;;;2555:11;2545:21;;:6;:21;;;;2518:48;2487:454;;;2602:7;2587:22;;2641:6;2627:20;;2681:12;2665:28;;2726:11;2711:26;;2487:454;;;2791:12;2776:27;;2835:11;2821:25;;2880:7;2864:23;;2920:6;2905:21;;2487:454;-1:-1:-1;;3155:17:89;:32;;;;;-1:-1:-1;;3197:573:89;3220:13;3204:29;;:12;:29;;;3197:573;;3383:13;3367:29;;:12;:29;;;3363:125;;;3431:17;3453:3;:18;;;3431:41;;3423:50;3363:125;3502:14;3551:4;3519;:15;;;3535:12;3519:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3519:29:89;:36;;-1:-1:-1;3596:20:89;3519:36;3596:12;:20::i;:::-;3569:47;;;;;;;-1:-1:-1;;3630:14:89;;;;;3742:17;3197:573;;;3784:20;3780:79;;;3847:1;3820:28;;;;3780:79;3873:21;3869:80;;;3937:1;3910:28;;;;3869:80;3959:30;;;;;;;693:3303;;;;;:::o;4002:197::-;4057:6;;4100:72;4107:6;;4100:72;;4155:5;;;4149:12;;;;4129:6;;4100:72;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:485:115:-;;111:3;104:4;96:6;92:17;88:27;78:2;;133:5;126;119:20;78:2;173:6;160:20;204:49;219:33;249:2;219:33;:::i;:::-;204:49;:::i;:::-;278:2;269:7;262:19;324:3;317:4;312:2;304:6;300:15;296:26;293:35;290:2;;;345:5;338;331:20;290:2;414;407:4;399:6;395:17;388:4;379:7;375:18;362:55;437:16;;;455:4;433:27;426:42;;;;441:7;68:431;-1:-1:-1;;68:431:115:o;504:166::-;583:13;;636:1;625:20;;;615:31;;605:2;;660:1;657;650:12;675:955;;800:4;788:9;783:3;779:19;775:30;772:2;;;822:5;815;808:20;772:2;859;853:9;901:4;893:6;889:17;972:6;960:10;957:22;936:18;924:10;921:34;918:62;915:2;;;983:9;915:2;1010;1003:22;1043:6;-1:-1:-1;1043:6:115;1073:23;;1105:35;1073:23;1105:35;:::i;:::-;1149:23;;1224:2;1209:18;;1196:32;1237:35;1196:32;1237:35;:::i;:::-;1300:2;1288:15;;1281:32;1374:2;1359:18;;;1346:32;1329:15;;;1322:57;1431:2;1416:18;;1403:32;1479:8;1466:22;;1454:35;;1444:2;;1503:1;1500;1493:12;1444:2;1535;1523:15;;1516:32;1582:41;1618:3;1603:19;;1582:41;:::i;:::-;1576:3;1568:6;1564:16;1557:67;;762:868;;;;:::o;1635:138::-;1705:20;;1734:33;1705:20;1734:33;:::i;1778:165::-;1858:13;;1911:6;1900:18;;1890:29;;1880:2;;1933:1;1930;1923:12;1948:410;;;2086:2;2074:9;2065:7;2061:23;2057:32;2054:2;;;2107:6;2099;2092:22;2054:2;2152:9;2139:23;2185:18;2177:6;2174:30;2171:2;;;2222:6;2214;2207:22;2171:2;2250:51;2293:7;2284:6;2273:9;2269:22;2250:51;:::i;:::-;2240:61;2348:2;2333:18;;;;2320:32;;-1:-1:-1;;;;2044:314:115:o;2363:253::-;;;2501:2;2489:9;2480:7;2476:23;2472:32;2469:2;;;2522:6;2514;2507:22;2469:2;-1:-1:-1;;2550:16:115;;2606:2;2591:18;;;2585:25;2550:16;;2585:25;;-1:-1:-1;2459:157:115:o;2621:476::-;;;;2774:2;2762:9;2753:7;2749:23;2745:32;2742:2;;;2795:6;2787;2780:22;2742:2;2836:9;2823:23;2813:33;;2893:2;2882:9;2878:18;2865:32;2855:42;;2948:2;2937:9;2933:18;2920:32;2975:18;2967:6;2964:30;2961:2;;;3012:6;3004;2997:22;2961:2;3040:51;3083:7;3074:6;3063:9;3059:22;3040:51;:::i;:::-;3030:61;;;2732:365;;;;;:::o;3102:676::-;;3235:2;3223:9;3214:7;3210:23;3206:32;3203:2;;;3256:6;3248;3241:22;3203:2;3294:9;3288:16;3327:18;3319:6;3316:30;3313:2;;;3364:6;3356;3349:22;3313:2;3392:22;;3445:4;3437:13;;3433:27;-1:-1:-1;3423:2:115;;3479:6;3471;3464:22;3423:2;3513;3507:9;3538:49;3553:33;3583:2;3553:33;:::i;3538:49::-;3610:2;3603:5;3596:17;3650:7;3645:2;3640;3636;3632:11;3628:20;3625:33;3622:2;;;3676:6;3668;3661:22;3622:2;3694:54;3745:2;3740;3733:5;3729:14;3724:2;3720;3716:11;3694:54;:::i;3783:281::-;;3940:3;3928:9;3919:7;3915:23;3911:33;3908:2;;;3962:6;3954;3947:22;3908:2;3990:68;4050:7;4039:9;3990:68;:::i;:::-;3980:78;3898:166;-1:-1:-1;;;3898:166:115:o;4356:945::-;;;;;;;;4571:3;4559:9;4550:7;4546:23;4542:33;4539:2;;;4593:6;4585;4578:22;4539:2;4630:9;4624:16;4649:33;4676:5;4649:33;:::i;:::-;4701:5;-1:-1:-1;4725:49:115;4770:2;4755:18;;4725:49;:::i;:::-;4715:59;;4793:50;4839:2;4828:9;4824:18;4793:50;:::i;:::-;4783:60;;4862:50;4908:2;4897:9;4893:18;4862:50;:::i;:::-;4852:60;;4931:51;4977:3;4966:9;4962:19;4931:51;:::i;:::-;4921:61;;5027:3;5016:9;5012:19;5006:26;5076:4;5067:7;5063:18;5054:7;5051:31;5041:2;;5101:6;5093;5086:22;5041:2;5181:3;5166:19;;5160:26;5129:7;;-1:-1:-1;5224:15:115;;5217:23;5205:36;;5195:2;;5260:6;5252;5245:22;5195:2;5288:7;5278:17;;;4529:772;;;;;;;;;;:::o;5306:407::-;;;;5461:2;5449:9;5440:7;5436:23;5432:32;5429:2;;;5482:6;5474;5467:22;5429:2;5516:9;5510:16;5500:26;;5569:2;5558:9;5554:18;5548:25;5582:33;5609:5;5582:33;:::i;:::-;5634:5;-1:-1:-1;5658:49:115;5703:2;5688:18;;5658:49;:::i;:::-;5648:59;;5419:294;;;;;:::o;5718:318::-;;5799:5;5793:12;5826:6;5821:3;5814:19;5842:63;5898:6;5891:4;5886:3;5882:14;5875:4;5868:5;5864:16;5842:63;:::i;:::-;5950:2;5938:15;5955:66;5934:88;5925:98;;;;6025:4;5921:109;;5769:267;-1:-1:-1;;5769:267:115:o;6041:514::-;6329:2;6325:15;;;6234:66;6321:24;;;6309:37;;6384:3;6380:16;;;;6398:66;6376:89;6371:2;6362:12;;6355:111;6500:15;;6496:24;6491:2;6482:12;;6475:46;6546:2;6537:12;;6214:341::o;6560:226::-;6736:42;6724:55;;;;6706:74;;6694:2;6679:18;;6661:125::o;6791:593::-;;7034:42;7115:2;7107:6;7103:15;7092:9;7085:34;7169:6;7162:14;7155:22;7150:2;7139:9;7135:18;7128:50;7214:6;7209:2;7198:9;7194:18;7187:34;7269:2;7261:6;7257:15;7252:2;7241:9;7237:18;7230:43;;7310:3;7304;7293:9;7289:19;7282:32;7331:47;7373:3;7362:9;7358:19;7350:6;7331:47;:::i;:::-;7323:55;7014:370;-1:-1:-1;;;;;;;7014:370:115:o;7389:221::-;;7538:2;7527:9;7520:21;7558:46;7600:2;7589:9;7585:18;7577:6;7558:46;:::i;7615:340::-;7817:2;7799:21;;;7856:2;7836:18;;;7829:30;7895:18;7890:2;7875:18;;7868:46;7946:2;7931:18;;7789:166::o;7960:1365::-;;8282:3;8271:9;8267:19;8313:6;8302:9;8295:25;8339:2;8377:3;8372:2;8361:9;8357:18;8350:31;8401:6;8436;8430:13;8467:6;8459;8452:22;8505:3;8494:9;8490:19;8483:26;;8544:2;8536:6;8532:15;8518:29;;8565:4;8578:218;8592:6;8589:1;8586:13;8578:218;;;8657:13;;8672:42;8653:62;8641:75;;8771:15;;;;8736:12;;;;8614:1;8607:9;8578:218;;;-1:-1:-1;;8832:19:115;;;8827:2;8812:18;;8805:47;8902:13;;8924:21;;;8963:12;;;;-1:-1:-1;9000:15:115;;;;9035:4;9048:206;9064:8;9059:3;9056:17;9048:206;;;9137:15;;9154:10;9133:32;9119:47;;9188:14;;;;9227:17;;;;9092:1;9083:11;9048:206;;;-1:-1:-1;;;;9307:2:115;9292:18;;;;9285:34;;;;9271:5;8243:1082;-1:-1:-1;;;;8243:1082:115:o;9330:455::-;9559:25;;;9632:42;9620:55;;;;9615:2;9600:18;;9593:83;9724:10;9712:23;9707:2;9692:18;;9685:51;9767:2;9752:18;;9745:34;9546:3;9531:19;;9513:272::o;9790:242::-;9860:2;9854:9;9890:17;;;9937:18;9922:34;;9958:22;;;9919:62;9916:2;;;9984:9;9916:2;10011;10004:22;9834:198;;-1:-1:-1;9834:198:115:o;10037:240::-;;10120:18;10112:6;10109:30;10106:2;;;10142:9;10106:2;-1:-1:-1;10190:4:115;10178:17;10197:66;10174:90;10266:4;10170:101;;10096:181::o;10282:258::-;10354:1;10364:113;10378:6;10375:1;10372:13;10364:113;;;10454:11;;;10448:18;10435:11;;;10428:39;10400:2;10393:10;10364:113;;;10495:6;10492:1;10489:13;10486:2;;;10530:1;10521:6;10516:3;10512:16;10505:27;10486:2;;10335:205;;;:::o;10545:156::-;10633:42;10626:5;10622:54;10615:5;10612:65;10602:2;;10691:1;10688;10681:12;10602:2;10592:109;:::o"},"methodIdentifiers":{"SAMB()":"90793ea8","astraCLSwapCallback(int256,int256,bytes)":"11c17848","factory()":"c45a0155","quoteExactInput(bytes,uint256)":"cdca1753","quoteExactInputSingle((address,address,uint256,uint24,uint160))":"c6a5026a","quoteExactOutput(bytes,uint256)":"2f80bb1d","quoteExactOutputSingle((address,address,uint256,uint24,uint160))":"bd21704a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_SAMB\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"SAMB\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"}],\"name\":\"astraCLSwapCallback\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"quoteExactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint160[]\",\"name\":\"sqrtPriceX96AfterList\",\"type\":\"uint160[]\"},{\"internalType\":\"uint32[]\",\"name\":\"initializedTicksCrossedList\",\"type\":\"uint32[]\"},{\"internalType\":\"uint256\",\"name\":\"gasEstimate\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct IQuoterV2.QuoteExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"quoteExactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96After\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"initializedTicksCrossed\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"gasEstimate\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"quoteExactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint160[]\",\"name\":\"sqrtPriceX96AfterList\",\"type\":\"uint160[]\"},{\"internalType\":\"uint32[]\",\"name\":\"initializedTicksCrossedList\",\"type\":\"uint32[]\"},{\"internalType\":\"uint256\",\"name\":\"gasEstimate\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct IQuoterV2.QuoteExactOutputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"quoteExactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96After\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"initializedTicksCrossed\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"gasEstimate\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"These functions are not gas efficient and should _not_ be called on chain. Instead, optimistically execute the swap and check the amounts in the callback.\",\"kind\":\"dev\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IAstraCLPoolActions#swap call\"}},\"quoteExactInput(bytes,uint256)\":{\"params\":{\"amountIn\":\"The amount of the first token to swap\",\"path\":\"The path of the swap, i.e. each token pair and the pool fee\"},\"returns\":{\"amountOut\":\"The amount of the last token that would be received\",\"gasEstimate\":\"The estimate of the gas that the swap consumes\",\"initializedTicksCrossedList\":\"List of the initialized ticks that the swap crossed for each pool in the path\",\"sqrtPriceX96AfterList\":\"List of the sqrt price after the swap for each pool in the path\"}},\"quoteExactInputSingle((address,address,uint256,uint24,uint160))\":{\"params\":{\"params\":\"The params for the quote, encoded as `QuoteExactInputSingleParams` tokenIn The token being swapped in tokenOut The token being swapped out fee The fee of the token pool to consider for the pair amountIn The desired input amount sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\"},\"returns\":{\"amountOut\":\"The amount of `tokenOut` that would be received\",\"gasEstimate\":\"The estimate of the gas that the swap consumes\",\"initializedTicksCrossed\":\"The number of initialized ticks that the swap crossed\",\"sqrtPriceX96After\":\"The sqrt price of the pool after the swap\"}},\"quoteExactOutput(bytes,uint256)\":{\"params\":{\"amountOut\":\"The amount of the last token to receive\",\"path\":\"The path of the swap, i.e. each token pair and the pool fee. Path must be provided in reverse order\"},\"returns\":{\"amountIn\":\"The amount of first token required to be paid\",\"gasEstimate\":\"The estimate of the gas that the swap consumes\",\"initializedTicksCrossedList\":\"List of the initialized ticks that the swap crossed for each pool in the path\",\"sqrtPriceX96AfterList\":\"List of the sqrt price after the swap for each pool in the path\"}},\"quoteExactOutputSingle((address,address,uint256,uint24,uint160))\":{\"params\":{\"params\":\"The params for the quote, encoded as `QuoteExactOutputSingleParams` tokenIn The token being swapped in tokenOut The token being swapped out fee The fee of the token pool to consider for the pair amountOut The desired output amount sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\"},\"returns\":{\"amountIn\":\"The amount required as the input for the swap in order to receive `amountOut`\",\"gasEstimate\":\"The estimate of the gas that the swap consumes\",\"initializedTicksCrossed\":\"The number of initialized ticks that the swap crossed\",\"sqrtPriceX96After\":\"The sqrt price of the pool after the swap\"}}},\"stateVariables\":{\"amountOutCached\":{\"details\":\"Transient storage variable used to check a safety condition in exact output swaps.\"}},\"title\":\"Provides quotes for swaps\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IAstraCLPool#swap.\"},\"quoteExactInput(bytes,uint256)\":{\"notice\":\"Returns the amount out received for a given exact input swap without executing the swap\"},\"quoteExactInputSingle((address,address,uint256,uint24,uint160))\":{\"notice\":\"Returns the amount out received for a given exact input but for a swap of a single pool\"},\"quoteExactOutput(bytes,uint256)\":{\"notice\":\"Returns the amount in required for a given exact output swap without executing the swap\"},\"quoteExactOutputSingle((address,address,uint256,uint24,uint160))\":{\"notice\":\"Returns the amount in required to receive the given exact output amount but for a swap of a single pool\"}},\"notice\":\"Allows getting the expected amount out or amount in for a given swap without executing the swap\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lens/QuoterV2.sol\":\"QuoterV2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol\":{\"keccak256\":\"0xaa82f63f0c930e51d6aaae0d59e7bf3ef5b32371ac0549f6e07bfcab5b4dcb16\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://73419af0b4f35f02c3b89d387d6ac46041637a7133e249de617103b7567bf4c4\",\"dweb:/ipfs/QmTfwEX1dCoUUUMaMFzDnqDcFXihHQnEG1fbkBFpidRs8o\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"@airdao/astra-cl-core/contracts/libraries/BitMath.sol\":{\"keccak256\":\"0x82e425066110aac05ed8a9fc90f9ee85142b6f434769447e49d4438a8d9fcd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://77a97078bc992c18c59cb61e07fa4632c8a26b6babf00f3b16eabb5dcaa953b4\",\"dweb:/ipfs/QmTj15ufLWk6AxedSVXBcLp5cYf2DCJAeDi94cVemCkm54\"]},\"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0xd4c1c1b67f946b077d7c52a158113763a89a210fc2927b8491055a962ecd18c0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5344400c74320ca8dbe19241db7ff49babbd6c875c1b561c79d6e4315a9fb5f9\",\"dweb:/ipfs/QmRKCNTbkovxK1WvejXZr3iAHhGN97ZT1yWGsWCJFkrT5X\"]},\"@airdao/astra-cl-core/contracts/libraries/TickBitmap.sol\":{\"keccak256\":\"0x47b7551bec8cd09091ae50a34c1ed576e317e404fbc1901593283b1cbd3be7c7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://486b70ed46a9389da18f93654d069024941ce8373b1b8fb30e5051cf2f014a1d\",\"dweb:/ipfs/QmecffKV1nSbd2LfobgR7eqJQSuL5ER5ApAgNbe4sWVFBG\"]},\"@airdao/astra-cl-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0xe22d07f1ebf9c8468c81cb6905bfc8f8a54fa2f9b4a50742202a47cdbcb5af80\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d4773ca5008d2a2f496370695942c8ba3d6e1d487adbf5cda1149da12e3a6268\",\"dweb:/ipfs/QmcPYTLpEWfU8e3KAYBfHH7uYR4tGAkvnWrWS1CG8EkyLC\"]},\"contracts/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x566b2f2f7bf89d107c66316e12b9cad9fade2f9cc2076bceb2090f54bada22da\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d13d485890a8eb6b2b6b38cf0b7fc39c7fc66462a9553159947ece2de55d9ba3\",\"dweb:/ipfs/QmaSEEBMjMvvrLqxmrskUmDwg86g7RHDa6SYiYiA77SJ1X\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IQuoterV2.sol\":{\"keccak256\":\"0xbcc809869904da994062647eed1d5ecb209feaf4c25151002fc7f7e3673200e9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://478cccc59f15070ad22d525e385fd95deddd0f595a41125f13ecbb62b848bdb4\",\"dweb:/ipfs/QmaZb197Kf2ttkjGuxpfaK9oFYtpUxGSJEshYYQ1ri5ywF\"]},\"contracts/lens/QuoterV2.sol\":{\"keccak256\":\"0x85360929e24573c4a0254833f1fce53f5373a12b35c7f69e37a4f8a52e96f388\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6ad12977aa06f07a2398430ba49d745957fd1585cb353d750097ff56aba8be15\",\"dweb:/ipfs/QmSpRNx52WMBwA5hKjwGg21h8Z8uWCKcmkf5oTDiYPBFns\"]},\"contracts/libraries/BytesLib.sol\":{\"keccak256\":\"0xed1b8acd0184eb321d5f4b5c2576608d1c12f5db1bb72d950054438f7f1946a6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f55d6aca86dcf1f1ab6413f48964f821306a29914c2117c16f20446faa5d6d0a\",\"dweb:/ipfs/QmWKbbg6kA9kkPVrCh6hJMnPhK1NhuVoHEd9s3vmYWsvTa\"]},\"contracts/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xf21a3d7e2bc14386ce7b072b124b580df53441a32591770845860e8947f942d0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6941e21d9bc52bddc65079c5e7bc9d6ffd6553f6ed7f3d3b340996a55115b46f\",\"dweb:/ipfs/QmaDJ9uafahho77WP5izBCRL4W3mVM7NFL5q5QR5YvAC3A\"]},\"contracts/libraries/Path.sol\":{\"keccak256\":\"0x0a6928608f48763796089e22dfc02a462cce63bb7727663961b3ed8c4f3eb862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://73bb4f107faf873db8700ce8950d2c4c88d41e0e1716da599bb733ad884f95eb\",\"dweb:/ipfs/QmZXSaPVpgDXpkKqYRdByJ3UXaMV2ATkr7V72nRZij8wmB\"]},\"contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xdd82100913bcb7c490e9e6912ab33994bd97d5a59e67209826ebf917bc8271c1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ecfc24c77d80aa718604d8a2c4d59460b76b5fd567d15206414e3838dd6698b7\",\"dweb:/ipfs/QmVtUC9dnade4RkzXaSqEFdAkiEftJ777jmT619LX2VLGv\"]},\"contracts/libraries/PoolTicksCounter.sol\":{\"keccak256\":\"0xcf0e9ed4ebdc3871261016f3c2fe5bd58f019a09f402e94f3796963bea0ecc3f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4251f98e344e12aa150d883c0c7e5f76790e26d783e683472f4a32df71dbe6c5\",\"dweb:/ipfs/QmNREWy9rHEYPeBuVXa6LWEDjr1K8hFah3ne4E25P1HanB\"]}},\"version\":1}"}},"contracts/lens/TickLens.sol":{"TickLens":{"abi":[{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"int16","name":"tickBitmapIndex","type":"int16"}],"name":"getPopulatedTicksInWord","outputs":[{"components":[{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"int128","name":"liquidityNet","type":"int128"},{"internalType":"uint128","name":"liquidityGross","type":"uint128"}],"internalType":"struct ITickLens.PopulatedTick[]","name":"populatedTicks","type":"tuple[]"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610569806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063351fb47814610030575b600080fd5b61004361003e36600461037c565b610059565b60405161005091906104aa565b60405180910390f35b606060008373ffffffffffffffffffffffffffffffffffffffff16635339c296846040518263ffffffff1660e01b8152600401610096919061051b565b60206040518083038186803b1580156100ae57600080fd5b505afa1580156100c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e69190610492565b90506000805b610100811015610110576001811b831615610108576001909101905b6001016100ec565b5060008573ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561015957600080fd5b505afa15801561016d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019191906103ba565b90508167ffffffffffffffff811180156101aa57600080fd5b506040519080825280602002602001820160405280156101e457816020015b6101d1610328565b8152602001906001900390816101c95790505b50935060005b61010081101561031e576001811b841615610316576040517ff30dba93000000000000000000000000000000000000000000000000000000008152600187900b60020b60081b8201830290600090819073ffffffffffffffffffffffffffffffffffffffff8b169063f30dba9390610266908690600401610529565b6101006040518083038186803b15801561027f57600080fd5b505afa158015610293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b791906103e2565b5050505050509150915060405180606001604052808460020b815260200182600f0b8152602001836fffffffffffffffffffffffffffffffff168152508887600190039750878151811061030757fe5b60200260200101819052505050505b6001016101ea565b5050505092915050565b604080516060810182526000808252602082018190529181019190915290565b8051801515811461035857600080fd5b919050565b805161035881610537565b805163ffffffff8116811461035857600080fd5b6000806040838503121561038e578182fd5b823561039981610537565b91506020830135600181900b81146103af578182fd5b809150509250929050565b6000602082840312156103cb578081fd5b81518060020b81146103db578182fd5b9392505050565b600080600080600080600080610100898b0312156103fe578384fd5b88516fffffffffffffffffffffffffffffffff8116811461041d578485fd5b80985050602089015180600f0b8114610434578485fd5b80975050604089015195506060890151945060808901518060060b8114610459578485fd5b935061046760a08a0161035d565b925061047560c08a01610368565b915061048360e08a01610348565b90509295985092959890939650565b6000602082840312156104a3578081fd5b5051919050565b602080825282518282018190526000919060409081850190868401855b8281101561050e578151805160020b855286810151600f0b878601528501516fffffffffffffffffffffffffffffffff1685850152606090930192908501906001016104c7565b5091979650505050505050565b60019190910b815260200190565b60029190910b815260200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461055957600080fd5b5056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x569 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x351FB478 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0x37C JUMP JUMPDEST PUSH2 0x59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x50 SWAP2 SWAP1 PUSH2 0x4AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5339C296 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x51B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE6 SWAP2 SWAP1 PUSH2 0x492 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x1 DUP2 SHL DUP4 AND ISZERO PUSH2 0x108 JUMPI PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x1 ADD PUSH2 0xEC JUMP JUMPDEST POP PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x191 SWAP2 SWAP1 PUSH2 0x3BA JUMP JUMPDEST SWAP1 POP DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1E4 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1D1 PUSH2 0x328 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1C9 JUMPI SWAP1 POP JUMPDEST POP SWAP4 POP PUSH1 0x0 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x31E JUMPI PUSH1 0x1 DUP2 SHL DUP5 AND ISZERO PUSH2 0x316 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF30DBA9300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 DUP8 SWAP1 SIGNEXTEND PUSH1 0x2 SIGNEXTEND PUSH1 0x8 SHL DUP3 ADD DUP4 MUL SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP1 PUSH4 0xF30DBA93 SWAP1 PUSH2 0x266 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x529 JUMP JUMPDEST PUSH2 0x100 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x293 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2B7 SWAP2 SWAP1 PUSH2 0x3E2 JUMP JUMPDEST POP POP POP POP POP POP SWAP2 POP SWAP2 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP9 DUP8 PUSH1 0x1 SWAP1 SUB SWAP8 POP DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x307 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1EA JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x358 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x358 DUP2 PUSH2 0x537 JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x358 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x38E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x399 DUP2 PUSH2 0x537 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x3AF JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3CB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x3DB JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x3FE JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x41D JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 SWAP9 POP POP PUSH1 0x20 DUP10 ADD MLOAD DUP1 PUSH1 0xF SIGNEXTEND DUP2 EQ PUSH2 0x434 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 SWAP8 POP POP PUSH1 0x40 DUP10 ADD MLOAD SWAP6 POP PUSH1 0x60 DUP10 ADD MLOAD SWAP5 POP PUSH1 0x80 DUP10 ADD MLOAD DUP1 PUSH1 0x6 SIGNEXTEND DUP2 EQ PUSH2 0x459 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP4 POP PUSH2 0x467 PUSH1 0xA0 DUP11 ADD PUSH2 0x35D JUMP JUMPDEST SWAP3 POP PUSH2 0x475 PUSH1 0xC0 DUP11 ADD PUSH2 0x368 JUMP JUMPDEST SWAP2 POP PUSH2 0x483 PUSH1 0xE0 DUP11 ADD PUSH2 0x348 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A3 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x50E JUMPI DUP2 MLOAD DUP1 MLOAD PUSH1 0x2 SIGNEXTEND DUP6 MSTORE DUP7 DUP2 ADD MLOAD PUSH1 0xF SIGNEXTEND DUP8 DUP7 ADD MSTORE DUP6 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 ADD MSTORE PUSH1 0x60 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4C7 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP2 SWAP1 SWAP2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"284:1272:78:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:3987:115","statements":[{"nodeType":"YulBlock","src":"6:3:115","statements":[]},{"body":{"nodeType":"YulBlock","src":"73:107:115","statements":[{"nodeType":"YulAssignment","src":"83:22:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"98:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"92:5:115"},"nodeType":"YulFunctionCall","src":"92:13:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"83:5:115"}]},{"body":{"nodeType":"YulBlock","src":"158:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"167:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"170:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"160:6:115"},"nodeType":"YulFunctionCall","src":"160:12:115"},"nodeType":"YulExpressionStatement","src":"160:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"127:5:115"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"148:5:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"141:6:115"},"nodeType":"YulFunctionCall","src":"141:13:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"134:6:115"},"nodeType":"YulFunctionCall","src":"134:21:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"124:2:115"},"nodeType":"YulFunctionCall","src":"124:32:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"117:6:115"},"nodeType":"YulFunctionCall","src":"117:40:115"},"nodeType":"YulIf","src":"114:2:115"}]},"name":"abi_decode_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"52:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"63:5:115","type":""}],"src":"14:166:115"},{"body":{"nodeType":"YulBlock","src":"247:80:115","statements":[{"nodeType":"YulAssignment","src":"257:22:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"272:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"266:5:115"},"nodeType":"YulFunctionCall","src":"266:13:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"257:5:115"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"315:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"288:26:115"},"nodeType":"YulFunctionCall","src":"288:33:115"},"nodeType":"YulExpressionStatement","src":"288:33:115"}]},"name":"abi_decode_t_uint160_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"226:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"237:5:115","type":""}],"src":"185:142:115"},{"body":{"nodeType":"YulBlock","src":"393:108:115","statements":[{"nodeType":"YulAssignment","src":"403:22:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"418:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"412:5:115"},"nodeType":"YulFunctionCall","src":"412:13:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"403:5:115"}]},{"body":{"nodeType":"YulBlock","src":"479:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"488:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"491:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"481:6:115"},"nodeType":"YulFunctionCall","src":"481:12:115"},"nodeType":"YulExpressionStatement","src":"481:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"447:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"458:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"465:10:115","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"454:3:115"},"nodeType":"YulFunctionCall","src":"454:22:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"444:2:115"},"nodeType":"YulFunctionCall","src":"444:33:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"437:6:115"},"nodeType":"YulFunctionCall","src":"437:41:115"},"nodeType":"YulIf","src":"434:2:115"}]},"name":"abi_decode_t_uint32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"372:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"383:5:115","type":""}],"src":"332:169:115"},{"body":{"nodeType":"YulBlock","src":"591:353:115","statements":[{"body":{"nodeType":"YulBlock","src":"637:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"646:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"654:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"639:6:115"},"nodeType":"YulFunctionCall","src":"639:22:115"},"nodeType":"YulExpressionStatement","src":"639:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"612:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"621:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"608:3:115"},"nodeType":"YulFunctionCall","src":"608:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"633:2:115","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"604:3:115"},"nodeType":"YulFunctionCall","src":"604:32:115"},"nodeType":"YulIf","src":"601:2:115"},{"nodeType":"YulVariableDeclaration","src":"672:36:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"698:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"685:12:115"},"nodeType":"YulFunctionCall","src":"685:23:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"676:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"744:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"717:26:115"},"nodeType":"YulFunctionCall","src":"717:33:115"},"nodeType":"YulExpressionStatement","src":"717:33:115"},{"nodeType":"YulAssignment","src":"759:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"769:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"759:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"783:47:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"815:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"826:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"811:3:115"},"nodeType":"YulFunctionCall","src":"811:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"798:12:115"},"nodeType":"YulFunctionCall","src":"798:32:115"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"787:7:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"886:26:115","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"895:6:115"},{"name":"value1","nodeType":"YulIdentifier","src":"903:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"888:6:115"},"nodeType":"YulFunctionCall","src":"888:22:115"},"nodeType":"YulExpressionStatement","src":"888:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"852:7:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"872:1:115","type":"","value":"1"},{"name":"value_1","nodeType":"YulIdentifier","src":"875:7:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"861:10:115"},"nodeType":"YulFunctionCall","src":"861:22:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"849:2:115"},"nodeType":"YulFunctionCall","src":"849:35:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"842:6:115"},"nodeType":"YulFunctionCall","src":"842:43:115"},"nodeType":"YulIf","src":"839:2:115"},{"nodeType":"YulAssignment","src":"921:17:115","value":{"name":"value_1","nodeType":"YulIdentifier","src":"931:7:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"921:6:115"}]}]},"name":"abi_decode_tuple_t_addresst_int16","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"549:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"560:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"572:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"580:6:115","type":""}],"src":"506:438:115"},{"body":{"nodeType":"YulBlock","src":"1028:218:115","statements":[{"body":{"nodeType":"YulBlock","src":"1074:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1083:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"1091:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1076:6:115"},"nodeType":"YulFunctionCall","src":"1076:22:115"},"nodeType":"YulExpressionStatement","src":"1076:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1049:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"1058:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1045:3:115"},"nodeType":"YulFunctionCall","src":"1045:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"1070:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1041:3:115"},"nodeType":"YulFunctionCall","src":"1041:32:115"},"nodeType":"YulIf","src":"1038:2:115"},{"nodeType":"YulVariableDeclaration","src":"1109:29:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1128:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1122:5:115"},"nodeType":"YulFunctionCall","src":"1122:16:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1113:5:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"1190:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1199:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"1207:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1192:6:115"},"nodeType":"YulFunctionCall","src":"1192:22:115"},"nodeType":"YulExpressionStatement","src":"1192:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1160:5:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1178:1:115","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"1181:5:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"1167:10:115"},"nodeType":"YulFunctionCall","src":"1167:20:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1157:2:115"},"nodeType":"YulFunctionCall","src":"1157:31:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1150:6:115"},"nodeType":"YulFunctionCall","src":"1150:39:115"},"nodeType":"YulIf","src":"1147:2:115"},{"nodeType":"YulAssignment","src":"1225:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"1235:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1225:6:115"}]}]},"name":"abi_decode_tuple_t_int24_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"994:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1005:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1017:6:115","type":""}],"src":"949:297:115"},{"body":{"nodeType":"YulBlock","src":"1444:858:115","statements":[{"body":{"nodeType":"YulBlock","src":"1491:26:115","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1500:6:115"},{"name":"value4","nodeType":"YulIdentifier","src":"1508:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1493:6:115"},"nodeType":"YulFunctionCall","src":"1493:22:115"},"nodeType":"YulExpressionStatement","src":"1493:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1465:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"1474:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1461:3:115"},"nodeType":"YulFunctionCall","src":"1461:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"1486:3:115","type":"","value":"256"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1457:3:115"},"nodeType":"YulFunctionCall","src":"1457:33:115"},"nodeType":"YulIf","src":"1454:2:115"},{"nodeType":"YulVariableDeclaration","src":"1526:29:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1545:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1539:5:115"},"nodeType":"YulFunctionCall","src":"1539:16:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1530:5:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"1633:26:115","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1642:6:115"},{"name":"value4","nodeType":"YulIdentifier","src":"1650:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1635:6:115"},"nodeType":"YulFunctionCall","src":"1635:22:115"},"nodeType":"YulExpressionStatement","src":"1635:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1577:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1588:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"1595:34:115","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1584:3:115"},"nodeType":"YulFunctionCall","src":"1584:46:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1574:2:115"},"nodeType":"YulFunctionCall","src":"1574:57:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1567:6:115"},"nodeType":"YulFunctionCall","src":"1567:65:115"},"nodeType":"YulIf","src":"1564:2:115"},{"nodeType":"YulAssignment","src":"1668:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"1678:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1668:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"1692:40:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1717:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1728:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1713:3:115"},"nodeType":"YulFunctionCall","src":"1713:18:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1707:5:115"},"nodeType":"YulFunctionCall","src":"1707:25:115"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1696:7:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"1789:26:115","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1798:6:115"},{"name":"value4","nodeType":"YulIdentifier","src":"1806:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1791:6:115"},"nodeType":"YulFunctionCall","src":"1791:22:115"},"nodeType":"YulExpressionStatement","src":"1791:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1754:7:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1774:2:115","type":"","value":"15"},{"name":"value_1","nodeType":"YulIdentifier","src":"1778:7:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"1763:10:115"},"nodeType":"YulFunctionCall","src":"1763:23:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1751:2:115"},"nodeType":"YulFunctionCall","src":"1751:36:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1744:6:115"},"nodeType":"YulFunctionCall","src":"1744:44:115"},"nodeType":"YulIf","src":"1741:2:115"},{"nodeType":"YulAssignment","src":"1824:17:115","value":{"name":"value_1","nodeType":"YulIdentifier","src":"1834:7:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1824:6:115"}]},{"nodeType":"YulAssignment","src":"1850:35:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1870:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1881:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1866:3:115"},"nodeType":"YulFunctionCall","src":"1866:18:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1860:5:115"},"nodeType":"YulFunctionCall","src":"1860:25:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1850:6:115"}]},{"nodeType":"YulAssignment","src":"1894:35:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1914:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1925:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1910:3:115"},"nodeType":"YulFunctionCall","src":"1910:18:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1904:5:115"},"nodeType":"YulFunctionCall","src":"1904:25:115"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1894:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"1938:41:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1963:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1974:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1959:3:115"},"nodeType":"YulFunctionCall","src":"1959:19:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1953:5:115"},"nodeType":"YulFunctionCall","src":"1953:26:115"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"1942:7:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"2035:26:115","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"2044:6:115"},{"name":"value4","nodeType":"YulIdentifier","src":"2052:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2037:6:115"},"nodeType":"YulFunctionCall","src":"2037:22:115"},"nodeType":"YulExpressionStatement","src":"2037:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"2001:7:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2021:1:115","type":"","value":"6"},{"name":"value_2","nodeType":"YulIdentifier","src":"2024:7:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"2010:10:115"},"nodeType":"YulFunctionCall","src":"2010:22:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1998:2:115"},"nodeType":"YulFunctionCall","src":"1998:35:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1991:6:115"},"nodeType":"YulFunctionCall","src":"1991:43:115"},"nodeType":"YulIf","src":"1988:2:115"},{"nodeType":"YulAssignment","src":"2070:17:115","value":{"name":"value_2","nodeType":"YulIdentifier","src":"2080:7:115"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"2070:6:115"}]},{"nodeType":"YulAssignment","src":"2096:62:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2142:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2153:3:115","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2138:3:115"},"nodeType":"YulFunctionCall","src":"2138:19:115"}],"functionName":{"name":"abi_decode_t_uint160_fromMemory","nodeType":"YulIdentifier","src":"2106:31:115"},"nodeType":"YulFunctionCall","src":"2106:52:115"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"2096:6:115"}]},{"nodeType":"YulAssignment","src":"2167:61:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2212:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2223:3:115","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2208:3:115"},"nodeType":"YulFunctionCall","src":"2208:19:115"}],"functionName":{"name":"abi_decode_t_uint32_fromMemory","nodeType":"YulIdentifier","src":"2177:30:115"},"nodeType":"YulFunctionCall","src":"2177:51:115"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"2167:6:115"}]},{"nodeType":"YulAssignment","src":"2237:59:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2280:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2291:3:115","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2276:3:115"},"nodeType":"YulFunctionCall","src":"2276:19:115"}],"functionName":{"name":"abi_decode_t_bool_fromMemory","nodeType":"YulIdentifier","src":"2247:28:115"},"nodeType":"YulFunctionCall","src":"2247:49:115"},"variableNames":[{"name":"value7","nodeType":"YulIdentifier","src":"2237:6:115"}]}]},"name":"abi_decode_tuple_t_uint128t_int128t_uint256t_uint256t_int56t_uint160t_uint32t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1354:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1365:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1377:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1385:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1393:6:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1401:6:115","type":""},{"name":"value4","nodeType":"YulTypedName","src":"1409:6:115","type":""},{"name":"value5","nodeType":"YulTypedName","src":"1417:6:115","type":""},{"name":"value6","nodeType":"YulTypedName","src":"1425:6:115","type":""},{"name":"value7","nodeType":"YulTypedName","src":"1433:6:115","type":""}],"src":"1251:1051:115"},{"body":{"nodeType":"YulBlock","src":"2388:113:115","statements":[{"body":{"nodeType":"YulBlock","src":"2434:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2443:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2451:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2436:6:115"},"nodeType":"YulFunctionCall","src":"2436:22:115"},"nodeType":"YulExpressionStatement","src":"2436:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2409:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"2418:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2405:3:115"},"nodeType":"YulFunctionCall","src":"2405:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"2430:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2401:3:115"},"nodeType":"YulFunctionCall","src":"2401:32:115"},"nodeType":"YulIf","src":"2398:2:115"},{"nodeType":"YulAssignment","src":"2469:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2485:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2479:5:115"},"nodeType":"YulFunctionCall","src":"2479:16:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2469:6:115"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2354:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2365:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2377:6:115","type":""}],"src":"2307:194:115"},{"body":{"nodeType":"YulBlock","src":"2721:717:115","statements":[{"nodeType":"YulVariableDeclaration","src":"2731:12:115","value":{"kind":"number","nodeType":"YulLiteral","src":"2741:2:115","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2735:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2752:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2770:9:115"},{"name":"_1","nodeType":"YulIdentifier","src":"2781:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2766:3:115"},"nodeType":"YulFunctionCall","src":"2766:18:115"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"2756:6:115","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2800:9:115"},{"name":"_1","nodeType":"YulIdentifier","src":"2811:2:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2793:6:115"},"nodeType":"YulFunctionCall","src":"2793:21:115"},"nodeType":"YulExpressionStatement","src":"2793:21:115"},{"nodeType":"YulVariableDeclaration","src":"2823:17:115","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"2834:6:115"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"2827:3:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2849:27:115","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2869:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2863:5:115"},"nodeType":"YulFunctionCall","src":"2863:13:115"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2853:6:115","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"2892:6:115"},{"name":"length","nodeType":"YulIdentifier","src":"2900:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2885:6:115"},"nodeType":"YulFunctionCall","src":"2885:22:115"},"nodeType":"YulExpressionStatement","src":"2885:22:115"},{"nodeType":"YulVariableDeclaration","src":"2916:12:115","value":{"kind":"number","nodeType":"YulLiteral","src":"2926:2:115","type":"","value":"64"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2920:2:115","type":""}]},{"nodeType":"YulAssignment","src":"2937:25:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2948:9:115"},{"name":"_2","nodeType":"YulIdentifier","src":"2959:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2944:3:115"},"nodeType":"YulFunctionCall","src":"2944:18:115"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2937:3:115"}]},{"nodeType":"YulVariableDeclaration","src":"2971:29:115","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2989:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"2997:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2985:3:115"},"nodeType":"YulFunctionCall","src":"2985:15:115"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"2975:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3009:13:115","value":{"name":"tail","nodeType":"YulIdentifier","src":"3018:4:115"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3013:1:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"3080:332:115","statements":[{"nodeType":"YulVariableDeclaration","src":"3094:23:115","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3110:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3104:5:115"},"nodeType":"YulFunctionCall","src":"3104:13:115"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"3098:2:115","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3137:3:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3153:1:115","type":"","value":"2"},{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3162:2:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3156:5:115"},"nodeType":"YulFunctionCall","src":"3156:9:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"3142:10:115"},"nodeType":"YulFunctionCall","src":"3142:24:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3130:6:115"},"nodeType":"YulFunctionCall","src":"3130:37:115"},"nodeType":"YulExpressionStatement","src":"3130:37:115"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3191:3:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3196:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3187:3:115"},"nodeType":"YulFunctionCall","src":"3187:12:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3212:2:115","type":"","value":"15"},{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3226:2:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3230:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3222:3:115"},"nodeType":"YulFunctionCall","src":"3222:11:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3216:5:115"},"nodeType":"YulFunctionCall","src":"3216:18:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"3201:10:115"},"nodeType":"YulFunctionCall","src":"3201:34:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3180:6:115"},"nodeType":"YulFunctionCall","src":"3180:56:115"},"nodeType":"YulExpressionStatement","src":"3180:56:115"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3260:3:115"},{"name":"_2","nodeType":"YulIdentifier","src":"3265:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3256:3:115"},"nodeType":"YulFunctionCall","src":"3256:12:115"},{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3284:2:115"},{"name":"_2","nodeType":"YulIdentifier","src":"3288:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3280:3:115"},"nodeType":"YulFunctionCall","src":"3280:11:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3274:5:115"},"nodeType":"YulFunctionCall","src":"3274:18:115"},{"kind":"number","nodeType":"YulLiteral","src":"3294:34:115","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3270:3:115"},"nodeType":"YulFunctionCall","src":"3270:59:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3249:6:115"},"nodeType":"YulFunctionCall","src":"3249:81:115"},"nodeType":"YulExpressionStatement","src":"3249:81:115"},{"nodeType":"YulAssignment","src":"3343:21:115","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3354:3:115"},{"kind":"number","nodeType":"YulLiteral","src":"3359:4:115","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3350:3:115"},"nodeType":"YulFunctionCall","src":"3350:14:115"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3343:3:115"}]},{"nodeType":"YulAssignment","src":"3377:25:115","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3391:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3399:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3387:3:115"},"nodeType":"YulFunctionCall","src":"3387:15:115"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3377:6:115"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3042:1:115"},{"name":"length","nodeType":"YulIdentifier","src":"3045:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3039:2:115"},"nodeType":"YulFunctionCall","src":"3039:13:115"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3053:18:115","statements":[{"nodeType":"YulAssignment","src":"3055:14:115","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3064:1:115"},{"kind":"number","nodeType":"YulLiteral","src":"3067:1:115","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3060:3:115"},"nodeType":"YulFunctionCall","src":"3060:9:115"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3055:1:115"}]}]},"pre":{"nodeType":"YulBlock","src":"3035:3:115","statements":[]},"src":"3031:381:115"},{"nodeType":"YulAssignment","src":"3421:11:115","value":{"name":"pos","nodeType":"YulIdentifier","src":"3429:3:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3421:4:115"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_PopulatedTick_$10152_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_PopulatedTick_$10152_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2690:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2701:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2712:4:115","type":""}],"src":"2506:932:115"},{"body":{"nodeType":"YulBlock","src":"3540:91:115","statements":[{"nodeType":"YulAssignment","src":"3550:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3562:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"3573:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3558:3:115"},"nodeType":"YulFunctionCall","src":"3558:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3550:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3592:9:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3614:1:115","type":"","value":"1"},{"name":"value0","nodeType":"YulIdentifier","src":"3617:6:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"3603:10:115"},"nodeType":"YulFunctionCall","src":"3603:21:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3585:6:115"},"nodeType":"YulFunctionCall","src":"3585:40:115"},"nodeType":"YulExpressionStatement","src":"3585:40:115"}]},"name":"abi_encode_tuple_t_int16__to_t_int16__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3509:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3520:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3531:4:115","type":""}],"src":"3443:188:115"},{"body":{"nodeType":"YulBlock","src":"3733:91:115","statements":[{"nodeType":"YulAssignment","src":"3743:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3755:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"3766:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3751:3:115"},"nodeType":"YulFunctionCall","src":"3751:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3743:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3785:9:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3807:1:115","type":"","value":"2"},{"name":"value0","nodeType":"YulIdentifier","src":"3810:6:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"3796:10:115"},"nodeType":"YulFunctionCall","src":"3796:21:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3778:6:115"},"nodeType":"YulFunctionCall","src":"3778:40:115"},"nodeType":"YulExpressionStatement","src":"3778:40:115"}]},"name":"abi_encode_tuple_t_int24__to_t_int24__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3702:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3713:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3724:4:115","type":""}],"src":"3636:188:115"},{"body":{"nodeType":"YulBlock","src":"3876:109:115","statements":[{"body":{"nodeType":"YulBlock","src":"3963:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3972:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3975:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3965:6:115"},"nodeType":"YulFunctionCall","src":"3965:12:115"},"nodeType":"YulExpressionStatement","src":"3965:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3899:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3910:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"3917:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3906:3:115"},"nodeType":"YulFunctionCall","src":"3906:54:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3896:2:115"},"nodeType":"YulFunctionCall","src":"3896:65:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3889:6:115"},"nodeType":"YulFunctionCall","src":"3889:73:115"},"nodeType":"YulIf","src":"3886:2:115"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3865:5:115","type":""}],"src":"3829:156:115"}]},"contents":"{\n    { }\n    function abi_decode_t_bool_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_t_uint160_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        validator_revert_t_address(value)\n    }\n    function abi_decode_t_uint32_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_int16(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, signextend(1, value_1))) { revert(value1, value1) }\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_int24_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        if iszero(eq(value, signextend(2, value))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint128t_int128t_uint256t_uint256t_int56t_uint160t_uint32t_bool_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n    {\n        if slt(sub(dataEnd, headStart), 256) { revert(value4, value4) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffff))) { revert(value4, value4) }\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        if iszero(eq(value_1, signextend(15, value_1))) { revert(value4, value4) }\n        value1 := value_1\n        value2 := mload(add(headStart, 64))\n        value3 := mload(add(headStart, 96))\n        let value_2 := mload(add(headStart, 128))\n        if iszero(eq(value_2, signextend(6, value_2))) { revert(value4, value4) }\n        value4 := value_2\n        value5 := abi_decode_t_uint160_fromMemory(add(headStart, 160))\n        value6 := abi_decode_t_uint32_fromMemory(add(headStart, 192))\n        value7 := abi_decode_t_bool_fromMemory(add(headStart, 224))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_array$_t_struct$_PopulatedTick_$10152_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_PopulatedTick_$10152_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        let _2 := 64\n        pos := add(headStart, _2)\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let _3 := mload(srcPtr)\n            mstore(pos, signextend(2, mload(_3)))\n            mstore(add(pos, _1), signextend(15, mload(add(_3, _1))))\n            mstore(add(pos, _2), and(mload(add(_3, _2)), 0xffffffffffffffffffffffffffffffff))\n            pos := add(pos, 0x60)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_int16__to_t_int16__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, signextend(1, value0))\n    }\n    function abi_encode_tuple_t_int24__to_t_int24__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, signextend(2, value0))\n    }\n    function validator_revert_t_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n}","id":115,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061002b5760003560e01c8063351fb47814610030575b600080fd5b61004361003e36600461037c565b610059565b60405161005091906104aa565b60405180910390f35b606060008373ffffffffffffffffffffffffffffffffffffffff16635339c296846040518263ffffffff1660e01b8152600401610096919061051b565b60206040518083038186803b1580156100ae57600080fd5b505afa1580156100c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e69190610492565b90506000805b610100811015610110576001811b831615610108576001909101905b6001016100ec565b5060008573ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561015957600080fd5b505afa15801561016d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019191906103ba565b90508167ffffffffffffffff811180156101aa57600080fd5b506040519080825280602002602001820160405280156101e457816020015b6101d1610328565b8152602001906001900390816101c95790505b50935060005b61010081101561031e576001811b841615610316576040517ff30dba93000000000000000000000000000000000000000000000000000000008152600187900b60020b60081b8201830290600090819073ffffffffffffffffffffffffffffffffffffffff8b169063f30dba9390610266908690600401610529565b6101006040518083038186803b15801561027f57600080fd5b505afa158015610293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b791906103e2565b5050505050509150915060405180606001604052808460020b815260200182600f0b8152602001836fffffffffffffffffffffffffffffffff168152508887600190039750878151811061030757fe5b60200260200101819052505050505b6001016101ea565b5050505092915050565b604080516060810182526000808252602082018190529181019190915290565b8051801515811461035857600080fd5b919050565b805161035881610537565b805163ffffffff8116811461035857600080fd5b6000806040838503121561038e578182fd5b823561039981610537565b91506020830135600181900b81146103af578182fd5b809150509250929050565b6000602082840312156103cb578081fd5b81518060020b81146103db578182fd5b9392505050565b600080600080600080600080610100898b0312156103fe578384fd5b88516fffffffffffffffffffffffffffffffff8116811461041d578485fd5b80985050602089015180600f0b8114610434578485fd5b80975050604089015195506060890151945060808901518060060b8114610459578485fd5b935061046760a08a0161035d565b925061047560c08a01610368565b915061048360e08a01610348565b90509295985092959890939650565b6000602082840312156104a3578081fd5b5051919050565b602080825282518282018190526000919060409081850190868401855b8281101561050e578151805160020b855286810151600f0b878601528501516fffffffffffffffffffffffffffffffff1685850152606090930192908501906001016104c7565b5091979650505050505050565b60019190910b815260200190565b60029190910b815260200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461055957600080fd5b5056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x351FB478 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0x37C JUMP JUMPDEST PUSH2 0x59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x50 SWAP2 SWAP1 PUSH2 0x4AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5339C296 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x51B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE6 SWAP2 SWAP1 PUSH2 0x492 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x110 JUMPI PUSH1 0x1 DUP2 SHL DUP4 AND ISZERO PUSH2 0x108 JUMPI PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x1 ADD PUSH2 0xEC JUMP JUMPDEST POP PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x191 SWAP2 SWAP1 PUSH2 0x3BA JUMP JUMPDEST SWAP1 POP DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1E4 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1D1 PUSH2 0x328 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1C9 JUMPI SWAP1 POP JUMPDEST POP SWAP4 POP PUSH1 0x0 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x31E JUMPI PUSH1 0x1 DUP2 SHL DUP5 AND ISZERO PUSH2 0x316 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF30DBA9300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 DUP8 SWAP1 SIGNEXTEND PUSH1 0x2 SIGNEXTEND PUSH1 0x8 SHL DUP3 ADD DUP4 MUL SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP1 PUSH4 0xF30DBA93 SWAP1 PUSH2 0x266 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x529 JUMP JUMPDEST PUSH2 0x100 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x293 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2B7 SWAP2 SWAP1 PUSH2 0x3E2 JUMP JUMPDEST POP POP POP POP POP POP SWAP2 POP SWAP2 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP9 DUP8 PUSH1 0x1 SWAP1 SUB SWAP8 POP DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x307 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1EA JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x358 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x358 DUP2 PUSH2 0x537 JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x358 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x38E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x399 DUP2 PUSH2 0x537 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x3AF JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3CB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x3DB JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x3FE JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x41D JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 SWAP9 POP POP PUSH1 0x20 DUP10 ADD MLOAD DUP1 PUSH1 0xF SIGNEXTEND DUP2 EQ PUSH2 0x434 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 SWAP8 POP POP PUSH1 0x40 DUP10 ADD MLOAD SWAP6 POP PUSH1 0x60 DUP10 ADD MLOAD SWAP5 POP PUSH1 0x80 DUP10 ADD MLOAD DUP1 PUSH1 0x6 SIGNEXTEND DUP2 EQ PUSH2 0x459 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP4 POP PUSH2 0x467 PUSH1 0xA0 DUP11 ADD PUSH2 0x35D JUMP JUMPDEST SWAP3 POP PUSH2 0x475 PUSH1 0xC0 DUP11 ADD PUSH2 0x368 JUMP JUMPDEST SWAP2 POP PUSH2 0x483 PUSH1 0xE0 DUP11 ADD PUSH2 0x348 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A3 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x50E JUMPI DUP2 MLOAD DUP1 MLOAD PUSH1 0x2 SIGNEXTEND DUP6 MSTORE DUP7 DUP2 ADD MLOAD PUSH1 0xF SIGNEXTEND DUP8 DUP7 ADD MSTORE DUP6 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 ADD MSTORE PUSH1 0x60 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4C7 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP2 SWAP1 SWAP2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"284:1272:78:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;351:1203;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;473:37;546:14;576:4;563:29;;;593:15;563:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;546:63;-1:-1:-1;671:30:78;;711:110;735:3;731:1;:7;711:110;;;773:1;:6;;763:17;;:21;759:51;;786:24;;;;;759:51;740:3;;711:110;;;;868:17;901:4;888:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;868:52;;967:22;947:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;930:60;;1005:9;1000:548;1024:3;1020:1;:7;1000:548;;;1062:1;:6;;1052:17;;:21;1048:490;;1249:39;;;;;1117:22;;;;:27;;1143:1;1117:27;1116:40;;1115:56;;;1093:19;;;;1249:24;;;;;;:39;;1115:56;;1249:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1189:99;;;;;;;;;;1349:174;;;;;;;;1391:13;1349:174;;;;;;1440:12;1349:174;;;;;;1490:14;1349:174;;;;;1306:14;1321:24;;;;;;;1306:40;;;;;;;;;;;;;:217;;;;1048:490;;;;1029:3;;1000:548;;;;351:1203;;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:166:115:-;92:13;;141;;134:21;124:32;;114:2;;170:1;167;160:12;114:2;73:107;;;:::o;185:142::-;266:13;;288:33;266:13;288:33;:::i;332:169::-;412:13;;465:10;454:22;;444:33;;434:2;;491:1;488;481:12;506:438;;;633:2;621:9;612:7;608:23;604:32;601:2;;;654:6;646;639:22;601:2;698:9;685:23;717:33;744:5;717:33;:::i;:::-;769:5;-1:-1:-1;826:2:115;811:18;;798:32;872:1;861:22;;;849:35;;839:2;;903:6;895;888:22;839:2;931:7;921:17;;;591:353;;;;;:::o;949:297::-;;1070:2;1058:9;1049:7;1045:23;1041:32;1038:2;;;1091:6;1083;1076:22;1038:2;1128:9;1122:16;1181:5;1178:1;1167:20;1160:5;1157:31;1147:2;;1207:6;1199;1192:22;1147:2;1235:5;1028:218;-1:-1:-1;;;1028:218:115:o;1251:1051::-;;;;;;;;;1486:3;1474:9;1465:7;1461:23;1457:33;1454:2;;;1508:6;1500;1493:22;1454:2;1545:9;1539:16;1595:34;1588:5;1584:46;1577:5;1574:57;1564:2;;1650:6;1642;1635:22;1564:2;1678:5;1668:15;;;1728:2;1717:9;1713:18;1707:25;1778:7;1774:2;1763:23;1754:7;1751:36;1741:2;;1806:6;1798;1791:22;1741:2;1834:7;1824:17;;;1881:2;1870:9;1866:18;1860:25;1850:35;;1925:2;1914:9;1910:18;1904:25;1894:35;;1974:3;1963:9;1959:19;1953:26;2024:7;2021:1;2010:22;2001:7;1998:35;1988:2;;2052:6;2044;2037:22;1988:2;2080:7;-1:-1:-1;2106:52:115;2153:3;2138:19;;2106:52;:::i;:::-;2096:62;;2177:51;2223:3;2212:9;2208:19;2177:51;:::i;:::-;2167:61;;2247:49;2291:3;2280:9;2276:19;2247:49;:::i;:::-;2237:59;;1444:858;;;;;;;;;;;:::o;2307:194::-;;2430:2;2418:9;2409:7;2405:23;2401:32;2398:2;;;2451:6;2443;2436:22;2398:2;-1:-1:-1;2479:16:115;;2388:113;-1:-1:-1;2388:113:115:o;2506:932::-;2741:2;2793:21;;;2863:13;;2766:18;;;2885:22;;;2506:932;;2741:2;2926;;2944:18;;;;2985:15;;;2506:932;3031:381;3045:6;3042:1;3039:13;3031:381;;;3104:13;;3156:9;;3153:1;3142:24;3130:37;;3222:11;;;3216:18;3212:2;3201:34;3187:12;;;3180:56;3280:11;;3274:18;3294:34;3270:59;3256:12;;;3249:81;3359:4;3350:14;;;;3387:15;;;;3067:1;3060:9;3031:381;;;-1:-1:-1;3429:3:115;;2721:717;-1:-1:-1;;;;;;;2721:717:115:o;3443:188::-;3614:1;3603:21;;;;3585:40;;3573:2;3558:18;;3540:91::o;3636:188::-;3807:1;3796:21;;;;3778:40;;3766:2;3751:18;;3733:91::o;3829:156::-;3917:42;3910:5;3906:54;3899:5;3896:65;3886:2;;3975:1;3972;3965:12;3886:2;3876:109;:::o"},"methodIdentifiers":{"getPopulatedTicksInWord(address,int16)":"351fb478"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"int16\",\"name\":\"tickBitmapIndex\",\"type\":\"int16\"}],\"name\":\"getPopulatedTicksInWord\",\"outputs\":[{\"components\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"internalType\":\"uint128\",\"name\":\"liquidityGross\",\"type\":\"uint128\"}],\"internalType\":\"struct ITickLens.PopulatedTick[]\",\"name\":\"populatedTicks\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getPopulatedTicksInWord(address,int16)\":{\"params\":{\"pool\":\"The address of the pool for which to fetch populated tick data\",\"tickBitmapIndex\":\"The index of the word in the tick bitmap for which to parse the bitmap and fetch all the populated ticks\"},\"returns\":{\"populatedTicks\":\"An array of tick data for the given word in the tick bitmap\"}}},\"title\":\"Tick Lens contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getPopulatedTicksInWord(address,int16)\":{\"notice\":\"Get all the tick data for the populated ticks from a word of the tick bitmap of a pool\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lens/TickLens.sol\":\"TickLens\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"contracts/interfaces/ITickLens.sol\":{\"keccak256\":\"0xddfabb24ac5132c33db3735bdf6235ba39ea5e9a23a41e3dd5ec64ea76149ba8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://be307ee42e6576cdf3591e230eac28ddd490ddd4c33d0359c77b862706d86c17\",\"dweb:/ipfs/QmbgK9ziqjyv945r4giTyDaZDF4JVmQ5jQA3Sz78UENFMZ\"]},\"contracts/lens/TickLens.sol\":{\"keccak256\":\"0xbf9639d33651aeba48b8daf22d5eb554b9b14f84f01d7b53b1e1c18afdd1247d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://30a969408f365dd1826115fec7c986bf815e1f10fddfa381b1942161f3f6843e\",\"dweb:/ipfs/QmWELCdtnAzkGMyjvHJvFxxNJgtQcWZg8XCUuqWxMqa8LD\"]}},\"version\":1}"}},"contracts/libraries/AddressStringUtil.sol":{"AddressStringUtil":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"72:1321:79:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"72:1321:79:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/AddressStringUtil.sol\":\"AddressStringUtil\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/libraries/AddressStringUtil.sol\":{\"keccak256\":\"0x1edf9591b1858ce9093a4baaf816280d92bd1441e911a82bf509b8d2bb3195ce\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bb7600744f3ce303df65f763ad7eec56223b9687e19476d992b95ccaf45eaf99\",\"dweb:/ipfs/QmPHDpxSbifD4ThEmM5hZoyfd9K9NMg9k6WZvFhFSFK42w\"]}},\"version\":1}"}},"contracts/libraries/BytesLib.sol":{"BytesLib":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"376:3627:80:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"376:3627:80:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/BytesLib.sol\":\"BytesLib\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/libraries/BytesLib.sol\":{\"keccak256\":\"0xed1b8acd0184eb321d5f4b5c2576608d1c12f5db1bb72d950054438f7f1946a6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f55d6aca86dcf1f1ab6413f48964f821306a29914c2117c16f20446faa5d6d0a\",\"dweb:/ipfs/QmWKbbg6kA9kkPVrCh6hJMnPhK1NhuVoHEd9s3vmYWsvTa\"]}},\"version\":1}"}},"contracts/libraries/CallbackValidation.sol":{"CallbackValidation":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"291:1228:81:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"291:1228:81:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Provides validation for callbacks from AstraDEX CL Pools\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/CallbackValidation.sol\":\"CallbackValidation\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"contracts/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xf21a3d7e2bc14386ce7b072b124b580df53441a32591770845860e8947f942d0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6941e21d9bc52bddc65079c5e7bc9d6ffd6553f6ed7f3d3b340996a55115b46f\",\"dweb:/ipfs/QmaDJ9uafahho77WP5izBCRL4W3mVM7NFL5q5QR5YvAC3A\"]},\"contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xdd82100913bcb7c490e9e6912ab33994bd97d5a59e67209826ebf917bc8271c1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ecfc24c77d80aa718604d8a2c4d59460b76b5fd567d15206414e3838dd6698b7\",\"dweb:/ipfs/QmVtUC9dnade4RkzXaSqEFdAkiEftJ777jmT619LX2VLGv\"]}},\"version\":1}"}},"contracts/libraries/ChainId.sol":{"ChainId":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"124:232:82:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"124:232:82:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Function for getting the current chain ID\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/ChainId.sol\":\"ChainId\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/libraries/ChainId.sol\":{\"keccak256\":\"0x19478399e251074e5c8835eccedca8d3c223479d025e75cd3730131c1f65bdac\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://21cf1f666bb74f1a4180324a4254918cf28d68236a1828140e7e6b21d4bfe857\",\"dweb:/ipfs/QmcTVMseerQiMm2cS5gQ3SEx9kprpyMgWCbiD9VL2kKS2u\"]}},\"version\":1}"}},"contracts/libraries/HexStrings.sol":{"HexStrings":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"57:1154:83:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"57:1154:83:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/HexStrings.sol\":\"HexStrings\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/libraries/HexStrings.sol\":{\"keccak256\":\"0x667d05bd5eb87dd445aee26790f8a96ad1fb339f324be97f85f20d6697533ebc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0deb463c872c0befbc355adabf6eedc42fdddbcbc43ec9baaa7a51fd7422992c\",\"dweb:/ipfs/QmW3Q9jSUCijLet37aLrV4jJcR5ZR3WgUhM3uCf9dDyeFC\"]}},\"version\":1}"}},"contracts/libraries/LiquidityAmounts.sol":{"LiquidityAmounts":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"443:6487:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"443:6487:84:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity amount functions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Provides functions for computing liquidity amounts from token amounts and prices\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/LiquidityAmounts.sol\":\"LiquidityAmounts\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"@airdao/astra-cl-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x5340256039418f5d03512a44173d3dcf1da277a73a461e06fb5668f49cfc46f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75dee99795d1125875233a7f1d356935099cc97b4085c0e451060d77db85d144\",\"dweb:/ipfs/QmTGqyrxVLQd8TBaarqSQDiYvq1QFutCdmTyXk6JpxzKTN\"]},\"contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0x0845f1c8b6a30b2c243a0d285a30ec5653442aec2bc88cd27c83215c6e0f577f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e6303005c2e69c3315875ace1d618459cd8edf4ea499a0f167a83680bd835ae5\",\"dweb:/ipfs/QmcMpVTkGZh6SJoFAbN29w2ABD25zACxRouuqAtCBHATyd\"]}},\"version\":1}"}},"contracts/libraries/NFTSVG.sol":{"NFTSVG":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"376:19036:85:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"376:19036:85:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"NFTSVG\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Provides a function for generating an SVG associated with a AstraDEX NFT\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/NFTSVG.sol\":\"NFTSVG\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/BitMath.sol\":{\"keccak256\":\"0x82e425066110aac05ed8a9fc90f9ee85142b6f434769447e49d4438a8d9fcd82\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://77a97078bc992c18c59cb61e07fa4632c8a26b6babf00f3b16eabb5dcaa953b4\",\"dweb:/ipfs/QmTj15ufLWk6AxedSVXBcLp5cYf2DCJAeDi94cVemCkm54\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x08e38e034333372aea8cb1b8846085b7fbab42c6b77a0af464d2c6827827c4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22746e9348187309fb4fbd3f79f6ad88787103eac10f24bd18f67257fafdd8ad\",\"dweb:/ipfs/QmSLXfXg8b27Xstq58DFGvCpqgtTqpfrGbLMq19PtEKQJS\"]},\"base64-sol/base64.sol\":{\"keccak256\":\"0x0c8ad17afea99676d4dbab1857f52a7660b67602a79d03abd0a4c742074bbeb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://692d64ac089a389d2e955d92c75e9f3ee642257a39c91c2efa7493a21e79d61a\",\"dweb:/ipfs/QmVSGRBRjeh4APNHjHD5GbYY7BrBhWRj8aHkmqHJQwQiK1\"]},\"contracts/libraries/NFTSVG.sol\":{\"keccak256\":\"0x1ad3e059ed0fedde1bccd2006fec33c7da3ddc1355cdd86499c1bcb18e7f5fd3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://22617c2261586fd19540e41ffaef1bbe35dd6f4133c0b319b2a4fa30b8d2819e\",\"dweb:/ipfs/QmfQPyA9w3N3jGUxYXkZT6HiKJQu5EkrKtiMyQTiztzmmU\"]}},\"version\":1}"}},"contracts/libraries/OracleLibrary.sol":{"OracleLibrary":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"528:8941:86:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"528:8941:86:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Oracle library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Provides functions to integrate with CL pool oracle\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/OracleLibrary.sol\":\"OracleLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"@airdao/astra-cl-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x5340256039418f5d03512a44173d3dcf1da277a73a461e06fb5668f49cfc46f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75dee99795d1125875233a7f1d356935099cc97b4085c0e451060d77db85d144\",\"dweb:/ipfs/QmTGqyrxVLQd8TBaarqSQDiYvq1QFutCdmTyXk6JpxzKTN\"]},\"@airdao/astra-cl-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0xe22d07f1ebf9c8468c81cb6905bfc8f8a54fa2f9b4a50742202a47cdbcb5af80\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d4773ca5008d2a2f496370695942c8ba3d6e1d487adbf5cda1149da12e3a6268\",\"dweb:/ipfs/QmcPYTLpEWfU8e3KAYBfHH7uYR4tGAkvnWrWS1CG8EkyLC\"]},\"contracts/libraries/OracleLibrary.sol\":{\"keccak256\":\"0xf9dab1f6ac5c82c1a19688e900ab355a266e85af4f76346db925789352081c31\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1ba91097b8fdd8a46d9b837e7a80f8e3ccdaeb3d49870c6558b88d5064abdfce\",\"dweb:/ipfs/QmaocoW3nkgMSZjTLXm15ERTPN2yFLMAWE114s1R99hgrS\"]}},\"version\":1}"}},"contracts/libraries/Path.sol":{"Path":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"164:2548:87:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"164:2548:87:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ADDR_SIZE\":{\"details\":\"The length of the bytes encoded address\"},\"FEE_SIZE\":{\"details\":\"The length of the bytes encoded fee\"},\"MULTIPLE_POOLS_MIN_LENGTH\":{\"details\":\"The minimum length of an encoding that contains 2 or more pools\"},\"NEXT_OFFSET\":{\"details\":\"The offset of a single token address and pool fee\"},\"POP_OFFSET\":{\"details\":\"The offset of an encoded pool key\"}},\"title\":\"Functions for manipulating path data for multihop swaps\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/Path.sol\":\"Path\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/libraries/BytesLib.sol\":{\"keccak256\":\"0xed1b8acd0184eb321d5f4b5c2576608d1c12f5db1bb72d950054438f7f1946a6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f55d6aca86dcf1f1ab6413f48964f821306a29914c2117c16f20446faa5d6d0a\",\"dweb:/ipfs/QmWKbbg6kA9kkPVrCh6hJMnPhK1NhuVoHEd9s3vmYWsvTa\"]},\"contracts/libraries/Path.sol\":{\"keccak256\":\"0x0a6928608f48763796089e22dfc02a462cce63bb7727663961b3ed8c4f3eb862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://73bb4f107faf873db8700ce8950d2c4c88d41e0e1716da599bb733ad884f95eb\",\"dweb:/ipfs/QmZXSaPVpgDXpkKqYRdByJ3UXaMV2ATkr7V72nRZij8wmB\"]}},\"version\":1}"}},"contracts/libraries/PoolAddress.sol":{"PoolAddress":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"167:1623:88:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"167:1623:88:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Provides functions for deriving a pool address from the factory, tokens, and the fee\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/PoolAddress.sol\":\"PoolAddress\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xdd82100913bcb7c490e9e6912ab33994bd97d5a59e67209826ebf917bc8271c1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ecfc24c77d80aa718604d8a2c4d59460b76b5fd567d15206414e3838dd6698b7\",\"dweb:/ipfs/QmVtUC9dnade4RkzXaSqEFdAkiEftJ777jmT619LX2VLGv\"]}},\"version\":1}"}},"contracts/libraries/PoolTicksCounter.sol":{"PoolTicksCounter":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"195:4006:89:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"195:4006:89:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/PoolTicksCounter.sol\":\"PoolTicksCounter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"contracts/libraries/PoolTicksCounter.sol\":{\"keccak256\":\"0xcf0e9ed4ebdc3871261016f3c2fe5bd58f019a09f402e94f3796963bea0ecc3f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4251f98e344e12aa150d883c0c7e5f76790e26d783e683472f4a32df71dbe6c5\",\"dweb:/ipfs/QmNREWy9rHEYPeBuVXa6LWEDjr1K8hFah3ne4E25P1HanB\"]}},\"version\":1}"}},"contracts/libraries/PositionKey.sol":{"PositionKey":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"71:271:90:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"71:271:90:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/PositionKey.sol\":\"PositionKey\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/libraries/PositionKey.sol\":{\"keccak256\":\"0xd72d0eeec86263f20e0f09a5997df27da1d0e1da31c3fd4874d6b67038066a9b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1aa47fde0fcab8f874815218f74005d5d569ec73b181a49014159f635a57b61b\",\"dweb:/ipfs/QmZGYC5na1nGcenPAHRJM8QfqQhrw7WYKFPHbE3MpQYP1s\"]}},\"version\":1}"}},"contracts/libraries/PositionValue.sol":{"PositionValue":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"781:6569:91:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"781:6569:91:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Returns information about the token value held in a AstraDEX CL NFT\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/PositionValue.sol\":\"PositionValue\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol\":{\"keccak256\":\"0x2d1f4f73ae0d8f0a210b8d30084659b57c56ac8f2f96011fca36f00a6d417178\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2ba88933f16cd2df398e19c6ad227268f83c03081b70d243c97116d2ed9bc241\",\"dweb:/ipfs/QmTUGxdh8snzEM9VrTSS47StCg9VVWvvLJtJeNnMTFY4xb\"]},\"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"@airdao/astra-cl-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x5340256039418f5d03512a44173d3dcf1da277a73a461e06fb5668f49cfc46f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75dee99795d1125875233a7f1d356935099cc97b4085c0e451060d77db85d144\",\"dweb:/ipfs/QmTGqyrxVLQd8TBaarqSQDiYvq1QFutCdmTyXk6JpxzKTN\"]},\"@airdao/astra-cl-core/contracts/libraries/LiquidityMath.sol\":{\"keccak256\":\"0xd53041349718d5bce4a89e87cd911879d41ba42ba3fab0614e5e8b742f352b88\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ea7529b99ab4fc1d3e6c5a31990fb688f0a2d6cc302c0419e0cf5a2d6c563781\",\"dweb:/ipfs/QmVaphRSNpfChHZKzutQ9WprwCo2WE1euvThRfHcwsnHhj\"]},\"@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0x86715eb960f18e01ac94e3bba4614ed51a887fa3c5bd1c43bf80aa98e019cf2d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfc1d5d58e59015086b0e65a6c3a2ddad312e2350480510f6c0c8167f3d71a37\",\"dweb:/ipfs/QmQndULYjFsHKHjMAKLMfc12vWbVB5FawtioHtvwcWRJZp\"]},\"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0xd4c1c1b67f946b077d7c52a158113763a89a210fc2927b8491055a962ecd18c0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5344400c74320ca8dbe19241db7ff49babbd6c875c1b561c79d6e4315a9fb5f9\",\"dweb:/ipfs/QmRKCNTbkovxK1WvejXZr3iAHhGN97ZT1yWGsWCJFkrT5X\"]},\"@airdao/astra-cl-core/contracts/libraries/Tick.sol\":{\"keccak256\":\"0x473bf9fd987161de1ecf215190db4c94b50eb12ea9ebafecbc7acef1bcd79dee\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e3e948f35862db5adeaffdb1f7072b51bc570041920e6593da61262eb0ac4817\",\"dweb:/ipfs/QmUDYpKSzSaFyDiC8AQx3RTzex3bu1W1g53itPyEJZkC1L\"]},\"@airdao/astra-cl-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0xe22d07f1ebf9c8468c81cb6905bfc8f8a54fa2f9b4a50742202a47cdbcb5af80\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d4773ca5008d2a2f496370695942c8ba3d6e1d487adbf5cda1149da12e3a6268\",\"dweb:/ipfs/QmcPYTLpEWfU8e3KAYBfHH7uYR4tGAkvnWrWS1CG8EkyLC\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]},\"contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x383d39a13ce10019d4ebd27a694d085c03a1498a1cc31ec1511fac91b5296342\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3d22d9cc7a33829bd31da42d96bd75401a675ef32c8eb4d9e3074c21ec1241b6\",\"dweb:/ipfs/QmNrvD2T3k3wH5kWz6Kss9mSjxdJhXAA6NTH1Evj8j3k6A\"]},\"contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x920448f826d2d8e40aae06ce855644abac394c085a769605399d80cb36bde27f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b299cd039cf1fb92c9c58f666dfbb2753431f3904bed659ddd653ad9a503045\",\"dweb:/ipfs/QmZWb11WyJgGCW35e2opF3Ncstu59krJCDPAZpHWU9rqix\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x57bd5b069f6e66edd42a9b41e5864bfcd2aa7d404337d6c57a083fb589fc59bd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4efa92b18c295755437180f93a19179ef15dfe24a6db10ae876c41247fd4a907\",\"dweb:/ipfs/QmYJTRqE5BEjqyNoZqoctVFgxZF336cK9ba1RSd2LbgFkG\"]},\"contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x5d9b76c0eed9d836f8ab1d65a37921c56c46a69802f28c312f239ce159634473\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ab60ec035cd2f600d7e89828bcf1427a674defdcb4c511679144aae42273ba2d\",\"dweb:/ipfs/QmYWy2dAG2Mq4BUwybjVCbGtXYRG8Lz1jRfK6L924YuwRa\"]},\"contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0x0845f1c8b6a30b2c243a0d285a30ec5653442aec2bc88cd27c83215c6e0f577f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e6303005c2e69c3315875ace1d618459cd8edf4ea499a0f167a83680bd835ae5\",\"dweb:/ipfs/QmcMpVTkGZh6SJoFAbN29w2ABD25zACxRouuqAtCBHATyd\"]},\"contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xdd82100913bcb7c490e9e6912ab33994bd97d5a59e67209826ebf917bc8271c1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ecfc24c77d80aa718604d8a2c4d59460b76b5fd567d15206414e3838dd6698b7\",\"dweb:/ipfs/QmVtUC9dnade4RkzXaSqEFdAkiEftJ777jmT619LX2VLGv\"]},\"contracts/libraries/PositionKey.sol\":{\"keccak256\":\"0xd72d0eeec86263f20e0f09a5997df27da1d0e1da31c3fd4874d6b67038066a9b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1aa47fde0fcab8f874815218f74005d5d569ec73b181a49014159f635a57b61b\",\"dweb:/ipfs/QmZGYC5na1nGcenPAHRJM8QfqQhrw7WYKFPHbE3MpQYP1s\"]},\"contracts/libraries/PositionValue.sol\":{\"keccak256\":\"0xe6c9e1d4fc0a113326d21ee1d836a965cc09f8fb5938ac695e3e0d6a73414c55\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://32c1212078d662e38fa8cea561464ff1ef9e33a730b484b1283278e614483477\",\"dweb:/ipfs/Qmf2yCzH6vXBiaZoASwjVFAAQeZEu6VB1w1LZcbkGrzhMZ\"]}},\"version\":1}"}},"contracts/libraries/SafeERC20Namer.sol":{"SafeERC20Namer":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"303:3524:92:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"303:3524:92:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/SafeERC20Namer.sol\":\"SafeERC20Namer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/libraries/AddressStringUtil.sol\":{\"keccak256\":\"0x1edf9591b1858ce9093a4baaf816280d92bd1441e911a82bf509b8d2bb3195ce\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bb7600744f3ce303df65f763ad7eec56223b9687e19476d992b95ccaf45eaf99\",\"dweb:/ipfs/QmPHDpxSbifD4ThEmM5hZoyfd9K9NMg9k6WZvFhFSFK42w\"]},\"contracts/libraries/SafeERC20Namer.sol\":{\"keccak256\":\"0x268aaae7920551371023765da8968743b9c1bbc9e446730ff76de6cb4ee77420\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e7ef384c12b35ba88ae0462515556e8625ff87480e00cd2c135b6511aa88e7b3\",\"dweb:/ipfs/QmYayZDbGAjEvV5Ma3CUbLiDk8BFppjVuHc2FpwT8MyehV\"]}},\"version\":1}"}},"contracts/libraries/SqrtPriceMathPartial.sol":{"SqrtPriceMathPartial":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"647:2345:93:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"647:2345:93:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Functions based on Q64.96 sqrt price and liquidity\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Exposes two functions from @airdao/astra-cl-core SqrtPriceMath that use square root of price as a Q64.96 and liquidity to compute deltas\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/SqrtPriceMathPartial.sol\":\"SqrtPriceMathPartial\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"@airdao/astra-cl-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x5340256039418f5d03512a44173d3dcf1da277a73a461e06fb5668f49cfc46f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75dee99795d1125875233a7f1d356935099cc97b4085c0e451060d77db85d144\",\"dweb:/ipfs/QmTGqyrxVLQd8TBaarqSQDiYvq1QFutCdmTyXk6JpxzKTN\"]},\"@airdao/astra-cl-core/contracts/libraries/UnsafeMath.sol\":{\"keccak256\":\"0x5f36d7d16348d8c37fe64fda932018d6e5e8acecd054f0f97d32db62d20c6c88\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4bd4e817ea3d2c26bb2be7e58db3eaa403119562c18d4c09cc92fb31aa231496\",\"dweb:/ipfs/QmbpjgL8Hf1mhmUyf9hpuPk4noGAggCdTqaRBFKqNF3AQw\"]},\"contracts/libraries/SqrtPriceMathPartial.sol\":{\"keccak256\":\"0x4be50274e071243e44ce09b6cbe8e1d09476c013966f44227920f10d6240c969\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://44195fefe2926d9768dd51d20a5af59ed7eef6f0ccaac53423b469acae9f4944\",\"dweb:/ipfs/QmWur53rwERVqNkUGHPPHwfj4qqfvhZ4vChXYNXm8xdGmT\"]}},\"version\":1}"}},"contracts/libraries/TokenRatioSortOrder.sol":{"TokenRatioSortOrder":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"57:283:94:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"57:283:94:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/TokenRatioSortOrder.sol\":\"TokenRatioSortOrder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/libraries/TokenRatioSortOrder.sol\":{\"keccak256\":\"0x370ebd82fb265a65ff76dce636c6f83d8373ec2cfa293f1b2aa6f35ddcc07421\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a27980a3ae94b400717acc4b1fd14001d976cfdf7fb20a264d7f22fe3d5d1ea2\",\"dweb:/ipfs/QmcNjnENJgQS8E9ba9eYXa9fS7smNaJWCp9M8R1JEefBzF\"]}},\"version\":1}"}},"contracts/libraries/TransferHelper.sol":{"TransferHelper":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"602d6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x2D PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"129:2320:95:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000706000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"129:2320:95:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/TransferHelper.sol\":\"TransferHelper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x0fef3409a5a161cd12b777fdfa86845d64b86f72c78b8312c9e3c92f9017e5c5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9df2c76e4581a1d343ea1dd1d0478df7f1c1eef1b476ccea452367ef5b75e65\",\"dweb:/ipfs/QmWZVBRQcn4ekrmCDFkM4BSRAZ1m72GHzUnfzUn39PwQow\"]}},\"version\":1}"}},"contracts/test/Base64Test.sol":{"Base64Test":{"abi":[{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"encode","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"getGasCostOfEncode","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610448806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806312496a1b1461003b57806374b86d1e14610156575b600080fd5b6100e16004803603602081101561005157600080fd5b81019060208101813564010000000081111561006c57600080fd5b82018360208201111561007e57600080fd5b803590602001918460018302840111640100000000831117156100a057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061020e945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561011b578181015183820152602001610103565b50505050905090810190601f1680156101485780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fc6004803603602081101561016c57600080fd5b81019060208101813564010000000081111561018757600080fd5b82018360208201111561019957600080fd5b803590602001918460018302840111640100000000831117156101bb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610221945050505050565b60408051918252519081900360200190f35b60606102198261023a565b90505b919050565b6000805a90506102308361023a565b505a900392915050565b606081516000141561025b575060408051602081019091526000815261021c565b60006040518060600160405280604081526020016103fc6040913990506000600384516002018161028857fe5b04600402905060008160200167ffffffffffffffff811180156102aa57600080fd5b506040519080825280601f01601f1916602001820160405280156102d5576020820181803683370190505b509050818152600183018586518101602084015b818310156103435760039283018051603f601282901c811687015160f890811b8552600c83901c8216880151811b6001860152600683901c8216880151811b60028601529116860151901b938201939093526004016102e9565b60038951066001811461035d57600281146103a7576103ed565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8301526103ed565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b50939897505050505050505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x448 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x12496A1B EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x74B86D1E EQ PUSH2 0x156 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x20E SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x148 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x187 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x221 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH2 0x219 DUP3 PUSH2 0x23A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x230 DUP4 PUSH2 0x23A JUMP JUMPDEST POP GAS SWAP1 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x25B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x21C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x40 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3FC PUSH1 0x40 SWAP2 CODECOPY SWAP1 POP PUSH1 0x0 PUSH1 0x3 DUP5 MLOAD PUSH1 0x2 ADD DUP2 PUSH2 0x288 JUMPI INVALID JUMPDEST DIV PUSH1 0x4 MUL SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x20 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2D5 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD DUP6 DUP7 MLOAD DUP2 ADD PUSH1 0x20 DUP5 ADD JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x343 JUMPI PUSH1 0x3 SWAP3 DUP4 ADD DUP1 MLOAD PUSH1 0x3F PUSH1 0x12 DUP3 SWAP1 SHR DUP2 AND DUP8 ADD MLOAD PUSH1 0xF8 SWAP1 DUP2 SHL DUP6 MSTORE PUSH1 0xC DUP4 SWAP1 SHR DUP3 AND DUP9 ADD MLOAD DUP2 SHL PUSH1 0x1 DUP7 ADD MSTORE PUSH1 0x6 DUP4 SWAP1 SHR DUP3 AND DUP9 ADD MLOAD DUP2 SHL PUSH1 0x2 DUP7 ADD MSTORE SWAP2 AND DUP7 ADD MLOAD SWAP1 SHL SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x4 ADD PUSH2 0x2E9 JUMP JUMPDEST PUSH1 0x3 DUP10 MLOAD MOD PUSH1 0x1 DUP2 EQ PUSH2 0x35D JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x3A7 JUMPI PUSH2 0x3ED JUMP JUMPDEST PUSH32 0x3D3D000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE DUP4 ADD MSTORE PUSH2 0x3ED JUMP JUMPDEST PUSH32 0x3D00000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD MSTORE JUMPDEST POP SWAP4 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID COINBASE TIMESTAMP NUMBER DIFFICULTY GASLIMIT CHAINID SELFBALANCE 0x48 0x49 0x4A 0x4B 0x4C 0x4D 0x4E 0x4F POP MLOAD MSTORE MSTORE8 SLOAD SSTORE JUMP JUMPI PC MSIZE GAS PUSH2 0x6263 PUSH5 0x6566676869 PUSH11 0x6B6C6D6E6F707172737475 PUSH23 0x7778797A303132333435363738392B2FA164736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"97:342:96:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c806312496a1b1461003b57806374b86d1e14610156575b600080fd5b6100e16004803603602081101561005157600080fd5b81019060208101813564010000000081111561006c57600080fd5b82018360208201111561007e57600080fd5b803590602001918460018302840111640100000000831117156100a057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061020e945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561011b578181015183820152602001610103565b50505050905090810190601f1680156101485780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fc6004803603602081101561016c57600080fd5b81019060208101813564010000000081111561018757600080fd5b82018360208201111561019957600080fd5b803590602001918460018302840111640100000000831117156101bb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610221945050505050565b60408051918252519081900360200190f35b60606102198261023a565b90505b919050565b6000805a90506102308361023a565b505a900392915050565b606081516000141561025b575060408051602081019091526000815261021c565b60006040518060600160405280604081526020016103fc6040913990506000600384516002018161028857fe5b04600402905060008160200167ffffffffffffffff811180156102aa57600080fd5b506040519080825280601f01601f1916602001820160405280156102d5576020820181803683370190505b509050818152600183018586518101602084015b818310156103435760039283018051603f601282901c811687015160f890811b8552600c83901c8216880151811b6001860152600683901c8216880151811b60028601529116860151901b938201939093526004016102e9565b60038951066001811461035d57600281146103a7576103ed565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8301526103ed565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b50939897505050505050505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x12496A1B EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x74B86D1E EQ PUSH2 0x156 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x20E SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x148 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x187 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x221 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH2 0x219 DUP3 PUSH2 0x23A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x230 DUP4 PUSH2 0x23A JUMP JUMPDEST POP GAS SWAP1 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x25B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x21C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x40 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3FC PUSH1 0x40 SWAP2 CODECOPY SWAP1 POP PUSH1 0x0 PUSH1 0x3 DUP5 MLOAD PUSH1 0x2 ADD DUP2 PUSH2 0x288 JUMPI INVALID JUMPDEST DIV PUSH1 0x4 MUL SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x20 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2D5 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD DUP6 DUP7 MLOAD DUP2 ADD PUSH1 0x20 DUP5 ADD JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x343 JUMPI PUSH1 0x3 SWAP3 DUP4 ADD DUP1 MLOAD PUSH1 0x3F PUSH1 0x12 DUP3 SWAP1 SHR DUP2 AND DUP8 ADD MLOAD PUSH1 0xF8 SWAP1 DUP2 SHL DUP6 MSTORE PUSH1 0xC DUP4 SWAP1 SHR DUP3 AND DUP9 ADD MLOAD DUP2 SHL PUSH1 0x1 DUP7 ADD MSTORE PUSH1 0x6 DUP4 SWAP1 SHR DUP3 AND DUP9 ADD MLOAD DUP2 SHL PUSH1 0x2 DUP7 ADD MSTORE SWAP2 AND DUP7 ADD MLOAD SWAP1 SHL SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x4 ADD PUSH2 0x2E9 JUMP JUMPDEST PUSH1 0x3 DUP10 MLOAD MOD PUSH1 0x1 DUP2 EQ PUSH2 0x35D JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x3A7 JUMPI PUSH2 0x3ED JUMP JUMPDEST PUSH32 0x3D3D000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE DUP4 ADD MSTORE PUSH2 0x3ED JUMP JUMPDEST PUSH32 0x3D00000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD MSTORE JUMPDEST POP SWAP4 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID COINBASE TIMESTAMP NUMBER DIFFICULTY GASLIMIT CHAINID SELFBALANCE 0x48 0x49 0x4A 0x4B 0x4C 0x4D 0x4E 0x4F POP MLOAD MSTORE MSTORE8 SLOAD SSTORE JUMP JUMPI PC MSIZE GAS PUSH2 0x6263 PUSH5 0x6566676869 PUSH11 0x6B6C6D6E6F707172737475 PUSH23 0x7778797A303132333435363738392B2FA164736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"97:342:96:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;123:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;123:116:96;;-1:-1:-1;123:116:96;;-1:-1:-1;;;;;123:116:96:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;245:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;245:192:96;;-1:-1:-1;245:192:96;;-1:-1:-1;;;;;245:192:96:i;:::-;;;;;;;;;;;;;;;;123:116;181:13;213:19;227:4;213:13;:19::i;:::-;206:26;;123:116;;;;:::o;245:192::-;315:7;334:17;354:9;334:29;;373:19;387:4;373:13;:19::i;:::-;;421:9;409:21;;;245:192;-1:-1:-1;;245:192:96:o;293:1985:43:-;351:13;380:4;:11;395:1;380:16;376:31;;;-1:-1:-1;398:9:43;;;;;;;;;-1:-1:-1;398:9:43;;;;376:31;464:19;486:5;;;;;;;;;;;;;;;;;464:27;;540:18;586:1;567:4;:11;581:1;567:15;566:21;;;;;;561:1;:27;540:48;;668:20;702:10;715:2;702:15;691:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;691:27:43;;668:50;;811:10;803:6;796:26;915:1;908:5;904:13;983:4;1033;1027:11;1018:7;1014:25;1138:2;1130:6;1126:15;1220:794;1239:6;1230:7;1227:19;1220:794;;;1303:1;1290:15;;;1381:14;;1531:4;1519:2;1515:14;;;1511:25;;1497:40;;1491:47;1486:3;1482:57;;;1464:76;;1657:2;1653:14;;;1649:25;;1635:40;;1629:47;1620:57;;1584:1;1569:17;;1602:76;1796:1;1791:14;;;1787:25;;1773:40;;1767:47;1758:57;;1707:17;;;1740:76;1925:25;;1911:40;;1905:47;1896:57;;1845:17;;;1878:76;;;;1983:17;;1220:794;;;2096:1;2089:4;2083:11;2079:19;2116:1;2111:54;;;;2183:1;2178:52;;;;2072:158;;2111:54;2146:16;2127:17;;;2120:43;2111:54;;2178:52;2213:14;2194:17;;;2187:41;2072:158;-1:-1:-1;2265:6:43;;293:1985;-1:-1:-1;;;;;;;;293:1985:43:o"},"methodIdentifiers":{"encode(bytes)":"12496a1b","getGasCostOfEncode(bytes)":"74b86d1e"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"encode\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getGasCostOfEncode\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/Base64Test.sol\":\"Base64Test\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"base64-sol/base64.sol\":{\"keccak256\":\"0x0c8ad17afea99676d4dbab1857f52a7660b67602a79d03abd0a4c742074bbeb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://692d64ac089a389d2e955d92c75e9f3ee642257a39c91c2efa7493a21e79d61a\",\"dweb:/ipfs/QmVSGRBRjeh4APNHjHD5GbYY7BrBhWRj8aHkmqHJQwQiK1\"]},\"contracts/test/Base64Test.sol\":{\"keccak256\":\"0xd738a7d797b99c08bfbe51a94d80d0f6c2ae109554debe0d64aa734345f12e37\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://98a798c18ce8c6f69e5e7aefbe79b3467b589a60d6f2866f0484c36994254111\",\"dweb:/ipfs/QmcpUm5PmeSS92EyWTjYYE1pwXJLEMHSJsbPZpFeidBSiz\"]}},\"version\":1}"}},"contracts/test/LiquidityAmountsTest.sol":{"LiquidityAmountsTest":{"abi":[{"inputs":[{"internalType":"uint160","name":"sqrtRatioAX96","type":"uint160"},{"internalType":"uint160","name":"sqrtRatioBX96","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"}],"name":"getAmount0ForLiquidity","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtRatioAX96","type":"uint160"},{"internalType":"uint160","name":"sqrtRatioBX96","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"}],"name":"getAmount1ForLiquidity","outputs":[{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtRatioX96","type":"uint160"},{"internalType":"uint160","name":"sqrtRatioAX96","type":"uint160"},{"internalType":"uint160","name":"sqrtRatioBX96","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"}],"name":"getAmountsForLiquidity","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtRatioAX96","type":"uint160"},{"internalType":"uint160","name":"sqrtRatioBX96","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"}],"name":"getGasCostOfGetAmount0ForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtRatioAX96","type":"uint160"},{"internalType":"uint160","name":"sqrtRatioBX96","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"}],"name":"getGasCostOfGetAmount1ForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtRatioX96","type":"uint160"},{"internalType":"uint160","name":"sqrtRatioAX96","type":"uint160"},{"internalType":"uint160","name":"sqrtRatioBX96","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"}],"name":"getGasCostOfGetAmountsForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtRatioAX96","type":"uint160"},{"internalType":"uint160","name":"sqrtRatioBX96","type":"uint160"},{"internalType":"uint256","name":"amount0","type":"uint256"}],"name":"getGasCostOfGetLiquidityForAmount0","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtRatioAX96","type":"uint160"},{"internalType":"uint160","name":"sqrtRatioBX96","type":"uint160"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"getGasCostOfGetLiquidityForAmount1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtRatioX96","type":"uint160"},{"internalType":"uint160","name":"sqrtRatioAX96","type":"uint160"},{"internalType":"uint160","name":"sqrtRatioBX96","type":"uint160"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"getGasCostOfGetLiquidityForAmounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtRatioAX96","type":"uint160"},{"internalType":"uint160","name":"sqrtRatioBX96","type":"uint160"},{"internalType":"uint256","name":"amount0","type":"uint256"}],"name":"getLiquidityForAmount0","outputs":[{"internalType":"uint128","name":"liquidity","type":"uint128"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtRatioAX96","type":"uint160"},{"internalType":"uint160","name":"sqrtRatioBX96","type":"uint160"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"getLiquidityForAmount1","outputs":[{"internalType":"uint128","name":"liquidity","type":"uint128"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtRatioX96","type":"uint160"},{"internalType":"uint160","name":"sqrtRatioAX96","type":"uint160"},{"internalType":"uint160","name":"sqrtRatioBX96","type":"uint160"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"getLiquidityForAmounts","outputs":[{"internalType":"uint128","name":"liquidity","type":"uint128"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610b44806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c8063bf1d2c7111610081578063d22462091161005b578063d2246209146103f5578063e26274bd14610438578063f721210314610494576100d4565b8063bf1d2c71146102e7578063c72e160b1461033d578063cb1b9496146103b2576100d4565b80636098fd4a116100b25780636098fd4a146101ff57806367df6e891461024e5780636ac69a8e14610291576100d4565b806308c0f795146100d9578063290984621461014157806329e24cb7146101a9575b600080fd5b61011c600480360360608110156100ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104e3565b604080516fffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101976004803603606081101561015757600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff90811691602081013590911690604001356fffffffffffffffffffffffffffffffff166104fa565b60408051918252519081900360200190f35b610197600480360360608110156101bf57600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff90811691602081013590911690604001356fffffffffffffffffffffffffffffffff16610517565b61011c600480360360a081101561021557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101358216916040820135169060608101359060800135610524565b61011c6004803603606081101561026457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561053f565b610197600480360360608110156102a757600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff90811691602081013590911690604001356fffffffffffffffffffffffffffffffff1661054c565b610197600480360360608110156102fd57600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff90811691602081013590911690604001356fffffffffffffffffffffffffffffffff16610559565b6103996004803603608081101561035357600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff90811691602081013582169160408201351690606001356fffffffffffffffffffffffffffffffff1661057c565b6040805192835260208301919091528051918290030190f35b610197600480360360608110156103c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610599565b6101976004803603606081101561040b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356105aa565b6101976004803603608081101561044e57600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff90811691602081013582169160408201351690606001356fffffffffffffffffffffffffffffffff166105bb565b610197600480360360a08110156104aa57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201351690606081013590608001356105db565b60006104f08484846105fc565b90505b9392505050565b6000805a905061050b85858561066e565b505a9003949350505050565b60006104f0848484610721565b6000610533868686868661079d565b90505b95945050505050565b60006104f08484846108b5565b60006104f084848461066e565b6000805a905061050b8585856fffffffffffffffffffffffffffffffff166105fc565b60008061058b8686868661095d565b915091505b94509492505050565b6000805a905061050b8585856105fc565b6000805a905061050b8585856108b5565b6000805a90506105cd8686868661095d565b50505a900395945050505050565b6000805a90506105ee878787878761079d565b505a90039695505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610636579192915b6104f0610669836c0100000000000000000000000087870373ffffffffffffffffffffffffffffffffffffffff16610a46565b610b13565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1611156106a8579192915b8373ffffffffffffffffffffffffffffffffffffffff16610711606060ff16846fffffffffffffffffffffffffffffffff16901b86860373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16610a46565b8161071857fe5b04949350505050565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16111561075b579192915b6104f0826fffffffffffffffffffffffffffffffff1685850373ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000610a46565b60008373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1611156107d7579293925b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161161081c576108158585856108b5565b9050610536565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1610156108aa57600061085d8786866108b5565b9050600061086c8789866105fc565b9050806fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff161061089f57806108a1565b815b92505050610536565b6105338585846105fc565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1611156108ef579192915b60006109358573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000610a46565b9050610536610669848388880373ffffffffffffffffffffffffffffffffffffffff16610a46565b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161115610998579293925b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16116109dd576109d685858561066e565b9150610590565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161015610a3057610a1c86858561066e565b9150610a29858785610721565b9050610590565b610a3b858585610721565b905094509492505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870986860292508281109083900303905080610a9a5760008411610a8f57600080fd5b5082900490506104f3565b808411610aa657600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b806fffffffffffffffffffffffffffffffff81168114610b3257600080fd5b91905056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB44 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBF1D2C71 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD2246209 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xD2246209 EQ PUSH2 0x3F5 JUMPI DUP1 PUSH4 0xE26274BD EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0xF7212103 EQ PUSH2 0x494 JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0xBF1D2C71 EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0xC72E160B EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0xCB1B9496 EQ PUSH2 0x3B2 JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x6098FD4A GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x6098FD4A EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0x67DF6E89 EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x6AC69A8E EQ PUSH2 0x291 JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x8C0F795 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x29098462 EQ PUSH2 0x141 JUMPI DUP1 PUSH4 0x29E24CB7 EQ PUSH2 0x1A9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x197 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4FA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x197 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x517 JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x524 JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x53F JUMP JUMPDEST PUSH2 0x197 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x54C JUMP JUMPDEST PUSH2 0x197 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x559 JUMP JUMPDEST PUSH2 0x399 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x57C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x197 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x599 JUMP JUMPDEST PUSH2 0x197 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x5AA JUMP JUMPDEST PUSH2 0x197 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5BB JUMP JUMPDEST PUSH2 0x197 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x5DB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F0 DUP5 DUP5 DUP5 PUSH2 0x5FC JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x50B DUP6 DUP6 DUP6 PUSH2 0x66E JUMP JUMPDEST POP GAS SWAP1 SUB SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F0 DUP5 DUP5 DUP5 PUSH2 0x721 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x533 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x79D JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F0 DUP5 DUP5 DUP5 PUSH2 0x8B5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F0 DUP5 DUP5 DUP5 PUSH2 0x66E JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x50B DUP6 DUP6 DUP6 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5FC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x58B DUP7 DUP7 DUP7 DUP7 PUSH2 0x95D JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x50B DUP6 DUP6 DUP6 PUSH2 0x5FC JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x50B DUP6 DUP6 DUP6 PUSH2 0x8B5 JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x5CD DUP7 DUP7 DUP7 DUP7 PUSH2 0x95D JUMP JUMPDEST POP POP GAS SWAP1 SUB SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x5EE DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x79D JUMP JUMPDEST POP GAS SWAP1 SUB SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x636 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0x4F0 PUSH2 0x669 DUP4 PUSH13 0x1000000000000000000000000 DUP8 DUP8 SUB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA46 JUMP JUMPDEST PUSH2 0xB13 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x6A8 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x711 PUSH1 0x60 PUSH1 0xFF AND DUP5 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SHL DUP7 DUP7 SUB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA46 JUMP JUMPDEST DUP2 PUSH2 0x718 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x75B JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0x4F0 DUP3 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 SUB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH13 0x1000000000000000000000000 PUSH2 0xA46 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x7D7 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT PUSH2 0x81C JUMPI PUSH2 0x815 DUP6 DUP6 DUP6 PUSH2 0x8B5 JUMP JUMPDEST SWAP1 POP PUSH2 0x536 JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x8AA JUMPI PUSH1 0x0 PUSH2 0x85D DUP8 DUP7 DUP7 PUSH2 0x8B5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x86C DUP8 DUP10 DUP7 PUSH2 0x5FC JUMP JUMPDEST SWAP1 POP DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x89F JUMPI DUP1 PUSH2 0x8A1 JUMP JUMPDEST DUP2 JUMPDEST SWAP3 POP POP POP PUSH2 0x536 JUMP JUMPDEST PUSH2 0x533 DUP6 DUP6 DUP5 PUSH2 0x5FC JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x8EF JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH1 0x0 PUSH2 0x935 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH13 0x1000000000000000000000000 PUSH2 0xA46 JUMP JUMPDEST SWAP1 POP PUSH2 0x536 PUSH2 0x669 DUP5 DUP4 DUP9 DUP9 SUB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA46 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x998 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT PUSH2 0x9DD JUMPI PUSH2 0x9D6 DUP6 DUP6 DUP6 PUSH2 0x66E JUMP JUMPDEST SWAP2 POP PUSH2 0x590 JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0xA30 JUMPI PUSH2 0xA1C DUP7 DUP6 DUP6 PUSH2 0x66E JUMP JUMPDEST SWAP2 POP PUSH2 0xA29 DUP6 DUP8 DUP6 PUSH2 0x721 JUMP JUMPDEST SWAP1 POP PUSH2 0x590 JUMP JUMPDEST PUSH2 0xA3B DUP6 DUP6 DUP6 PUSH2 0x721 JUMP JUMPDEST SWAP1 POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0xA9A JUMPI PUSH1 0x0 DUP5 GT PUSH2 0xA8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x4F3 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0xAA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"109:4043:97:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100d45760003560e01c8063bf1d2c7111610081578063d22462091161005b578063d2246209146103f5578063e26274bd14610438578063f721210314610494576100d4565b8063bf1d2c71146102e7578063c72e160b1461033d578063cb1b9496146103b2576100d4565b80636098fd4a116100b25780636098fd4a146101ff57806367df6e891461024e5780636ac69a8e14610291576100d4565b806308c0f795146100d9578063290984621461014157806329e24cb7146101a9575b600080fd5b61011c600480360360608110156100ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104e3565b604080516fffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101976004803603606081101561015757600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff90811691602081013590911690604001356fffffffffffffffffffffffffffffffff166104fa565b60408051918252519081900360200190f35b610197600480360360608110156101bf57600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff90811691602081013590911690604001356fffffffffffffffffffffffffffffffff16610517565b61011c600480360360a081101561021557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101358216916040820135169060608101359060800135610524565b61011c6004803603606081101561026457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561053f565b610197600480360360608110156102a757600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff90811691602081013590911690604001356fffffffffffffffffffffffffffffffff1661054c565b610197600480360360608110156102fd57600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff90811691602081013590911690604001356fffffffffffffffffffffffffffffffff16610559565b6103996004803603608081101561035357600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff90811691602081013582169160408201351690606001356fffffffffffffffffffffffffffffffff1661057c565b6040805192835260208301919091528051918290030190f35b610197600480360360608110156103c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610599565b6101976004803603606081101561040b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356105aa565b6101976004803603608081101561044e57600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff90811691602081013582169160408201351690606001356fffffffffffffffffffffffffffffffff166105bb565b610197600480360360a08110156104aa57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201351690606081013590608001356105db565b60006104f08484846105fc565b90505b9392505050565b6000805a905061050b85858561066e565b505a9003949350505050565b60006104f0848484610721565b6000610533868686868661079d565b90505b95945050505050565b60006104f08484846108b5565b60006104f084848461066e565b6000805a905061050b8585856fffffffffffffffffffffffffffffffff166105fc565b60008061058b8686868661095d565b915091505b94509492505050565b6000805a905061050b8585856105fc565b6000805a905061050b8585856108b5565b6000805a90506105cd8686868661095d565b50505a900395945050505050565b6000805a90506105ee878787878761079d565b505a90039695505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610636579192915b6104f0610669836c0100000000000000000000000087870373ffffffffffffffffffffffffffffffffffffffff16610a46565b610b13565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1611156106a8579192915b8373ffffffffffffffffffffffffffffffffffffffff16610711606060ff16846fffffffffffffffffffffffffffffffff16901b86860373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16610a46565b8161071857fe5b04949350505050565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16111561075b579192915b6104f0826fffffffffffffffffffffffffffffffff1685850373ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000610a46565b60008373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1611156107d7579293925b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161161081c576108158585856108b5565b9050610536565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1610156108aa57600061085d8786866108b5565b9050600061086c8789866105fc565b9050806fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff161061089f57806108a1565b815b92505050610536565b6105338585846105fc565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1611156108ef579192915b60006109358573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000610a46565b9050610536610669848388880373ffffffffffffffffffffffffffffffffffffffff16610a46565b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161115610998579293925b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16116109dd576109d685858561066e565b9150610590565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161015610a3057610a1c86858561066e565b9150610a29858785610721565b9050610590565b610a3b858585610721565b905094509492505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870986860292508281109083900303905080610a9a5760008411610a8f57600080fd5b5082900490506104f3565b808411610aa657600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b806fffffffffffffffffffffffffffffffff81168114610b3257600080fd5b91905056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBF1D2C71 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD2246209 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xD2246209 EQ PUSH2 0x3F5 JUMPI DUP1 PUSH4 0xE26274BD EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0xF7212103 EQ PUSH2 0x494 JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0xBF1D2C71 EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0xC72E160B EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0xCB1B9496 EQ PUSH2 0x3B2 JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x6098FD4A GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x6098FD4A EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0x67DF6E89 EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x6AC69A8E EQ PUSH2 0x291 JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x8C0F795 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x29098462 EQ PUSH2 0x141 JUMPI DUP1 PUSH4 0x29E24CB7 EQ PUSH2 0x1A9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x197 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4FA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x197 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x517 JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x524 JUMP JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x53F JUMP JUMPDEST PUSH2 0x197 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x54C JUMP JUMPDEST PUSH2 0x197 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x559 JUMP JUMPDEST PUSH2 0x399 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x57C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x197 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x599 JUMP JUMPDEST PUSH2 0x197 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x5AA JUMP JUMPDEST PUSH2 0x197 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5BB JUMP JUMPDEST PUSH2 0x197 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x5DB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F0 DUP5 DUP5 DUP5 PUSH2 0x5FC JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x50B DUP6 DUP6 DUP6 PUSH2 0x66E JUMP JUMPDEST POP GAS SWAP1 SUB SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F0 DUP5 DUP5 DUP5 PUSH2 0x721 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x533 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x79D JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F0 DUP5 DUP5 DUP5 PUSH2 0x8B5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F0 DUP5 DUP5 DUP5 PUSH2 0x66E JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x50B DUP6 DUP6 DUP6 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5FC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x58B DUP7 DUP7 DUP7 DUP7 PUSH2 0x95D JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x50B DUP6 DUP6 DUP6 PUSH2 0x5FC JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x50B DUP6 DUP6 DUP6 PUSH2 0x8B5 JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x5CD DUP7 DUP7 DUP7 DUP7 PUSH2 0x95D JUMP JUMPDEST POP POP GAS SWAP1 SUB SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x5EE DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x79D JUMP JUMPDEST POP GAS SWAP1 SUB SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x636 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0x4F0 PUSH2 0x669 DUP4 PUSH13 0x1000000000000000000000000 DUP8 DUP8 SUB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA46 JUMP JUMPDEST PUSH2 0xB13 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x6A8 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x711 PUSH1 0x60 PUSH1 0xFF AND DUP5 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SHL DUP7 DUP7 SUB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA46 JUMP JUMPDEST DUP2 PUSH2 0x718 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x75B JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0x4F0 DUP3 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 SUB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH13 0x1000000000000000000000000 PUSH2 0xA46 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x7D7 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT PUSH2 0x81C JUMPI PUSH2 0x815 DUP6 DUP6 DUP6 PUSH2 0x8B5 JUMP JUMPDEST SWAP1 POP PUSH2 0x536 JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x8AA JUMPI PUSH1 0x0 PUSH2 0x85D DUP8 DUP7 DUP7 PUSH2 0x8B5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x86C DUP8 DUP10 DUP7 PUSH2 0x5FC JUMP JUMPDEST SWAP1 POP DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x89F JUMPI DUP1 PUSH2 0x8A1 JUMP JUMPDEST DUP2 JUMPDEST SWAP3 POP POP POP PUSH2 0x536 JUMP JUMPDEST PUSH2 0x533 DUP6 DUP6 DUP5 PUSH2 0x5FC JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x8EF JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH1 0x0 PUSH2 0x935 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH13 0x1000000000000000000000000 PUSH2 0xA46 JUMP JUMPDEST SWAP1 POP PUSH2 0x536 PUSH2 0x669 DUP5 DUP4 DUP9 DUP9 SUB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA46 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x998 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT PUSH2 0x9DD JUMPI PUSH2 0x9D6 DUP6 DUP6 DUP6 PUSH2 0x66E JUMP JUMPDEST SWAP2 POP PUSH2 0x590 JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0xA30 JUMPI PUSH2 0xA1C DUP7 DUP6 DUP6 PUSH2 0x66E JUMP JUMPDEST SWAP2 POP PUSH2 0xA29 DUP6 DUP8 DUP6 PUSH2 0x721 JUMP JUMPDEST SWAP1 POP PUSH2 0x590 JUMP JUMPDEST PUSH2 0xA3B DUP6 DUP6 DUP6 PUSH2 0x721 JUMP JUMPDEST SWAP1 POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0xA9A JUMPI PUSH1 0x0 DUP5 GT PUSH2 0xA8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x4F3 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0xAA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"109:4043:97:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;767:269;;;;;;;;;;;;;;;;-1:-1:-1;767:269:97;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2444:345;;;;;;;;;;;;;;;;-1:-1:-1;2444:345:97;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2795:271;;;;;;;;;;;;;;;;-1:-1:-1;2795:271:97;;;;;;;;;;;;;;;;;;;;;:::i;1389:347::-;;;;;;;;;;;;;;;;-1:-1:-1;1389:347:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;145:269::-;;;;;;;;;;;;;;;;-1:-1:-1;145:269:97;;;;;;;;;;;;;;;;;;:::i;2167:271::-;;;;;;;;;;;;;;;;-1:-1:-1;2167:271:97;;;;;;;;;;;;;;;;;;;;;:::i;3072:345::-;;;;;;;;;;;;;;;;-1:-1:-1;3072:345:97;;;;;;;;;;;;;;;;;;;;;:::i;3423:332::-;;;;;;;;;;;;;;;;-1:-1:-1;3423:332:97;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1042:341;;;;;;;;;;;;;;;;-1:-1:-1;1042:341:97;;;;;;;;;;;;;;;;;;:::i;420:::-;;;;;;;;;;;;;;;;-1:-1:-1;420:341:97;;;;;;;;;;;;;;;;;;:::i;3761:389::-;;;;;;;;;;;;;;;;-1:-1:-1;3761:389:97;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1742:419::-;;;;;;;;;;;;;;;;-1:-1:-1;1742:419:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;767:269::-;915:17;951:78;991:13;1006;1021:7;951:39;:78::i;:::-;944:85;;767:269;;;;;;:::o;2444:345::-;2606:7;2625:17;2645:9;2625:29;;2664:80;2704:13;2719;2734:9;2664:39;:80::i;:::-;;2773:9;2761:21;;;2444:345;-1:-1:-1;;;;2444:345:97:o;2795:271::-;2945:15;2979:80;3019:13;3034;3049:9;2979:39;:80::i;1389:347::-;1592:17;1628:101;1668:12;1682:13;1697;1712:7;1721;1628:39;:101::i;:::-;1621:108;;1389:347;;;;;;;;:::o;145:269::-;293:17;329:78;369:13;384;399:7;329:39;:78::i;2167:271::-;2317:15;2351:80;2391:13;2406;2421:9;2351:39;:80::i;3072:345::-;3234:7;3253:17;3273:9;3253:29;;3292:80;3332:13;3347;3362:9;3292:80;;:39;:80::i;3423:332::-;3603:15;3620;3654:94;3694:12;3708:13;3723;3738:9;3654:39;:94::i;:::-;3647:101;;;;3423:332;;;;;;;;:::o;1042:341::-;1202:7;1221:17;1241:9;1221:29;;1260:78;1300:13;1315;1330:7;1260:39;:78::i;420:341::-;580:7;599:17;619:9;599:29;;638:78;678:13;693;708:7;638:39;:78::i;3761:389::-;3953:7;3972:17;3992:9;3972:29;;4011:94;4051:12;4065:13;4080;4095:9;4011:39;:94::i;:::-;;;4134:9;4122:21;;;3761:389;-1:-1:-1;;;;;3761:389:97:o;1742:419::-;1957:7;1976:17;1996:9;1976:29;;2015:101;2055:12;2069:13;2084;2099:7;2108;2015:39;:101::i;:::-;;2145:9;2133:21;;;1742:419;-1:-1:-1;;;;;;1742:419:97:o;2115:383:84:-;2263:17;2312:13;2296:29;;:13;:29;;;2292:98;;;2361:13;;2376;2292:98;2407:84;2417:73;2433:7;349:27:13;2476:13:84;2460;:29;2417:73;;:15;:73::i;:::-;2407:9;:84::i;4357:498::-;4507:15;4554:13;4538:29;;:13;:29;;;4534:98;;;4603:13;;4618;4534:98;4835:13;4662:186;;:170;309:2:13;4695:45:84;;4703:9;4695:18;;:45;;4774:13;4758;:29;4662:170;;4805:13;4662:170;;:15;:170::i;:::-;:186;;;;;;;4357:498;-1:-1:-1;;;;4357:498:84:o;5213:375::-;5363:15;5410:13;5394:29;;:13;:29;;;5390:98;;;5459:13;;5474;5390:98;5506:75;5522:9;5506:75;;5549:13;5533;:29;5506:75;;349:27:13;5506:15:84;:75::i;3098:901::-;3301:17;3350:13;3334:29;;:13;:29;;;3330:98;;;3399:13;;3414;3330:98;3459:13;3443:29;;:12;:29;;;3439:554;;3500:61;3523:13;3538;3553:7;3500:22;:61::i;:::-;3488:73;;3439:554;;;3597:13;3582:28;;:12;:28;;;3578:415;;;3626:18;3647:60;3670:12;3684:13;3699:7;3647:22;:60::i;:::-;3626:81;;3721:18;3742:60;3765:13;3780:12;3794:7;3742:22;:60::i;:::-;3721:81;;3842:10;3829:23;;:10;:23;;;:49;;3868:10;3829:49;;;3855:10;3829:49;3817:61;;3578:415;;;;;3921:61;3944:13;3959;3974:7;3921:22;:61::i;1201:475::-;1349:17;1398:13;1382:29;;:13;:29;;;1378:98;;;1447:13;;1462;1378:98;1486:20;1509:63;1525:13;1509:63;;1540:13;1509:63;;349:27:13;1509:15:84;:63::i;:::-;1486:86;;1589:80;1599:69;1615:7;1624:12;1654:13;1638;:29;1599:69;;:15;:69::i;6129:799::-;6309:15;6326;6373:13;6357:29;;:13;:29;;;6353:98;;;6422:13;;6437;6353:98;6482:13;6466:29;;:12;:29;;;6462:460;;6521:63;6544:13;6559;6574:9;6521:22;:63::i;:::-;6511:73;;6462:460;;;6620:13;6605:28;;:12;:28;;;6601:321;;;6659:62;6682:12;6696:13;6711:9;6659:22;:62::i;:::-;6649:72;;6745:62;6768:13;6783:12;6797:9;6745:22;:62::i;:::-;6735:72;;6601:321;;;6848:63;6871:13;6886;6901:9;6848:22;:63::i;:::-;6838:73;;6129:799;;;;;;;:::o;749:3746:14:-;831:14;;;1341:6;1338:1;1335;1328:20;1370:9;;;;-1:-1:-1;1421:13:14;;;1405:14;;;;1401:34;;-1:-1:-1;1517:10:14;1513:179;;1565:1;1551:11;:15;1543:24;;;;;;-1:-1:-1;1618:23:14;;;;-1:-1:-1;1668:13:14;;1513:179;1819:5;1805:11;:19;1797:28;;;;;;2102:17;2178:11;2175:1;2172;2165:25;2530:12;2545;;;:26;;2665:22;;;;;3468:1;3449;:15;;3448:21;;3695:17;;;3691:21;;3684:28;3753:17;;;3749:21;;3742:28;3812:17;;;3808:21;;3801:28;3871:17;;;3867:21;;3860:28;3930:17;;;3926:21;;3919:28;3990:17;;;3986:21;;;3979:28;3037:12;;;;3033:23;;;3058:1;3029:31;2307:20;;;2296:32;;;3088:12;;;;2350:21;;;;2793:16;;;;3079:21;;;;4454:11;;;;;-1:-1:-1;;749:3746:14;;;;;:::o;623:110:84:-;724:1;704:21;;;;;696:30;;;;;;623:110;;;:::o"},"methodIdentifiers":{"getAmount0ForLiquidity(uint160,uint160,uint128)":"6ac69a8e","getAmount1ForLiquidity(uint160,uint160,uint128)":"29e24cb7","getAmountsForLiquidity(uint160,uint160,uint160,uint128)":"c72e160b","getGasCostOfGetAmount0ForLiquidity(uint160,uint160,uint128)":"29098462","getGasCostOfGetAmount1ForLiquidity(uint160,uint160,uint128)":"bf1d2c71","getGasCostOfGetAmountsForLiquidity(uint160,uint160,uint160,uint128)":"e26274bd","getGasCostOfGetLiquidityForAmount0(uint160,uint160,uint256)":"d2246209","getGasCostOfGetLiquidityForAmount1(uint160,uint160,uint256)":"cb1b9496","getGasCostOfGetLiquidityForAmounts(uint160,uint160,uint160,uint256,uint256)":"f7212103","getLiquidityForAmount0(uint160,uint160,uint256)":"67df6e89","getLiquidityForAmount1(uint160,uint160,uint256)":"08c0f795","getLiquidityForAmounts(uint160,uint160,uint160,uint256,uint256)":"6098fd4a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtRatioAX96\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtRatioBX96\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"name\":\"getAmount0ForLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtRatioAX96\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtRatioBX96\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"name\":\"getAmount1ForLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtRatioX96\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtRatioAX96\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtRatioBX96\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"name\":\"getAmountsForLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtRatioAX96\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtRatioBX96\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"name\":\"getGasCostOfGetAmount0ForLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtRatioAX96\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtRatioBX96\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"name\":\"getGasCostOfGetAmount1ForLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtRatioX96\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtRatioAX96\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtRatioBX96\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"name\":\"getGasCostOfGetAmountsForLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtRatioAX96\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtRatioBX96\",\"type\":\"uint160\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"}],\"name\":\"getGasCostOfGetLiquidityForAmount0\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtRatioAX96\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtRatioBX96\",\"type\":\"uint160\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"getGasCostOfGetLiquidityForAmount1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtRatioX96\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtRatioAX96\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtRatioBX96\",\"type\":\"uint160\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"getGasCostOfGetLiquidityForAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtRatioAX96\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtRatioBX96\",\"type\":\"uint160\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"}],\"name\":\"getLiquidityForAmount0\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtRatioAX96\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtRatioBX96\",\"type\":\"uint160\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"getLiquidityForAmount1\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtRatioX96\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtRatioAX96\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtRatioBX96\",\"type\":\"uint160\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"getLiquidityForAmounts\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/LiquidityAmountsTest.sol\":\"LiquidityAmountsTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"@airdao/astra-cl-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x5340256039418f5d03512a44173d3dcf1da277a73a461e06fb5668f49cfc46f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75dee99795d1125875233a7f1d356935099cc97b4085c0e451060d77db85d144\",\"dweb:/ipfs/QmTGqyrxVLQd8TBaarqSQDiYvq1QFutCdmTyXk6JpxzKTN\"]},\"contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0x0845f1c8b6a30b2c243a0d285a30ec5653442aec2bc88cd27c83215c6e0f577f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e6303005c2e69c3315875ace1d618459cd8edf4ea499a0f167a83680bd835ae5\",\"dweb:/ipfs/QmcMpVTkGZh6SJoFAbN29w2ABD25zACxRouuqAtCBHATyd\"]},\"contracts/test/LiquidityAmountsTest.sol\":{\"keccak256\":\"0x5ecbb33b2b2d4b0b3b27a13018e3b42624d1c2a07f8c71aaeda171f97b261013\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://44f281a330021ca14ba66022b031c8198e1e0e2d281ed7a13c413f5fc1d0fedc\",\"dweb:/ipfs/QmaU8kXL93kPiaHS2ssv7ij8BsGXj6eMaGoRs7wo8CTCXi\"]}},\"version\":1}"}},"contracts/test/MockTimeSwapRouter.sol":{"MockTimeSwapRouter":{"abi":[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_SAMB","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"SAMB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"astraCLSwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactInputParams","name":"params","type":"tuple"}],"name":"exactInput","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactInputSingleParams","name":"params","type":"tuple"}],"name":"exactInputSingle","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactOutputParams","name":"params","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactOutputSingleParams","name":"params","type":"tuple"}],"name":"exactOutputSingle","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"refundAMB","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowed","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowedIfNecessary","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitIfNecessary","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"setTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"sweepToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"feeBips","type":"uint256"},{"internalType":"address","name":"feeRecipient","type":"address"}],"name":"sweepTokenWithFee","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"unwrapSAMB","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"feeBips","type":"uint256"},{"internalType":"address","name":"feeRecipient","type":"address"}],"name":"unwrapSAMBWithFee","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:507:115","statements":[{"nodeType":"YulBlock","src":"6:3:115","statements":[]},{"body":{"nodeType":"YulBlock","src":"76:117:115","statements":[{"nodeType":"YulAssignment","src":"86:22:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"101:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"95:5:115"},"nodeType":"YulFunctionCall","src":"95:13:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"86:5:115"}]},{"body":{"nodeType":"YulBlock","src":"171:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"180:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"183:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"173:6:115"},"nodeType":"YulFunctionCall","src":"173:12:115"},"nodeType":"YulExpressionStatement","src":"173:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"130:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"141:5:115"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"156:3:115","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"161:1:115","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"152:3:115"},"nodeType":"YulFunctionCall","src":"152:11:115"},{"kind":"number","nodeType":"YulLiteral","src":"165:1:115","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"148:3:115"},"nodeType":"YulFunctionCall","src":"148:19:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"137:3:115"},"nodeType":"YulFunctionCall","src":"137:31:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"127:2:115"},"nodeType":"YulFunctionCall","src":"127:42:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"120:6:115"},"nodeType":"YulFunctionCall","src":"120:50:115"},"nodeType":"YulIf","src":"117:2:115"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"55:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"66:5:115","type":""}],"src":"14:179:115"},{"body":{"nodeType":"YulBlock","src":"296:209:115","statements":[{"body":{"nodeType":"YulBlock","src":"342:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"351:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"359:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"344:6:115"},"nodeType":"YulFunctionCall","src":"344:22:115"},"nodeType":"YulExpressionStatement","src":"344:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"317:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"326:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"313:3:115"},"nodeType":"YulFunctionCall","src":"313:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"338:2:115","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"309:3:115"},"nodeType":"YulFunctionCall","src":"309:32:115"},"nodeType":"YulIf","src":"306:2:115"},{"nodeType":"YulAssignment","src":"377:52:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"419:9:115"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"387:31:115"},"nodeType":"YulFunctionCall","src":"387:42:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"377:6:115"}]},{"nodeType":"YulAssignment","src":"438:61:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"484:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"495:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"480:3:115"},"nodeType":"YulFunctionCall","src":"480:18:115"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"448:31:115"},"nodeType":"YulFunctionCall","src":"448:51:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"438:6:115"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"254:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"265:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"277:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"285:6:115","type":""}],"src":"198:307:115"}]},"contents":"{\n    { }\n    function abi_decode_t_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_t_address_fromMemory(headStart)\n        value1 := abi_decode_t_address_fromMemory(add(headStart, 32))\n    }\n}","id":115,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60c06040526000196000553480156200001757600080fd5b5060405162003089380380620030898339810160408190526200003a9162000076565b6001600160601b0319606092831b8116608052911b1660a052620000ad565b80516001600160a01b03811681146200007157600080fd5b919050565b6000806040838503121562000089578182fd5b620000948362000059565b9150620000a46020840162000059565b90509250929050565b60805160601c60a05160601c612f80620001096000398061014a52806106f6528061073652806108605280610a095280610b3352806115a0528061160052806116815250806103bb5280610f3b52806124c95250612f806000f3fe60806040526004361061012d5760003560e01c8063c04b8d59116100a5578063db3e219811610074578063e0e189a011610059578063e0e189a01461033d578063f28c049814610350578063f3995c6714610363576101d8565b8063db3e219814610317578063df2ab5bb1461032a576101d8565b8063c04b8d59146102d4578063c2e3140a146102e7578063c45a0155146102fa578063c53af3041461030f576101d8565b806390793ea8116100fc578063a4a78f0c116100e1578063a4a78f0c1461028e578063a98ce37f146102a1578063ac9650d8146102b4576101d8565b806390793ea81461025957806397e87d9d1461027b576101d8565b806311c17848146101dd5780633beb26c4146101fd578063414bf3891461021d5780634659a49414610246576101d8565b366101d8573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101d657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e6f742053414d42000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b3480156101e957600080fd5b506101d66101f83660046128aa565b610376565b34801561020957600080fd5b506101d6610218366004612b41565b6104c9565b61023061022b366004612a3a565b6104ce565b60405161023d9190612e4b565b60405180910390f35b6101d66102543660046127b8565b610640565b34801561026557600080fd5b5061026e6106f4565b60405161023d9190612c91565b6101d6610289366004612b88565b610718565b6101d661029c3660046127b8565b610930565b6101d66102af366004612b59565b610a05565b6102c76102c2366004612818565b610bcb565b60405161023d9190612d04565b6102306102e236600461298f565b610d25565b6101d66102f53660046127b8565b610e84565b34801561030657600080fd5b5061026e610f39565b6101d6610f5d565b610230610325366004612a3a565b610f6f565b6101d6610338366004612719565b6110ff565b6101d661034b36600461275a565b61121c565b61023061035e366004612a56565b611382565b6101d66103713660046127b8565b6114b6565b60008413806103855750600083135b61038e57600080fd5b600061039c82840184612a8e565b905060008060006103b0846000015161154e565b9250925092506103e27f000000000000000000000000000000000000000000000000000000000000000084848461157f565b5060008060008a13610423578473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161089610454565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16108a5b9150915081156104735761046e858760200151338461159e565b6104bd565b855161047e9061177c565b156104a357855161048e90611788565b865261049d81336000896117c3565b506104bd565b806000819055508394506104bd858760200151338461159e565b50505050505050505050565b600155565b60008160800135806104de61197f565b111561054b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b6105f160a084013561056360808601606087016126f6565b610574610100870160e088016126f6565b604080518082019091528061058c60208a018a6126f6565b61059c60608b0160408c01612b1e565b6105ac60408c0160208d016126f6565b6040516020016105be93929190612c1b565b60405160208183030381529060405281526020013373ffffffffffffffffffffffffffffffffffffffff16815250611985565b91508260c0013582101561063a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063190612dcc565b60405180910390fd5b50919050565b604080517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e48101839052905173ffffffffffffffffffffffffffffffffffffffff881691638fcbaf0c9161010480830192600092919082900301818387803b1580156106e057600080fd5b505af11580156104bd573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b600082118015610729575060648211155b61073257600080fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156107bb57600080fd5b505afa1580156107cf573d6000803e3d6000fd5b505050506040513d60208110156107e557600080fd5b505190508481101561085857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e73756666696369656e742053414d42000000000000000000000000000000604482015290519081900360640190fd5b8015610929577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156108d157600080fd5b505af11580156108e5573d6000803e3d6000fd5b5050505060006127106109018584611b0b90919063ffffffff16565b8161090857fe5b049050801561091b5761091b8382611b2f565b61092785828403611b2f565b505b5050505050565b604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b1580156109c557600080fd5b505afa1580156109d9573d6000803e3d6000fd5b505050506040513d60208110156109ef57600080fd5b5051101561092757610927868686868686610640565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a8e57600080fd5b505afa158015610aa2573d6000803e3d6000fd5b505050506040513d6020811015610ab857600080fd5b5051905082811015610b2b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e73756666696369656e742053414d42000000000000000000000000000000604482015290519081900360640190fd5b8015610bc6577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610ba457600080fd5b505af1158015610bb8573d6000803e3d6000fd5b50505050610bc68282611b2f565b505050565b60608167ffffffffffffffff81118015610be457600080fd5b50604051908082528060200260200182016040528015610c1857816020015b6060815260200190600190039081610c035790505b50905060005b82811015610d1e5760008030868685818110610c3657fe5b9050602002810190610c489190612e54565b604051610c56929190612c81565b600060405180830381855af49150503d8060008114610c91576040519150601f19603f3d011682016040523d82523d6000602084013e610c96565b606091505b509150915081610cfc57604481511015610caf57600080fd5b60048101905080806020019051810190610cc99190612925565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106319190612d82565b80848481518110610d0957fe5b60209081029190910101525050600101610c1e565b5092915050565b6000816040015180610d3561197f565b1115610da257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b335b6000610db3856000015161177c565b9050610e0c856060015182610dcc578660200151610dce565b305b60006040518060400160405280610de88b60000151611c7d565b81526020018773ffffffffffffffffffffffffffffffffffffffff16815250611985565b60608601528015610e2c578451309250610e2590611788565b8552610e39565b8460600151935050610e3f565b50610da4565b8360800151831015610e7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063190612dcc565b5050919050565b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051869173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b158015610ef957600080fd5b505afa158015610f0d573d6000803e3d6000fd5b505050506040513d6020811015610f2357600080fd5b50511015610927576109278686868686866114b6565b7f000000000000000000000000000000000000000000000000000000000000000081565b4715610f6d57610f6d3347611b2f565b565b6000816080013580610f7f61197f565b1115610fec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b61109560a084013561100460808601606087016126f6565b611015610100870160e088016126f6565b604051806040016040528088602001602081019061103391906126f6565b61104360608b0160408c01612b1e565b61105060208c018c6126f6565b60405160200161106293929190612c1b565b60405160208183030381529060405281526020013373ffffffffffffffffffffffffffffffffffffffff168152506117c3565b91508260c001358211156110d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063190612d95565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600055919050565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561116857600080fd5b505afa15801561117c573d6000803e3d6000fd5b505050506040513d602081101561119257600080fd5b505190508281101561120557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b801561121657611216848383611c8c565b50505050565b60008211801561122d575060648211155b61123657600080fd5b60008573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561129f57600080fd5b505afa1580156112b3573d6000803e3d6000fd5b505050506040513d60208110156112c957600080fd5b505190508481101561133c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b80156109275760006127106113518386611b0b565b8161135857fe5b049050801561136c5761136c878483611c8c565b6113798786838503611c8c565b50505050505050565b600081604001358061139261197f565b11156113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b611472606084013561141760408601602087016126f6565b604080518082019091526000908061142f8980612e54565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250336020909101526117c3565b50600054915082608001358211156110d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063190612d95565b604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c48101839052905173ffffffffffffffffffffffffffffffffffffffff88169163d505accf9160e480830192600092919082900301818387803b1580156106e057600080fd5b6000808061155c8482611e61565b9250611569846014611f61565b9050611576846017611e61565b91509193909250565b600061159585611590868686612051565b6120ce565b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156115f95750804710155b15611742577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561166657600080fd5b505af115801561167a573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561171057600080fd5b505af1158015611724573d6000803e3d6000fd5b505050506040513d602081101561173a57600080fd5b506112169050565b73ffffffffffffffffffffffffffffffffffffffff83163014156117705761176b848383611c8c565b611216565b611216848484846120fe565b8051604211155b919050565b80516060906117bd9083906017907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9016122db565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff84166117e4573093505b60008060006117f6856000015161154e565b9194509250905073ffffffffffffffffffffffffffffffffffffffff808416908316106000806118278587866124c2565b73ffffffffffffffffffffffffffffffffffffffff1663128acb088b8561184d8f612500565b60000373ffffffffffffffffffffffffffffffffffffffff8e1615611872578d611898565b876118915773fffd8963efd1fc6a506488495d951d5263988d25611898565b6401000276a45b8d6040516020016118a99190612e03565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016118d8959493929190612cb2565b6040805180830381600087803b1580156118f157600080fd5b505af1158015611905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119299190612887565b9150915060008361193e578183600003611944565b82826000035b909850905073ffffffffffffffffffffffffffffffffffffffff8a16611970578b811461197057600080fd5b50505050505050949350505050565b60015490565b600073ffffffffffffffffffffffffffffffffffffffff84166119a6573093505b60008060006119b8856000015161154e565b9194509250905073ffffffffffffffffffffffffffffffffffffffff808316908416106000806119e98686866124c2565b73ffffffffffffffffffffffffffffffffffffffff1663128acb088b85611a0f8f612500565b73ffffffffffffffffffffffffffffffffffffffff8e1615611a31578d611a57565b87611a505773fffd8963efd1fc6a506488495d951d5263988d25611a57565b6401000276a45b8d604051602001611a689190612e03565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401611a97959493929190612cb2565b6040805180830381600087803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae89190612887565b9150915082611af75781611af9565b805b6000039b9a5050505050505050505050565b6000821580611b2657505081810281838281611b2357fe5b04145b6117bd57600080fd5b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310611ba657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611b69565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611c08576040519150601f19603f3d011682016040523d82523d6000602084013e611c0d565b606091505b5050905080610bc657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60606117bd826000602b6122db565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b60208310611d6157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611d24565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611dc3576040519150601f19603f3d011682016040523d82523d6000602084013e611dc8565b606091505b5091509150818015611df6575080511580611df65750808060200190516020811015611df357600080fd5b50515b61092957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600081826014011015611ed557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015611f4857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015611fd557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b816003018351101561204857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b612059612668565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115612091579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b60006120da8383612532565b90503373ffffffffffffffffffffffffffffffffffffffff8216146117bd57600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000178152925182516000948594938a169392918291908083835b602083106121db57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161219e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461223d576040519150601f19603f3d011682016040523d82523d6000602084013e612242565b606091505b5091509150818015612270575080511580612270575080806020019051602081101561226d57600080fd5b50515b61092757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354460000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60608182601f01101561234f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b8282840110156123c057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b8183018451101561243257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b60608215801561245157604051915060008252602082016040526124b9565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561248a578051835260209283019201612472565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b60006124f87f00000000000000000000000000000000000000000000000000000000000000006124f3868686612051565b612532565b949350505050565b60007f8000000000000000000000000000000000000000000000000000000000000000821061252e57600080fd5b5090565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff161061257457600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0460d5808301919091528251808303909101815260f5909101909152805191012090565b604080516060810182526000808252602082018190529181019190915290565b803561178381612f4e565b600082601f8301126126a3578081fd5b81356126b66126b182612ee2565b612ebe565b8181528460208386010111156126ca578283fd5b816020850160208301379081016020019190915292915050565b6000610100828403121561063a578081fd5b600060208284031215612707578081fd5b813561271281612f4e565b9392505050565b60008060006060848603121561272d578182fd5b833561273881612f4e565b925060208401359150604084013561274f81612f4e565b809150509250925092565b600080600080600060a08688031215612771578081fd5b853561277c81612f4e565b945060208601359350604086013561279381612f4e565b92506060860135915060808601356127aa81612f4e565b809150509295509295909350565b60008060008060008060c087890312156127d0578081fd5b86356127db81612f4e565b95506020870135945060408701359350606087013560ff811681146127fe578182fd5b9598949750929560808101359460a0909101359350915050565b6000806020838503121561282a578182fd5b823567ffffffffffffffff80821115612841578384fd5b818501915085601f830112612854578384fd5b813581811115612862578485fd5b8660208083028501011115612875578485fd5b60209290920196919550909350505050565b60008060408385031215612899578182fd5b505080516020909101519092909150565b600080600080606085870312156128bf578182fd5b8435935060208501359250604085013567ffffffffffffffff808211156128e4578384fd5b818701915087601f8301126128f7578384fd5b813581811115612905578485fd5b886020828501011115612916578485fd5b95989497505060200194505050565b600060208284031215612936578081fd5b815167ffffffffffffffff81111561294c578182fd5b8201601f8101841361295c578182fd5b805161296a6126b182612ee2565b81815285602083850101111561297e578384fd5b611595826020830160208601612f22565b6000602082840312156129a0578081fd5b813567ffffffffffffffff808211156129b7578283fd5b9083019060a082860312156129ca578283fd5b60405160a0810181811083821117156129df57fe5b6040528235828111156129f0578485fd5b6129fc87828601612693565b825250612a0b60208401612688565b602082015260408301356040820152606083013560608201526080830135608082015280935050505092915050565b60006101008284031215612a4c578081fd5b61271283836126e4565b600060208284031215612a67578081fd5b813567ffffffffffffffff811115612a7d578182fd5b820160a08185031215612712578182fd5b600060208284031215612a9f578081fd5b813567ffffffffffffffff80821115612ab6578283fd5b9083019060408286031215612ac9578283fd5b604051604081018181108382111715612ade57fe5b604052823582811115612aef578485fd5b612afb87828601612693565b82525060208301359250612b0e83612f4e565b6020810192909252509392505050565b600060208284031215612b2f578081fd5b813562ffffff81168114612712578182fd5b600060208284031215612b52578081fd5b5035919050565b60008060408385031215612b6b578182fd5b823591506020830135612b7d81612f4e565b809150509250929050565b60008060008060808587031215612b9d578182fd5b843593506020850135612baf81612f4e565b9250604085013591506060850135612bc681612f4e565b939692955090935050565b60008151808452612be9816020860160208601612f22565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6000828483379101908152919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a06080830152612cf960a0830184612bd1565b979650505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015612d75577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452612d63858351612bd1565b94509285019290850190600101612d29565b5092979650505050505050565b6000602082526127126020830184612bd1565b60208082526012908201527f546f6f206d756368207265717565737465640000000000000000000000000000604082015260600190565b60208082526013908201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604082015260600190565b600060208252825160406020840152612e1f6060840182612bd1565b905073ffffffffffffffffffffffffffffffffffffffff60208501511660408401528091505092915050565b90815260200190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e88578283fd5b83018035915067ffffffffffffffff821115612ea2578283fd5b602001915036819003821315612eb757600080fd5b9250929050565b60405181810167ffffffffffffffff81118282101715612eda57fe5b604052919050565b600067ffffffffffffffff821115612ef657fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015612f3d578181015183820152602001612f25565b838111156112165750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114612f7057600080fd5b5056fea164736f6c6343000706000a","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE PUSH1 0x0 NOT PUSH1 0x0 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x3089 CODESIZE SUB DUP1 PUSH3 0x3089 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x3A SWAP2 PUSH3 0x76 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH3 0xAD JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x89 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH3 0x94 DUP4 PUSH3 0x59 JUMP JUMPDEST SWAP2 POP PUSH3 0xA4 PUSH1 0x20 DUP5 ADD PUSH3 0x59 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x2F80 PUSH3 0x109 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x14A MSTORE DUP1 PUSH2 0x6F6 MSTORE DUP1 PUSH2 0x736 MSTORE DUP1 PUSH2 0x860 MSTORE DUP1 PUSH2 0xA09 MSTORE DUP1 PUSH2 0xB33 MSTORE DUP1 PUSH2 0x15A0 MSTORE DUP1 PUSH2 0x1600 MSTORE DUP1 PUSH2 0x1681 MSTORE POP DUP1 PUSH2 0x3BB MSTORE DUP1 PUSH2 0xF3B MSTORE DUP1 PUSH2 0x24C9 MSTORE POP PUSH2 0x2F80 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC04B8D59 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xDB3E2198 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xE0E189A0 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE0E189A0 EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0xF28C0498 EQ PUSH2 0x350 JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x363 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0xDB3E2198 EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0xDF2AB5BB EQ PUSH2 0x32A JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0xC04B8D59 EQ PUSH2 0x2D4 JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0xC53AF304 EQ PUSH2 0x30F JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x90793EA8 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0xA4A78F0C GT PUSH2 0xE1 JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0xA98CE37F EQ PUSH2 0x2A1 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x2B4 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x90793EA8 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x97E87D9D EQ PUSH2 0x27B JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x11C17848 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x3BEB26C4 EQ PUSH2 0x1FD JUMPI DUP1 PUSH4 0x414BF389 EQ PUSH2 0x21D JUMPI DUP1 PUSH4 0x4659A494 EQ PUSH2 0x246 JUMPI PUSH2 0x1D8 JUMP JUMPDEST CALLDATASIZE PUSH2 0x1D8 JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x1D6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F742053414D42000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D6 PUSH2 0x1F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x28AA JUMP JUMPDEST PUSH2 0x376 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D6 PUSH2 0x218 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B41 JUMP JUMPDEST PUSH2 0x4C9 JUMP JUMPDEST PUSH2 0x230 PUSH2 0x22B CALLDATASIZE PUSH1 0x4 PUSH2 0x2A3A JUMP JUMPDEST PUSH2 0x4CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23D SWAP2 SWAP1 PUSH2 0x2E4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D6 PUSH2 0x254 CALLDATASIZE PUSH1 0x4 PUSH2 0x27B8 JUMP JUMPDEST PUSH2 0x640 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26E PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23D SWAP2 SWAP1 PUSH2 0x2C91 JUMP JUMPDEST PUSH2 0x1D6 PUSH2 0x289 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B88 JUMP JUMPDEST PUSH2 0x718 JUMP JUMPDEST PUSH2 0x1D6 PUSH2 0x29C CALLDATASIZE PUSH1 0x4 PUSH2 0x27B8 JUMP JUMPDEST PUSH2 0x930 JUMP JUMPDEST PUSH2 0x1D6 PUSH2 0x2AF CALLDATASIZE PUSH1 0x4 PUSH2 0x2B59 JUMP JUMPDEST PUSH2 0xA05 JUMP JUMPDEST PUSH2 0x2C7 PUSH2 0x2C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2818 JUMP JUMPDEST PUSH2 0xBCB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23D SWAP2 SWAP1 PUSH2 0x2D04 JUMP JUMPDEST PUSH2 0x230 PUSH2 0x2E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x298F JUMP JUMPDEST PUSH2 0xD25 JUMP JUMPDEST PUSH2 0x1D6 PUSH2 0x2F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x27B8 JUMP JUMPDEST PUSH2 0xE84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x306 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26E PUSH2 0xF39 JUMP JUMPDEST PUSH2 0x1D6 PUSH2 0xF5D JUMP JUMPDEST PUSH2 0x230 PUSH2 0x325 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A3A JUMP JUMPDEST PUSH2 0xF6F JUMP JUMPDEST PUSH2 0x1D6 PUSH2 0x338 CALLDATASIZE PUSH1 0x4 PUSH2 0x2719 JUMP JUMPDEST PUSH2 0x10FF JUMP JUMPDEST PUSH2 0x1D6 PUSH2 0x34B CALLDATASIZE PUSH1 0x4 PUSH2 0x275A JUMP JUMPDEST PUSH2 0x121C JUMP JUMPDEST PUSH2 0x230 PUSH2 0x35E CALLDATASIZE PUSH1 0x4 PUSH2 0x2A56 JUMP JUMPDEST PUSH2 0x1382 JUMP JUMPDEST PUSH2 0x1D6 PUSH2 0x371 CALLDATASIZE PUSH1 0x4 PUSH2 0x27B8 JUMP JUMPDEST PUSH2 0x14B6 JUMP JUMPDEST PUSH1 0x0 DUP5 SGT DUP1 PUSH2 0x385 JUMPI POP PUSH1 0x0 DUP4 SGT JUMPDEST PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x39C DUP3 DUP5 ADD DUP5 PUSH2 0x2A8E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3B0 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x154E JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x3E2 PUSH32 0x0 DUP5 DUP5 DUP5 PUSH2 0x157F JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP11 SGT PUSH2 0x423 JUMPI DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT DUP10 PUSH2 0x454 JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT DUP11 JUMPDEST SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x473 JUMPI PUSH2 0x46E DUP6 DUP8 PUSH1 0x20 ADD MLOAD CALLER DUP5 PUSH2 0x159E JUMP JUMPDEST PUSH2 0x4BD JUMP JUMPDEST DUP6 MLOAD PUSH2 0x47E SWAP1 PUSH2 0x177C JUMP JUMPDEST ISZERO PUSH2 0x4A3 JUMPI DUP6 MLOAD PUSH2 0x48E SWAP1 PUSH2 0x1788 JUMP JUMPDEST DUP7 MSTORE PUSH2 0x49D DUP2 CALLER PUSH1 0x0 DUP10 PUSH2 0x17C3 JUMP JUMPDEST POP PUSH2 0x4BD JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP DUP4 SWAP5 POP PUSH2 0x4BD DUP6 DUP8 PUSH1 0x20 ADD MLOAD CALLER DUP5 PUSH2 0x159E JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x80 ADD CALLDATALOAD DUP1 PUSH2 0x4DE PUSH2 0x197F JUMP JUMPDEST GT ISZERO PUSH2 0x54B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x5F1 PUSH1 0xA0 DUP5 ADD CALLDATALOAD PUSH2 0x563 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x26F6 JUMP JUMPDEST PUSH2 0x574 PUSH2 0x100 DUP8 ADD PUSH1 0xE0 DUP9 ADD PUSH2 0x26F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH2 0x58C PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x26F6 JUMP JUMPDEST PUSH2 0x59C PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x2B1E JUMP JUMPDEST PUSH2 0x5AC PUSH1 0x40 DUP13 ADD PUSH1 0x20 DUP14 ADD PUSH2 0x26F6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x5BE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C1B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x1985 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0xC0 ADD CALLDATALOAD DUP3 LT ISZERO PUSH2 0x63A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x631 SWAP1 PUSH2 0x2DCC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x8FCBAF0C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xFF DUP6 AND PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xC4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xE4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0x8FCBAF0C SWAP2 PUSH2 0x104 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4BD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x729 JUMPI POP PUSH1 0x64 DUP3 GT ISZERO JUMPDEST PUSH2 0x732 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7CF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP5 DUP2 LT ISZERO PUSH2 0x858 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742053414D42000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x929 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x2710 PUSH2 0x901 DUP6 DUP5 PUSH2 0x1B0B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x908 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x91B JUMPI PUSH2 0x91B DUP4 DUP3 PUSH2 0x1B2F JUMP JUMPDEST PUSH2 0x927 DUP6 DUP3 DUP5 SUB PUSH2 0x1B2F JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x927 JUMPI PUSH2 0x927 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x640 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0xB2B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742053414D42000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0xBC6 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xBC6 DUP3 DUP3 PUSH2 0x1B2F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xBE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC18 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xC03 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xD1E JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0xC36 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xC48 SWAP2 SWAP1 PUSH2 0x2E54 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC56 SWAP3 SWAP2 SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xC91 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xC96 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xCFC JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0xCAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xCC9 SWAP2 SWAP1 PUSH2 0x2925 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x631 SWAP2 SWAP1 PUSH2 0x2D82 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xD09 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0xC1E JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD DUP1 PUSH2 0xD35 PUSH2 0x197F JUMP JUMPDEST GT ISZERO PUSH2 0xDA2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER JUMPDEST PUSH1 0x0 PUSH2 0xDB3 DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x177C JUMP JUMPDEST SWAP1 POP PUSH2 0xE0C DUP6 PUSH1 0x60 ADD MLOAD DUP3 PUSH2 0xDCC JUMPI DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0xDCE JUMP JUMPDEST ADDRESS JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xDE8 DUP12 PUSH1 0x0 ADD MLOAD PUSH2 0x1C7D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x1985 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE DUP1 ISZERO PUSH2 0xE2C JUMPI DUP5 MLOAD ADDRESS SWAP3 POP PUSH2 0xE25 SWAP1 PUSH2 0x1788 JUMP JUMPDEST DUP6 MSTORE PUSH2 0xE39 JUMP JUMPDEST DUP5 PUSH1 0x60 ADD MLOAD SWAP4 POP POP PUSH2 0xE3F JUMP JUMPDEST POP PUSH2 0xDA4 JUMP JUMPDEST DUP4 PUSH1 0x80 ADD MLOAD DUP4 LT ISZERO PUSH2 0xE7D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x631 SWAP1 PUSH2 0x2DCC JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF0D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x927 JUMPI PUSH2 0x927 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x14B6 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST SELFBALANCE ISZERO PUSH2 0xF6D JUMPI PUSH2 0xF6D CALLER SELFBALANCE PUSH2 0x1B2F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x80 ADD CALLDATALOAD DUP1 PUSH2 0xF7F PUSH2 0x197F JUMP JUMPDEST GT ISZERO PUSH2 0xFEC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1095 PUSH1 0xA0 DUP5 ADD CALLDATALOAD PUSH2 0x1004 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x26F6 JUMP JUMPDEST PUSH2 0x1015 PUSH2 0x100 DUP8 ADD PUSH1 0xE0 DUP9 ADD PUSH2 0x26F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1033 SWAP2 SWAP1 PUSH2 0x26F6 JUMP JUMPDEST PUSH2 0x1043 PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x2B1E JUMP JUMPDEST PUSH2 0x1050 PUSH1 0x20 DUP13 ADD DUP13 PUSH2 0x26F6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1062 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C1B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x17C3 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0xC0 ADD CALLDATALOAD DUP3 GT ISZERO PUSH2 0x10D5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x631 SWAP1 PUSH2 0x2D95 JUMP JUMPDEST POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x0 SSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x117C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x1205 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E7420746F6B656E0000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x1216 JUMPI PUSH2 0x1216 DUP5 DUP4 DUP4 PUSH2 0x1C8C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x122D JUMPI POP PUSH1 0x64 DUP3 GT ISZERO JUMPDEST PUSH2 0x1236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x129F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP5 DUP2 LT ISZERO PUSH2 0x133C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E7420746F6B656E0000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x927 JUMPI PUSH1 0x0 PUSH2 0x2710 PUSH2 0x1351 DUP4 DUP7 PUSH2 0x1B0B JUMP JUMPDEST DUP2 PUSH2 0x1358 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x136C JUMPI PUSH2 0x136C DUP8 DUP5 DUP4 PUSH2 0x1C8C JUMP JUMPDEST PUSH2 0x1379 DUP8 DUP7 DUP4 DUP6 SUB PUSH2 0x1C8C JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD CALLDATALOAD DUP1 PUSH2 0x1392 PUSH2 0x197F JUMP JUMPDEST GT ISZERO PUSH2 0x13FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1472 PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH2 0x1417 PUSH1 0x40 DUP7 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x26F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 DUP1 PUSH2 0x142F DUP10 DUP1 PUSH2 0x2E54 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP SWAP1 DUP3 MSTORE POP CALLER PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE PUSH2 0x17C3 JUMP JUMPDEST POP PUSH1 0x0 SLOAD SWAP2 POP DUP3 PUSH1 0x80 ADD CALLDATALOAD DUP3 GT ISZERO PUSH2 0x10D5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x631 SWAP1 PUSH2 0x2D95 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xFF DUP6 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x155C DUP5 DUP3 PUSH2 0x1E61 JUMP JUMPDEST SWAP3 POP PUSH2 0x1569 DUP5 PUSH1 0x14 PUSH2 0x1F61 JUMP JUMPDEST SWAP1 POP PUSH2 0x1576 DUP5 PUSH1 0x17 PUSH2 0x1E61 JUMP JUMPDEST SWAP2 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1595 DUP6 PUSH2 0x1590 DUP7 DUP7 DUP7 PUSH2 0x2051 JUMP JUMPDEST PUSH2 0x20CE JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x15F9 JUMPI POP DUP1 SELFBALANCE LT ISZERO JUMPDEST ISZERO PUSH2 0x1742 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x167A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1710 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1724 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x173A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1216 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ADDRESS EQ ISZERO PUSH2 0x1770 JUMPI PUSH2 0x176B DUP5 DUP4 DUP4 PUSH2 0x1C8C JUMP JUMPDEST PUSH2 0x1216 JUMP JUMPDEST PUSH2 0x1216 DUP5 DUP5 DUP5 DUP5 PUSH2 0x20FE JUMP JUMPDEST DUP1 MLOAD PUSH1 0x42 GT ISZERO JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x17BD SWAP1 DUP4 SWAP1 PUSH1 0x17 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 ADD PUSH2 0x22DB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x17E4 JUMPI ADDRESS SWAP4 POP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x17F6 DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x154E JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND SWAP1 DUP4 AND LT PUSH1 0x0 DUP1 PUSH2 0x1827 DUP6 DUP8 DUP7 PUSH2 0x24C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 DUP12 DUP6 PUSH2 0x184D DUP16 PUSH2 0x2500 JUMP JUMPDEST PUSH1 0x0 SUB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND ISZERO PUSH2 0x1872 JUMPI DUP14 PUSH2 0x1898 JUMP JUMPDEST DUP8 PUSH2 0x1891 JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x1898 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x18A9 SWAP2 SWAP1 PUSH2 0x2E03 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18D8 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2CB2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1905 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1929 SWAP2 SWAP1 PUSH2 0x2887 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP4 PUSH2 0x193E JUMPI DUP2 DUP4 PUSH1 0x0 SUB PUSH2 0x1944 JUMP JUMPDEST DUP3 DUP3 PUSH1 0x0 SUB JUMPDEST SWAP1 SWAP9 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH2 0x1970 JUMPI DUP12 DUP2 EQ PUSH2 0x1970 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x19A6 JUMPI ADDRESS SWAP4 POP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x19B8 DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x154E JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP1 DUP5 AND LT PUSH1 0x0 DUP1 PUSH2 0x19E9 DUP7 DUP7 DUP7 PUSH2 0x24C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 DUP12 DUP6 PUSH2 0x1A0F DUP16 PUSH2 0x2500 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND ISZERO PUSH2 0x1A31 JUMPI DUP14 PUSH2 0x1A57 JUMP JUMPDEST DUP8 PUSH2 0x1A50 JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x1A57 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1A68 SWAP2 SWAP1 PUSH2 0x2E03 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A97 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2CB2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AC4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1AE8 SWAP2 SWAP1 PUSH2 0x2887 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 PUSH2 0x1AF7 JUMPI DUP2 PUSH2 0x1AF9 JUMP JUMPDEST DUP1 JUMPDEST PUSH1 0x0 SUB SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x1B26 JUMPI POP POP DUP2 DUP2 MUL DUP2 DUP4 DUP3 DUP2 PUSH2 0x1B23 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x17BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1BA6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1B69 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1C08 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1C0D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xBC6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354450000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH2 0x17BD DUP3 PUSH1 0x0 PUSH1 0x2B PUSH2 0x22DB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1D61 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1D24 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1DC3 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1DC8 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1DF6 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1DF6 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x929 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x14 ADD LT ISZERO PUSH2 0x1ED5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F416464726573735F6F766572666C6F770000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x14 ADD DUP4 MLOAD LT ISZERO PUSH2 0x1F48 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F416464726573735F6F75744F66426F756E64730000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH13 0x1000000000000000000000000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x3 ADD LT ISZERO PUSH2 0x1FD5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F55696E7432345F6F766572666C6F77000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 ADD DUP4 MLOAD LT ISZERO PUSH2 0x2048 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F55696E7432345F6F75744F66426F756E6473000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x3 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2059 PUSH2 0x2668 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x2091 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH3 0xFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20DA DUP4 DUP4 PUSH2 0x2532 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x17BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x21DB JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x219E JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x223D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2242 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2270 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2270 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x226D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x927 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354460000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP2 DUP3 PUSH1 0x1F ADD LT ISZERO PUSH2 0x234F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F766572666C6F77000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 DUP5 ADD LT ISZERO PUSH2 0x23C0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F766572666C6F77000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 ADD DUP5 MLOAD LT ISZERO PUSH2 0x2432 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F75744F66426F756E6473000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO DUP1 ISZERO PUSH2 0x2451 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x0 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x24B9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F DUP5 AND DUP1 ISZERO PUSH1 0x20 MUL DUP2 DUP5 ADD ADD DUP6 DUP2 ADD DUP8 DUP4 ISZERO PUSH1 0x20 MUL DUP5 DUP12 ADD ADD ADD JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x248A JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x2472 JUMP JUMPDEST POP POP DUP6 DUP5 MSTORE PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x40 MSTORE POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24F8 PUSH32 0x0 PUSH2 0x24F3 DUP7 DUP7 DUP7 PUSH2 0x2051 JUMP JUMPDEST PUSH2 0x2532 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 LT PUSH2 0x252E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x2574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 DUP6 ADD MSTORE SWAP4 SWAP1 SWAP2 AND DUP4 DUP6 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x80 DUP5 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 PUSH1 0xD5 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xF5 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1783 DUP2 PUSH2 0x2F4E JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x26A3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x26B6 PUSH2 0x26B1 DUP3 PUSH2 0x2EE2 JUMP JUMPDEST PUSH2 0x2EBE JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x26CA JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x63A JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2707 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2712 DUP2 PUSH2 0x2F4E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x272D JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2738 DUP2 PUSH2 0x2F4E JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x274F DUP2 PUSH2 0x2F4E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2771 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x277C DUP2 PUSH2 0x2F4E JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x2793 DUP2 PUSH2 0x2F4E JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x27AA DUP2 PUSH2 0x2F4E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x27D0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x27DB DUP2 PUSH2 0x2F4E JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x27FE JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP5 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x282A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2841 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2854 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2862 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x2875 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2899 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x28BF JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x28E4 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28F7 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2905 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2916 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2936 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x294C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x295C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x296A PUSH2 0x26B1 DUP3 PUSH2 0x2EE2 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x297E JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1595 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2F22 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x29A0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x29B7 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0xA0 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x29CA JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x29DF JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x29F0 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x29FC DUP8 DUP3 DUP7 ADD PUSH2 0x2693 JUMP JUMPDEST DUP3 MSTORE POP PUSH2 0x2A0B PUSH1 0x20 DUP5 ADD PUSH2 0x2688 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A4C JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2712 DUP4 DUP4 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A67 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A7D JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0xA0 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x2712 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A9F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2AB6 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x40 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x2AC9 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x2ADE JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x2AEF JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2AFB DUP8 DUP3 DUP7 ADD PUSH2 0x2693 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP3 POP PUSH2 0x2B0E DUP4 PUSH2 0x2F4E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B2F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2712 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B52 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B6B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2B7D DUP2 PUSH2 0x2F4E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2B9D JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x2BAF DUP2 PUSH2 0x2F4E JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x2BC6 DUP2 PUSH2 0x2F4E JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2BE9 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2F22 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SWAP4 DUP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0xE8 SWAP4 SWAP1 SWAP4 SHL PUSH32 0xFFFFFF0000000000000000000000000000000000000000000000000000000000 AND PUSH1 0x14 DUP3 ADD MSTORE SWAP3 SHL AND PUSH1 0x17 DUP3 ADD MSTORE PUSH1 0x2B ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND DUP4 MSTORE DUP7 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE DUP6 PUSH1 0x40 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x60 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x2CF9 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x2BD1 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2D75 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x2D63 DUP6 DUP4 MLOAD PUSH2 0x2BD1 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2D29 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x2712 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2BD1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x546F6F206D756368207265717565737465640000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x546F6F206C6974746C6520726563656976656400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD PUSH1 0x40 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2E1F PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0x2BD1 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2E88 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2EA2 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2EB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2EDA JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2EF6 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2F3D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F25 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1216 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2F70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"113:322:98:-:0;;;-1:-1:-1;;1511:57:45;;180:75:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;520:18:50;;;;;;;;548:12;;;;;113:322:98;;14:179:115;95:13;;-1:-1:-1;;;;;137:31:115;;127:42;;117:2;;183:1;180;173:12;117:2;76:117;;;:::o;198:307::-;;;338:2;326:9;317:7;313:23;309:32;306:2;;;359:6;351;344:22;306:2;387:42;419:9;387:42;:::i;:::-;377:52;;448:51;495:2;484:9;480:18;448:51;:::i;:::-;438:61;;296:209;;;;;:::o;:::-;113:322:98;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:15935:115","statements":[{"nodeType":"YulBlock","src":"6:3:115","statements":[]},{"body":{"nodeType":"YulBlock","src":"65:87:115","statements":[{"nodeType":"YulAssignment","src":"75:29:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"97:6:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"84:12:115"},"nodeType":"YulFunctionCall","src":"84:20:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"75:5:115"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"140:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"113:26:115"},"nodeType":"YulFunctionCall","src":"113:33:115"},"nodeType":"YulExpressionStatement","src":"113:33:115"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"44:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"55:5:115","type":""}],"src":"14:138:115"},{"body":{"nodeType":"YulBlock","src":"211:431:115","statements":[{"body":{"nodeType":"YulBlock","src":"260:24:115","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"269:5:115"},{"name":"array","nodeType":"YulIdentifier","src":"276:5:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"262:6:115"},"nodeType":"YulFunctionCall","src":"262:20:115"},"nodeType":"YulExpressionStatement","src":"262:20:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"239:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"247:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:115"},"nodeType":"YulFunctionCall","src":"235:17:115"},{"name":"end","nodeType":"YulIdentifier","src":"254:3:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"231:3:115"},"nodeType":"YulFunctionCall","src":"231:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"224:6:115"},"nodeType":"YulFunctionCall","src":"224:35:115"},"nodeType":"YulIf","src":"221:2:115"},{"nodeType":"YulVariableDeclaration","src":"293:30:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"316:6:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"303:12:115"},"nodeType":"YulFunctionCall","src":"303:20:115"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"297:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"332:64:115","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"392:2:115"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"362:29:115"},"nodeType":"YulFunctionCall","src":"362:33:115"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"347:14:115"},"nodeType":"YulFunctionCall","src":"347:49:115"},"variables":[{"name":"array_1","nodeType":"YulTypedName","src":"336:7:115","type":""}]},{"expression":{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"412:7:115"},{"name":"_1","nodeType":"YulIdentifier","src":"421:2:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"405:6:115"},"nodeType":"YulFunctionCall","src":"405:19:115"},"nodeType":"YulExpressionStatement","src":"405:19:115"},{"body":{"nodeType":"YulBlock","src":"472:24:115","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"481:5:115"},{"name":"array","nodeType":"YulIdentifier","src":"488:5:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"474:6:115"},"nodeType":"YulFunctionCall","src":"474:20:115"},"nodeType":"YulExpressionStatement","src":"474:20:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"447:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"455:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"443:3:115"},"nodeType":"YulFunctionCall","src":"443:15:115"},{"kind":"number","nodeType":"YulLiteral","src":"460:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"439:3:115"},"nodeType":"YulFunctionCall","src":"439:26:115"},{"name":"end","nodeType":"YulIdentifier","src":"467:3:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"436:2:115"},"nodeType":"YulFunctionCall","src":"436:35:115"},"nodeType":"YulIf","src":"433:2:115"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"522:7:115"},{"kind":"number","nodeType":"YulLiteral","src":"531:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"518:3:115"},"nodeType":"YulFunctionCall","src":"518:18:115"},{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"542:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"550:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"538:3:115"},"nodeType":"YulFunctionCall","src":"538:17:115"},{"name":"_1","nodeType":"YulIdentifier","src":"557:2:115"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"505:12:115"},"nodeType":"YulFunctionCall","src":"505:55:115"},"nodeType":"YulExpressionStatement","src":"505:55:115"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"584:7:115"},{"name":"_1","nodeType":"YulIdentifier","src":"593:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"580:3:115"},"nodeType":"YulFunctionCall","src":"580:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"598:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"576:3:115"},"nodeType":"YulFunctionCall","src":"576:27:115"},{"name":"array","nodeType":"YulIdentifier","src":"605:5:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"569:6:115"},"nodeType":"YulFunctionCall","src":"569:42:115"},"nodeType":"YulExpressionStatement","src":"569:42:115"},{"nodeType":"YulAssignment","src":"620:16:115","value":{"name":"array_1","nodeType":"YulIdentifier","src":"629:7:115"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"620:5:115"}]}]},"name":"abi_decode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"185:6:115","type":""},{"name":"end","nodeType":"YulTypedName","src":"193:3:115","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"201:5:115","type":""}],"src":"157:485:115"},{"body":{"nodeType":"YulBlock","src":"735:94:115","statements":[{"body":{"nodeType":"YulBlock","src":"775:24:115","statements":[{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"784:5:115"},{"name":"value","nodeType":"YulIdentifier","src":"791:5:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"777:6:115"},"nodeType":"YulFunctionCall","src":"777:20:115"},"nodeType":"YulExpressionStatement","src":"777:20:115"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"756:3:115"},{"name":"offset","nodeType":"YulIdentifier","src":"761:6:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"752:3:115"},"nodeType":"YulFunctionCall","src":"752:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"770:3:115","type":"","value":"256"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"748:3:115"},"nodeType":"YulFunctionCall","src":"748:26:115"},"nodeType":"YulIf","src":"745:2:115"},{"nodeType":"YulAssignment","src":"808:15:115","value":{"name":"offset","nodeType":"YulIdentifier","src":"817:6:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"808:5:115"}]}]},"name":"abi_decode_t_struct$_ExactInputSingleParams_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"709:6:115","type":""},{"name":"end","nodeType":"YulTypedName","src":"717:3:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"725:5:115","type":""}],"src":"647:182:115"},{"body":{"nodeType":"YulBlock","src":"904:189:115","statements":[{"body":{"nodeType":"YulBlock","src":"950:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"959:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"967:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"952:6:115"},"nodeType":"YulFunctionCall","src":"952:22:115"},"nodeType":"YulExpressionStatement","src":"952:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"925:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"934:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"921:3:115"},"nodeType":"YulFunctionCall","src":"921:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"946:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"917:3:115"},"nodeType":"YulFunctionCall","src":"917:32:115"},"nodeType":"YulIf","src":"914:2:115"},{"nodeType":"YulVariableDeclaration","src":"985:36:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1011:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"998:12:115"},"nodeType":"YulFunctionCall","src":"998:23:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"989:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1057:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1030:26:115"},"nodeType":"YulFunctionCall","src":"1030:33:115"},"nodeType":"YulExpressionStatement","src":"1030:33:115"},{"nodeType":"YulAssignment","src":"1072:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"1082:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1072:6:115"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"870:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"881:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"893:6:115","type":""}],"src":"834:259:115"},{"body":{"nodeType":"YulBlock","src":"1202:366:115","statements":[{"body":{"nodeType":"YulBlock","src":"1248:26:115","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1257:6:115"},{"name":"value1","nodeType":"YulIdentifier","src":"1265:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1250:6:115"},"nodeType":"YulFunctionCall","src":"1250:22:115"},"nodeType":"YulExpressionStatement","src":"1250:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1223:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"1232:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1219:3:115"},"nodeType":"YulFunctionCall","src":"1219:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"1244:2:115","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1215:3:115"},"nodeType":"YulFunctionCall","src":"1215:32:115"},"nodeType":"YulIf","src":"1212:2:115"},{"nodeType":"YulVariableDeclaration","src":"1283:36:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1309:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1296:12:115"},"nodeType":"YulFunctionCall","src":"1296:23:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1287:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1328:26:115"},"nodeType":"YulFunctionCall","src":"1328:33:115"},"nodeType":"YulExpressionStatement","src":"1328:33:115"},{"nodeType":"YulAssignment","src":"1370:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"1380:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1370:6:115"}]},{"nodeType":"YulAssignment","src":"1394:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1421:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1432:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1417:3:115"},"nodeType":"YulFunctionCall","src":"1417:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1404:12:115"},"nodeType":"YulFunctionCall","src":"1404:32:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1394:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"1445:47:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1477:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1488:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1473:3:115"},"nodeType":"YulFunctionCall","src":"1473:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1460:12:115"},"nodeType":"YulFunctionCall","src":"1460:32:115"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1449:7:115","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1528:7:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1501:26:115"},"nodeType":"YulFunctionCall","src":"1501:35:115"},"nodeType":"YulExpressionStatement","src":"1501:35:115"},{"nodeType":"YulAssignment","src":"1545:17:115","value":{"name":"value_1","nodeType":"YulIdentifier","src":"1555:7:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1545:6:115"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1152:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1163:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1175:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1183:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1191:6:115","type":""}],"src":"1098:470:115"},{"body":{"nodeType":"YulBlock","src":"1711:545:115","statements":[{"body":{"nodeType":"YulBlock","src":"1758:26:115","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1767:6:115"},{"name":"value4","nodeType":"YulIdentifier","src":"1775:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1760:6:115"},"nodeType":"YulFunctionCall","src":"1760:22:115"},"nodeType":"YulExpressionStatement","src":"1760:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1732:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"1741:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1728:3:115"},"nodeType":"YulFunctionCall","src":"1728:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"1753:3:115","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1724:3:115"},"nodeType":"YulFunctionCall","src":"1724:33:115"},"nodeType":"YulIf","src":"1721:2:115"},{"nodeType":"YulVariableDeclaration","src":"1793:36:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1819:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1806:12:115"},"nodeType":"YulFunctionCall","src":"1806:23:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1797:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1865:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1838:26:115"},"nodeType":"YulFunctionCall","src":"1838:33:115"},"nodeType":"YulExpressionStatement","src":"1838:33:115"},{"nodeType":"YulAssignment","src":"1880:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"1890:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1880:6:115"}]},{"nodeType":"YulAssignment","src":"1904:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1931:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1942:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1927:3:115"},"nodeType":"YulFunctionCall","src":"1927:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1914:12:115"},"nodeType":"YulFunctionCall","src":"1914:32:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1904:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"1955:47:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1987:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1998:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1983:3:115"},"nodeType":"YulFunctionCall","src":"1983:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1970:12:115"},"nodeType":"YulFunctionCall","src":"1970:32:115"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1959:7:115","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2038:7:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2011:26:115"},"nodeType":"YulFunctionCall","src":"2011:35:115"},"nodeType":"YulExpressionStatement","src":"2011:35:115"},{"nodeType":"YulAssignment","src":"2055:17:115","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2065:7:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2055:6:115"}]},{"nodeType":"YulAssignment","src":"2081:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2108:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2119:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2104:3:115"},"nodeType":"YulFunctionCall","src":"2104:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2091:12:115"},"nodeType":"YulFunctionCall","src":"2091:32:115"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"2081:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"2132:48:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2164:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2175:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2160:3:115"},"nodeType":"YulFunctionCall","src":"2160:19:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2147:12:115"},"nodeType":"YulFunctionCall","src":"2147:33:115"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"2136:7:115","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"2216:7:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2189:26:115"},"nodeType":"YulFunctionCall","src":"2189:35:115"},"nodeType":"YulExpressionStatement","src":"2189:35:115"},{"nodeType":"YulAssignment","src":"2233:17:115","value":{"name":"value_2","nodeType":"YulIdentifier","src":"2243:7:115"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"2233:6:115"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_addresst_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1645:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1656:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1668:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1676:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1684:6:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1692:6:115","type":""},{"name":"value4","nodeType":"YulTypedName","src":"1700:6:115","type":""}],"src":"1573:683:115"},{"body":{"nodeType":"YulBlock","src":"2414:556:115","statements":[{"body":{"nodeType":"YulBlock","src":"2461:26:115","statements":[{"expression":{"arguments":[{"name":"value5","nodeType":"YulIdentifier","src":"2470:6:115"},{"name":"value5","nodeType":"YulIdentifier","src":"2478:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2463:6:115"},"nodeType":"YulFunctionCall","src":"2463:22:115"},"nodeType":"YulExpressionStatement","src":"2463:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2435:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"2444:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2431:3:115"},"nodeType":"YulFunctionCall","src":"2431:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"2456:3:115","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2427:3:115"},"nodeType":"YulFunctionCall","src":"2427:33:115"},"nodeType":"YulIf","src":"2424:2:115"},{"nodeType":"YulVariableDeclaration","src":"2496:36:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2522:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2509:12:115"},"nodeType":"YulFunctionCall","src":"2509:23:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2500:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2568:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2541:26:115"},"nodeType":"YulFunctionCall","src":"2541:33:115"},"nodeType":"YulExpressionStatement","src":"2541:33:115"},{"nodeType":"YulAssignment","src":"2583:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"2593:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2583:6:115"}]},{"nodeType":"YulAssignment","src":"2607:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2634:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2645:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2630:3:115"},"nodeType":"YulFunctionCall","src":"2630:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2617:12:115"},"nodeType":"YulFunctionCall","src":"2617:32:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2607:6:115"}]},{"nodeType":"YulAssignment","src":"2658:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2685:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2696:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2681:3:115"},"nodeType":"YulFunctionCall","src":"2681:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2668:12:115"},"nodeType":"YulFunctionCall","src":"2668:32:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2658:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"2709:47:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2741:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2752:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2737:3:115"},"nodeType":"YulFunctionCall","src":"2737:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2724:12:115"},"nodeType":"YulFunctionCall","src":"2724:32:115"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"2713:7:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"2808:26:115","statements":[{"expression":{"arguments":[{"name":"value5","nodeType":"YulIdentifier","src":"2817:6:115"},{"name":"value5","nodeType":"YulIdentifier","src":"2825:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2810:6:115"},"nodeType":"YulFunctionCall","src":"2810:22:115"},"nodeType":"YulExpressionStatement","src":"2810:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2778:7:115"},{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2791:7:115"},{"kind":"number","nodeType":"YulLiteral","src":"2800:4:115","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2787:3:115"},"nodeType":"YulFunctionCall","src":"2787:18:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2775:2:115"},"nodeType":"YulFunctionCall","src":"2775:31:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2768:6:115"},"nodeType":"YulFunctionCall","src":"2768:39:115"},"nodeType":"YulIf","src":"2765:2:115"},{"nodeType":"YulAssignment","src":"2843:17:115","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2853:7:115"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"2843:6:115"}]},{"nodeType":"YulAssignment","src":"2869:43:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2896:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2907:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2892:3:115"},"nodeType":"YulFunctionCall","src":"2892:19:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2879:12:115"},"nodeType":"YulFunctionCall","src":"2879:33:115"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"2869:6:115"}]},{"nodeType":"YulAssignment","src":"2921:43:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2948:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2959:3:115","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2944:3:115"},"nodeType":"YulFunctionCall","src":"2944:19:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2931:12:115"},"nodeType":"YulFunctionCall","src":"2931:33:115"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"2921:6:115"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2340:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2351:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2363:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2371:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2379:6:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2387:6:115","type":""},{"name":"value4","nodeType":"YulTypedName","src":"2395:6:115","type":""},{"name":"value5","nodeType":"YulTypedName","src":"2403:6:115","type":""}],"src":"2261:709:115"},{"body":{"nodeType":"YulBlock","src":"3091:561:115","statements":[{"body":{"nodeType":"YulBlock","src":"3137:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3146:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3154:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3139:6:115"},"nodeType":"YulFunctionCall","src":"3139:22:115"},"nodeType":"YulExpressionStatement","src":"3139:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3112:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"3121:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3108:3:115"},"nodeType":"YulFunctionCall","src":"3108:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"3133:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3104:3:115"},"nodeType":"YulFunctionCall","src":"3104:32:115"},"nodeType":"YulIf","src":"3101:2:115"},{"nodeType":"YulVariableDeclaration","src":"3172:37:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3199:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3186:12:115"},"nodeType":"YulFunctionCall","src":"3186:23:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3176:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3218:28:115","value":{"kind":"number","nodeType":"YulLiteral","src":"3228:18:115","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3222:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"3273:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3282:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3290:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3275:6:115"},"nodeType":"YulFunctionCall","src":"3275:22:115"},"nodeType":"YulExpressionStatement","src":"3275:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3261:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3269:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3258:2:115"},"nodeType":"YulFunctionCall","src":"3258:14:115"},"nodeType":"YulIf","src":"3255:2:115"},{"nodeType":"YulVariableDeclaration","src":"3308:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3322:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"3333:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3318:3:115"},"nodeType":"YulFunctionCall","src":"3318:22:115"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3312:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"3388:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3397:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3405:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3390:6:115"},"nodeType":"YulFunctionCall","src":"3390:22:115"},"nodeType":"YulExpressionStatement","src":"3390:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3367:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"3371:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3363:3:115"},"nodeType":"YulFunctionCall","src":"3363:13:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3378:7:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3359:3:115"},"nodeType":"YulFunctionCall","src":"3359:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3352:6:115"},"nodeType":"YulFunctionCall","src":"3352:35:115"},"nodeType":"YulIf","src":"3349:2:115"},{"nodeType":"YulVariableDeclaration","src":"3423:30:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3450:2:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3437:12:115"},"nodeType":"YulFunctionCall","src":"3437:16:115"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3427:6:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"3480:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3489:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3497:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3482:6:115"},"nodeType":"YulFunctionCall","src":"3482:22:115"},"nodeType":"YulExpressionStatement","src":"3482:22:115"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3468:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3476:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3465:2:115"},"nodeType":"YulFunctionCall","src":"3465:14:115"},"nodeType":"YulIf","src":"3462:2:115"},{"body":{"nodeType":"YulBlock","src":"3565:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3574:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3582:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3567:6:115"},"nodeType":"YulFunctionCall","src":"3567:22:115"},"nodeType":"YulExpressionStatement","src":"3567:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3529:2:115"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3537:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"3545:2:115","type":"","value":"32"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3533:3:115"},"nodeType":"YulFunctionCall","src":"3533:15:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3525:3:115"},"nodeType":"YulFunctionCall","src":"3525:24:115"},{"kind":"number","nodeType":"YulLiteral","src":"3551:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3521:3:115"},"nodeType":"YulFunctionCall","src":"3521:33:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3556:7:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3518:2:115"},"nodeType":"YulFunctionCall","src":"3518:46:115"},"nodeType":"YulIf","src":"3515:2:115"},{"nodeType":"YulAssignment","src":"3600:21:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3614:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"3618:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3610:3:115"},"nodeType":"YulFunctionCall","src":"3610:11:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3600:6:115"}]},{"nodeType":"YulAssignment","src":"3630:16:115","value":{"name":"length","nodeType":"YulIdentifier","src":"3640:6:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3630:6:115"}]}]},"name":"abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3049:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3060:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3072:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3080:6:115","type":""}],"src":"2975:677:115"},{"body":{"nodeType":"YulBlock","src":"3753:157:115","statements":[{"body":{"nodeType":"YulBlock","src":"3799:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3808:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3816:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3801:6:115"},"nodeType":"YulFunctionCall","src":"3801:22:115"},"nodeType":"YulExpressionStatement","src":"3801:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3774:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"3783:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3770:3:115"},"nodeType":"YulFunctionCall","src":"3770:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"3795:2:115","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3766:3:115"},"nodeType":"YulFunctionCall","src":"3766:32:115"},"nodeType":"YulIf","src":"3763:2:115"},{"nodeType":"YulAssignment","src":"3834:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3850:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3844:5:115"},"nodeType":"YulFunctionCall","src":"3844:16:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3834:6:115"}]},{"nodeType":"YulAssignment","src":"3869:35:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3889:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"3900:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3885:3:115"},"nodeType":"YulFunctionCall","src":"3885:18:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3879:5:115"},"nodeType":"YulFunctionCall","src":"3879:25:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3869:6:115"}]}]},"name":"abi_decode_tuple_t_int256t_int256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3711:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3722:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3734:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3742:6:115","type":""}],"src":"3657:253:115"},{"body":{"nodeType":"YulBlock","src":"4036:654:115","statements":[{"body":{"nodeType":"YulBlock","src":"4082:26:115","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4091:6:115"},{"name":"value2","nodeType":"YulIdentifier","src":"4099:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4084:6:115"},"nodeType":"YulFunctionCall","src":"4084:22:115"},"nodeType":"YulExpressionStatement","src":"4084:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4057:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"4066:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4053:3:115"},"nodeType":"YulFunctionCall","src":"4053:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"4078:2:115","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4049:3:115"},"nodeType":"YulFunctionCall","src":"4049:32:115"},"nodeType":"YulIf","src":"4046:2:115"},{"nodeType":"YulAssignment","src":"4117:33:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4140:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4127:12:115"},"nodeType":"YulFunctionCall","src":"4127:23:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4117:6:115"}]},{"nodeType":"YulAssignment","src":"4159:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4186:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4197:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4182:3:115"},"nodeType":"YulFunctionCall","src":"4182:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4169:12:115"},"nodeType":"YulFunctionCall","src":"4169:32:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4159:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"4210:46:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4241:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4252:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4237:3:115"},"nodeType":"YulFunctionCall","src":"4237:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4224:12:115"},"nodeType":"YulFunctionCall","src":"4224:32:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4214:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4265:28:115","value":{"kind":"number","nodeType":"YulLiteral","src":"4275:18:115","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4269:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"4320:26:115","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4329:6:115"},{"name":"value2","nodeType":"YulIdentifier","src":"4337:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4322:6:115"},"nodeType":"YulFunctionCall","src":"4322:22:115"},"nodeType":"YulExpressionStatement","src":"4322:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4308:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"4316:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4305:2:115"},"nodeType":"YulFunctionCall","src":"4305:14:115"},"nodeType":"YulIf","src":"4302:2:115"},{"nodeType":"YulVariableDeclaration","src":"4355:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4369:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"4380:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4365:3:115"},"nodeType":"YulFunctionCall","src":"4365:22:115"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"4359:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"4435:26:115","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4444:6:115"},{"name":"value2","nodeType":"YulIdentifier","src":"4452:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4437:6:115"},"nodeType":"YulFunctionCall","src":"4437:22:115"},"nodeType":"YulExpressionStatement","src":"4437:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4414:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"4418:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4410:3:115"},"nodeType":"YulFunctionCall","src":"4410:13:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4425:7:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4406:3:115"},"nodeType":"YulFunctionCall","src":"4406:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4399:6:115"},"nodeType":"YulFunctionCall","src":"4399:35:115"},"nodeType":"YulIf","src":"4396:2:115"},{"nodeType":"YulVariableDeclaration","src":"4470:30:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4497:2:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4484:12:115"},"nodeType":"YulFunctionCall","src":"4484:16:115"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4474:6:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"4527:26:115","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4536:6:115"},{"name":"value2","nodeType":"YulIdentifier","src":"4544:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4529:6:115"},"nodeType":"YulFunctionCall","src":"4529:22:115"},"nodeType":"YulExpressionStatement","src":"4529:22:115"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4515:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"4523:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4512:2:115"},"nodeType":"YulFunctionCall","src":"4512:14:115"},"nodeType":"YulIf","src":"4509:2:115"},{"body":{"nodeType":"YulBlock","src":"4603:26:115","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4612:6:115"},{"name":"value2","nodeType":"YulIdentifier","src":"4620:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4605:6:115"},"nodeType":"YulFunctionCall","src":"4605:22:115"},"nodeType":"YulExpressionStatement","src":"4605:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4576:2:115"},{"name":"length","nodeType":"YulIdentifier","src":"4580:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4572:3:115"},"nodeType":"YulFunctionCall","src":"4572:15:115"},{"kind":"number","nodeType":"YulLiteral","src":"4589:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4568:3:115"},"nodeType":"YulFunctionCall","src":"4568:24:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4594:7:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4565:2:115"},"nodeType":"YulFunctionCall","src":"4565:37:115"},"nodeType":"YulIf","src":"4562:2:115"},{"nodeType":"YulAssignment","src":"4638:21:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4652:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"4656:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4648:3:115"},"nodeType":"YulFunctionCall","src":"4648:11:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4638:6:115"}]},{"nodeType":"YulAssignment","src":"4668:16:115","value":{"name":"length","nodeType":"YulIdentifier","src":"4678:6:115"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4668:6:115"}]}]},"name":"abi_decode_tuple_t_int256t_int256t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3978:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3989:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4001:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4009:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4017:6:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4025:6:115","type":""}],"src":"3915:775:115"},{"body":{"nodeType":"YulBlock","src":"4786:585:115","statements":[{"body":{"nodeType":"YulBlock","src":"4832:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4841:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"4849:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4834:6:115"},"nodeType":"YulFunctionCall","src":"4834:22:115"},"nodeType":"YulExpressionStatement","src":"4834:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4807:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"4816:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4803:3:115"},"nodeType":"YulFunctionCall","src":"4803:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"4828:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4799:3:115"},"nodeType":"YulFunctionCall","src":"4799:32:115"},"nodeType":"YulIf","src":"4796:2:115"},{"nodeType":"YulVariableDeclaration","src":"4867:30:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4887:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4881:5:115"},"nodeType":"YulFunctionCall","src":"4881:16:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4871:6:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"4940:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4949:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"4957:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4942:6:115"},"nodeType":"YulFunctionCall","src":"4942:22:115"},"nodeType":"YulExpressionStatement","src":"4942:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4912:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"4920:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4909:2:115"},"nodeType":"YulFunctionCall","src":"4909:30:115"},"nodeType":"YulIf","src":"4906:2:115"},{"nodeType":"YulVariableDeclaration","src":"4975:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4989:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"5000:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4985:3:115"},"nodeType":"YulFunctionCall","src":"4985:22:115"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4979:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"5055:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5064:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"5072:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5057:6:115"},"nodeType":"YulFunctionCall","src":"5057:22:115"},"nodeType":"YulExpressionStatement","src":"5057:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"5034:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"5038:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5030:3:115"},"nodeType":"YulFunctionCall","src":"5030:13:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5045:7:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5026:3:115"},"nodeType":"YulFunctionCall","src":"5026:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5019:6:115"},"nodeType":"YulFunctionCall","src":"5019:35:115"},"nodeType":"YulIf","src":"5016:2:115"},{"nodeType":"YulVariableDeclaration","src":"5090:19:115","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"5106:2:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5100:5:115"},"nodeType":"YulFunctionCall","src":"5100:9:115"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"5094:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5118:62:115","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5176:2:115"}],"functionName":{"name":"array_allocation_size_t_bytes","nodeType":"YulIdentifier","src":"5146:29:115"},"nodeType":"YulFunctionCall","src":"5146:33:115"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"5131:14:115"},"nodeType":"YulFunctionCall","src":"5131:49:115"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"5122:5:115","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"5196:5:115"},{"name":"_2","nodeType":"YulIdentifier","src":"5203:2:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5189:6:115"},"nodeType":"YulFunctionCall","src":"5189:17:115"},"nodeType":"YulExpressionStatement","src":"5189:17:115"},{"body":{"nodeType":"YulBlock","src":"5252:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5261:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"5269:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5254:6:115"},"nodeType":"YulFunctionCall","src":"5254:22:115"},"nodeType":"YulExpressionStatement","src":"5254:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"5229:2:115"},{"name":"_2","nodeType":"YulIdentifier","src":"5233:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5225:3:115"},"nodeType":"YulFunctionCall","src":"5225:11:115"},{"kind":"number","nodeType":"YulLiteral","src":"5238:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5221:3:115"},"nodeType":"YulFunctionCall","src":"5221:20:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5243:7:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5218:2:115"},"nodeType":"YulFunctionCall","src":"5218:33:115"},"nodeType":"YulIf","src":"5215:2:115"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"5313:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"5317:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5309:3:115"},"nodeType":"YulFunctionCall","src":"5309:11:115"},{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"5326:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"5333:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5322:3:115"},"nodeType":"YulFunctionCall","src":"5322:14:115"},{"name":"_2","nodeType":"YulIdentifier","src":"5338:2:115"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"5287:21:115"},"nodeType":"YulFunctionCall","src":"5287:54:115"},"nodeType":"YulExpressionStatement","src":"5287:54:115"},{"nodeType":"YulAssignment","src":"5350:15:115","value":{"name":"array","nodeType":"YulIdentifier","src":"5360:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5350:6:115"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4752:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4763:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4775:6:115","type":""}],"src":"4695:676:115"},{"body":{"nodeType":"YulBlock","src":"5481:938:115","statements":[{"body":{"nodeType":"YulBlock","src":"5527:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5536:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"5544:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5529:6:115"},"nodeType":"YulFunctionCall","src":"5529:22:115"},"nodeType":"YulExpressionStatement","src":"5529:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5502:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"5511:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5498:3:115"},"nodeType":"YulFunctionCall","src":"5498:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"5523:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5494:3:115"},"nodeType":"YulFunctionCall","src":"5494:32:115"},"nodeType":"YulIf","src":"5491:2:115"},{"nodeType":"YulVariableDeclaration","src":"5562:37:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5589:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5576:12:115"},"nodeType":"YulFunctionCall","src":"5576:23:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5566:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5608:28:115","value":{"kind":"number","nodeType":"YulLiteral","src":"5618:18:115","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5612:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"5663:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5672:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"5680:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5665:6:115"},"nodeType":"YulFunctionCall","src":"5665:22:115"},"nodeType":"YulExpressionStatement","src":"5665:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5651:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"5659:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5648:2:115"},"nodeType":"YulFunctionCall","src":"5648:14:115"},"nodeType":"YulIf","src":"5645:2:115"},{"nodeType":"YulVariableDeclaration","src":"5698:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5712:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"5723:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5708:3:115"},"nodeType":"YulFunctionCall","src":"5708:22:115"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"5702:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"5770:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5779:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"5787:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5772:6:115"},"nodeType":"YulFunctionCall","src":"5772:22:115"},"nodeType":"YulExpressionStatement","src":"5772:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5750:7:115"},{"name":"_2","nodeType":"YulIdentifier","src":"5759:2:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5746:3:115"},"nodeType":"YulFunctionCall","src":"5746:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"5764:4:115","type":"","value":"0xa0"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5742:3:115"},"nodeType":"YulFunctionCall","src":"5742:27:115"},"nodeType":"YulIf","src":"5739:2:115"},{"nodeType":"YulVariableDeclaration","src":"5805:23:115","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5825:2:115","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5819:5:115"},"nodeType":"YulFunctionCall","src":"5819:9:115"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"5809:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5837:35:115","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5859:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"5867:4:115","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5855:3:115"},"nodeType":"YulFunctionCall","src":"5855:17:115"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"5841:10:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"5931:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"5933:7:115"},"nodeType":"YulFunctionCall","src":"5933:9:115"},"nodeType":"YulExpressionStatement","src":"5933:9:115"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5890:10:115"},{"name":"_1","nodeType":"YulIdentifier","src":"5902:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5887:2:115"},"nodeType":"YulFunctionCall","src":"5887:18:115"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5910:10:115"},{"name":"memPtr","nodeType":"YulIdentifier","src":"5922:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5907:2:115"},"nodeType":"YulFunctionCall","src":"5907:22:115"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5884:2:115"},"nodeType":"YulFunctionCall","src":"5884:46:115"},"nodeType":"YulIf","src":"5881:2:115"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5960:2:115","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5964:10:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5953:6:115"},"nodeType":"YulFunctionCall","src":"5953:22:115"},"nodeType":"YulExpressionStatement","src":"5953:22:115"},{"nodeType":"YulVariableDeclaration","src":"5984:32:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6013:2:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6000:12:115"},"nodeType":"YulFunctionCall","src":"6000:16:115"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"5988:8:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"6045:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6054:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"6062:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6047:6:115"},"nodeType":"YulFunctionCall","src":"6047:22:115"},"nodeType":"YulExpressionStatement","src":"6047:22:115"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"6031:8:115"},{"name":"_1","nodeType":"YulIdentifier","src":"6041:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6028:2:115"},"nodeType":"YulFunctionCall","src":"6028:16:115"},"nodeType":"YulIf","src":"6025:2:115"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6087:6:115"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6118:2:115"},{"name":"offset_1","nodeType":"YulIdentifier","src":"6122:8:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6114:3:115"},"nodeType":"YulFunctionCall","src":"6114:17:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6133:7:115"}],"functionName":{"name":"abi_decode_t_bytes","nodeType":"YulIdentifier","src":"6095:18:115"},"nodeType":"YulFunctionCall","src":"6095:46:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6080:6:115"},"nodeType":"YulFunctionCall","src":"6080:62:115"},"nodeType":"YulExpressionStatement","src":"6080:62:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6162:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6170:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6158:3:115"},"nodeType":"YulFunctionCall","src":"6158:15:115"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6200:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"6204:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6196:3:115"},"nodeType":"YulFunctionCall","src":"6196:11:115"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6175:20:115"},"nodeType":"YulFunctionCall","src":"6175:33:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6151:6:115"},"nodeType":"YulFunctionCall","src":"6151:58:115"},"nodeType":"YulExpressionStatement","src":"6151:58:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6229:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6237:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6225:3:115"},"nodeType":"YulFunctionCall","src":"6225:15:115"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6259:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"6263:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6255:3:115"},"nodeType":"YulFunctionCall","src":"6255:11:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6242:12:115"},"nodeType":"YulFunctionCall","src":"6242:25:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6218:6:115"},"nodeType":"YulFunctionCall","src":"6218:50:115"},"nodeType":"YulExpressionStatement","src":"6218:50:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6288:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6296:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6284:3:115"},"nodeType":"YulFunctionCall","src":"6284:15:115"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6318:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"6322:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6314:3:115"},"nodeType":"YulFunctionCall","src":"6314:11:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6301:12:115"},"nodeType":"YulFunctionCall","src":"6301:25:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6277:6:115"},"nodeType":"YulFunctionCall","src":"6277:50:115"},"nodeType":"YulExpressionStatement","src":"6277:50:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6347:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6355:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6343:3:115"},"nodeType":"YulFunctionCall","src":"6343:16:115"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6378:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"6382:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6374:3:115"},"nodeType":"YulFunctionCall","src":"6374:12:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6361:12:115"},"nodeType":"YulFunctionCall","src":"6361:26:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6336:6:115"},"nodeType":"YulFunctionCall","src":"6336:52:115"},"nodeType":"YulExpressionStatement","src":"6336:52:115"},{"nodeType":"YulAssignment","src":"6397:16:115","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"6407:6:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6397:6:115"}]}]},"name":"abi_decode_tuple_t_struct$_ExactInputParams_$10088_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5447:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5458:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5470:6:115","type":""}],"src":"5376:1043:115"},{"body":{"nodeType":"YulBlock","src":"6537:170:115","statements":[{"body":{"nodeType":"YulBlock","src":"6584:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6593:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"6601:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6586:6:115"},"nodeType":"YulFunctionCall","src":"6586:22:115"},"nodeType":"YulExpressionStatement","src":"6586:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6558:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"6567:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6554:3:115"},"nodeType":"YulFunctionCall","src":"6554:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"6579:3:115","type":"","value":"256"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6550:3:115"},"nodeType":"YulFunctionCall","src":"6550:33:115"},"nodeType":"YulIf","src":"6547:2:115"},{"nodeType":"YulAssignment","src":"6619:82:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6682:9:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6693:7:115"}],"functionName":{"name":"abi_decode_t_struct$_ExactInputSingleParams_calldata","nodeType":"YulIdentifier","src":"6629:52:115"},"nodeType":"YulFunctionCall","src":"6629:72:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6619:6:115"}]}]},"name":"abi_decode_tuple_t_struct$_ExactInputSingleParams_$10069_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6503:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6514:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6526:6:115","type":""}],"src":"6424:283:115"},{"body":{"nodeType":"YulBlock","src":"6820:320:115","statements":[{"body":{"nodeType":"YulBlock","src":"6866:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6875:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"6883:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6868:6:115"},"nodeType":"YulFunctionCall","src":"6868:22:115"},"nodeType":"YulExpressionStatement","src":"6868:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6841:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"6850:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6837:3:115"},"nodeType":"YulFunctionCall","src":"6837:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"6862:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6833:3:115"},"nodeType":"YulFunctionCall","src":"6833:32:115"},"nodeType":"YulIf","src":"6830:2:115"},{"nodeType":"YulVariableDeclaration","src":"6901:37:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6928:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6915:12:115"},"nodeType":"YulFunctionCall","src":"6915:23:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6905:6:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"6981:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6990:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"6998:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6983:6:115"},"nodeType":"YulFunctionCall","src":"6983:22:115"},"nodeType":"YulExpressionStatement","src":"6983:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6953:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6961:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6950:2:115"},"nodeType":"YulFunctionCall","src":"6950:30:115"},"nodeType":"YulIf","src":"6947:2:115"},{"nodeType":"YulVariableDeclaration","src":"7016:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7030:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"7041:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7026:3:115"},"nodeType":"YulFunctionCall","src":"7026:22:115"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7020:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"7087:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7096:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"7104:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7089:6:115"},"nodeType":"YulFunctionCall","src":"7089:22:115"},"nodeType":"YulExpressionStatement","src":"7089:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7068:7:115"},{"name":"_1","nodeType":"YulIdentifier","src":"7077:2:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7064:3:115"},"nodeType":"YulFunctionCall","src":"7064:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"7082:3:115","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7060:3:115"},"nodeType":"YulFunctionCall","src":"7060:26:115"},"nodeType":"YulIf","src":"7057:2:115"},{"nodeType":"YulAssignment","src":"7122:12:115","value":{"name":"_1","nodeType":"YulIdentifier","src":"7132:2:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7122:6:115"}]}]},"name":"abi_decode_tuple_t_struct$_ExactOutputParams_$10132_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6786:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6797:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6809:6:115","type":""}],"src":"6712:428:115"},{"body":{"nodeType":"YulBlock","src":"7259:170:115","statements":[{"body":{"nodeType":"YulBlock","src":"7306:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7315:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"7323:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7308:6:115"},"nodeType":"YulFunctionCall","src":"7308:22:115"},"nodeType":"YulExpressionStatement","src":"7308:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7280:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"7289:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7276:3:115"},"nodeType":"YulFunctionCall","src":"7276:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"7301:3:115","type":"","value":"256"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7272:3:115"},"nodeType":"YulFunctionCall","src":"7272:33:115"},"nodeType":"YulIf","src":"7269:2:115"},{"nodeType":"YulAssignment","src":"7341:82:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7404:9:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7415:7:115"}],"functionName":{"name":"abi_decode_t_struct$_ExactInputSingleParams_calldata","nodeType":"YulIdentifier","src":"7351:52:115"},"nodeType":"YulFunctionCall","src":"7351:72:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7341:6:115"}]}]},"name":"abi_decode_tuple_t_struct$_ExactOutputSingleParams_$10113_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7225:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7236:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7248:6:115","type":""}],"src":"7145:284:115"},{"body":{"nodeType":"YulBlock","src":"7538:824:115","statements":[{"body":{"nodeType":"YulBlock","src":"7584:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7593:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"7601:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7586:6:115"},"nodeType":"YulFunctionCall","src":"7586:22:115"},"nodeType":"YulExpressionStatement","src":"7586:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7559:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"7568:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7555:3:115"},"nodeType":"YulFunctionCall","src":"7555:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"7580:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7551:3:115"},"nodeType":"YulFunctionCall","src":"7551:32:115"},"nodeType":"YulIf","src":"7548:2:115"},{"nodeType":"YulVariableDeclaration","src":"7619:37:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7646:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7633:12:115"},"nodeType":"YulFunctionCall","src":"7633:23:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7623:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7665:28:115","value":{"kind":"number","nodeType":"YulLiteral","src":"7675:18:115","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7669:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"7720:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7729:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"7737:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7722:6:115"},"nodeType":"YulFunctionCall","src":"7722:22:115"},"nodeType":"YulExpressionStatement","src":"7722:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7708:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"7716:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7705:2:115"},"nodeType":"YulFunctionCall","src":"7705:14:115"},"nodeType":"YulIf","src":"7702:2:115"},{"nodeType":"YulVariableDeclaration","src":"7755:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7769:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"7780:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7765:3:115"},"nodeType":"YulFunctionCall","src":"7765:22:115"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"7759:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"7827:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7836:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"7844:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7829:6:115"},"nodeType":"YulFunctionCall","src":"7829:22:115"},"nodeType":"YulExpressionStatement","src":"7829:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7807:7:115"},{"name":"_2","nodeType":"YulIdentifier","src":"7816:2:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7803:3:115"},"nodeType":"YulFunctionCall","src":"7803:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"7821:4:115","type":"","value":"0x40"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7799:3:115"},"nodeType":"YulFunctionCall","src":"7799:27:115"},"nodeType":"YulIf","src":"7796:2:115"},{"nodeType":"YulVariableDeclaration","src":"7862:25:115","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7882:4:115","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7876:5:115"},"nodeType":"YulFunctionCall","src":"7876:11:115"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7866:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7896:35:115","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7918:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"7926:4:115","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7914:3:115"},"nodeType":"YulFunctionCall","src":"7914:17:115"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7900:10:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"7990:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"7992:7:115"},"nodeType":"YulFunctionCall","src":"7992:9:115"},"nodeType":"YulExpressionStatement","src":"7992:9:115"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7949:10:115"},{"name":"_1","nodeType":"YulIdentifier","src":"7961:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7946:2:115"},"nodeType":"YulFunctionCall","src":"7946:18:115"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7969:10:115"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7981:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7966:2:115"},"nodeType":"YulFunctionCall","src":"7966:22:115"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7943:2:115"},"nodeType":"YulFunctionCall","src":"7943:46:115"},"nodeType":"YulIf","src":"7940:2:115"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8019:4:115","type":"","value":"0x40"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8025:10:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8012:6:115"},"nodeType":"YulFunctionCall","src":"8012:24:115"},"nodeType":"YulExpressionStatement","src":"8012:24:115"},{"nodeType":"YulVariableDeclaration","src":"8045:32:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"8074:2:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8061:12:115"},"nodeType":"YulFunctionCall","src":"8061:16:115"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"8049:8:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"8106:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8115:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"8123:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8108:6:115"},"nodeType":"YulFunctionCall","src":"8108:22:115"},"nodeType":"YulExpressionStatement","src":"8108:22:115"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"8092:8:115"},{"name":"_1","nodeType":"YulIdentifier","src":"8102:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8089:2:115"},"nodeType":"YulFunctionCall","src":"8089:16:115"},"nodeType":"YulIf","src":"8086:2:115"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8148:6:115"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"8179:2:115"},{"name":"offset_1","nodeType":"YulIdentifier","src":"8183:8:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8175:3:115"},"nodeType":"YulFunctionCall","src":"8175:17:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8194:7:115"}],"functionName":{"name":"abi_decode_t_bytes","nodeType":"YulIdentifier","src":"8156:18:115"},"nodeType":"YulFunctionCall","src":"8156:46:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8141:6:115"},"nodeType":"YulFunctionCall","src":"8141:62:115"},"nodeType":"YulExpressionStatement","src":"8141:62:115"},{"nodeType":"YulVariableDeclaration","src":"8212:38:115","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"8242:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"8246:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8238:3:115"},"nodeType":"YulFunctionCall","src":"8238:11:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8225:12:115"},"nodeType":"YulFunctionCall","src":"8225:25:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8216:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8286:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"8259:26:115"},"nodeType":"YulFunctionCall","src":"8259:33:115"},"nodeType":"YulExpressionStatement","src":"8259:33:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8312:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"8320:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8308:3:115"},"nodeType":"YulFunctionCall","src":"8308:15:115"},{"name":"value","nodeType":"YulIdentifier","src":"8325:5:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8301:6:115"},"nodeType":"YulFunctionCall","src":"8301:30:115"},"nodeType":"YulExpressionStatement","src":"8301:30:115"},{"nodeType":"YulAssignment","src":"8340:16:115","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"8350:6:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8340:6:115"}]}]},"name":"abi_decode_tuple_t_struct$_SwapCallbackData_$7269_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7504:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7515:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7527:6:115","type":""}],"src":"7434:928:115"},{"body":{"nodeType":"YulBlock","src":"8437:189:115","statements":[{"body":{"nodeType":"YulBlock","src":"8483:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8492:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"8500:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8485:6:115"},"nodeType":"YulFunctionCall","src":"8485:22:115"},"nodeType":"YulExpressionStatement","src":"8485:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8458:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"8467:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8454:3:115"},"nodeType":"YulFunctionCall","src":"8454:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"8479:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8450:3:115"},"nodeType":"YulFunctionCall","src":"8450:32:115"},"nodeType":"YulIf","src":"8447:2:115"},{"nodeType":"YulVariableDeclaration","src":"8518:36:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8544:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8531:12:115"},"nodeType":"YulFunctionCall","src":"8531:23:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8522:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8590:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"8563:26:115"},"nodeType":"YulFunctionCall","src":"8563:33:115"},"nodeType":"YulExpressionStatement","src":"8563:33:115"},{"nodeType":"YulAssignment","src":"8605:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"8615:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8605:6:115"}]}]},"name":"abi_decode_tuple_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8403:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8414:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8426:6:115","type":""}],"src":"8367:259:115"},{"body":{"nodeType":"YulBlock","src":"8700:225:115","statements":[{"body":{"nodeType":"YulBlock","src":"8746:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8755:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"8763:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8748:6:115"},"nodeType":"YulFunctionCall","src":"8748:22:115"},"nodeType":"YulExpressionStatement","src":"8748:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8721:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"8730:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8717:3:115"},"nodeType":"YulFunctionCall","src":"8717:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"8742:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8713:3:115"},"nodeType":"YulFunctionCall","src":"8713:32:115"},"nodeType":"YulIf","src":"8710:2:115"},{"nodeType":"YulVariableDeclaration","src":"8781:36:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8807:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8794:12:115"},"nodeType":"YulFunctionCall","src":"8794:23:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8785:5:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"8869:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8878:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"8886:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8871:6:115"},"nodeType":"YulFunctionCall","src":"8871:22:115"},"nodeType":"YulExpressionStatement","src":"8871:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8839:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8850:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"8857:8:115","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8846:3:115"},"nodeType":"YulFunctionCall","src":"8846:20:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8836:2:115"},"nodeType":"YulFunctionCall","src":"8836:31:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8829:6:115"},"nodeType":"YulFunctionCall","src":"8829:39:115"},"nodeType":"YulIf","src":"8826:2:115"},{"nodeType":"YulAssignment","src":"8904:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"8914:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8904:6:115"}]}]},"name":"abi_decode_tuple_t_uint24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8666:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8677:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8689:6:115","type":""}],"src":"8631:294:115"},{"body":{"nodeType":"YulBlock","src":"9000:120:115","statements":[{"body":{"nodeType":"YulBlock","src":"9046:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9055:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"9063:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9048:6:115"},"nodeType":"YulFunctionCall","src":"9048:22:115"},"nodeType":"YulExpressionStatement","src":"9048:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9021:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"9030:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9017:3:115"},"nodeType":"YulFunctionCall","src":"9017:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"9042:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9013:3:115"},"nodeType":"YulFunctionCall","src":"9013:32:115"},"nodeType":"YulIf","src":"9010:2:115"},{"nodeType":"YulAssignment","src":"9081:33:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9104:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9091:12:115"},"nodeType":"YulFunctionCall","src":"9091:23:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9081:6:115"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8966:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8977:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8989:6:115","type":""}],"src":"8930:190:115"},{"body":{"nodeType":"YulBlock","src":"9212:240:115","statements":[{"body":{"nodeType":"YulBlock","src":"9258:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9267:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"9275:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9260:6:115"},"nodeType":"YulFunctionCall","src":"9260:22:115"},"nodeType":"YulExpressionStatement","src":"9260:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9233:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"9242:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9229:3:115"},"nodeType":"YulFunctionCall","src":"9229:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"9254:2:115","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9225:3:115"},"nodeType":"YulFunctionCall","src":"9225:32:115"},"nodeType":"YulIf","src":"9222:2:115"},{"nodeType":"YulAssignment","src":"9293:33:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9316:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9303:12:115"},"nodeType":"YulFunctionCall","src":"9303:23:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9293:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"9335:45:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9365:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9376:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9361:3:115"},"nodeType":"YulFunctionCall","src":"9361:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9348:12:115"},"nodeType":"YulFunctionCall","src":"9348:32:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"9339:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9416:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"9389:26:115"},"nodeType":"YulFunctionCall","src":"9389:33:115"},"nodeType":"YulExpressionStatement","src":"9389:33:115"},{"nodeType":"YulAssignment","src":"9431:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"9441:5:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9431:6:115"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9170:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9181:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9193:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9201:6:115","type":""}],"src":"9125:327:115"},{"body":{"nodeType":"YulBlock","src":"9578:418:115","statements":[{"body":{"nodeType":"YulBlock","src":"9625:26:115","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"9634:6:115"},{"name":"value2","nodeType":"YulIdentifier","src":"9642:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9627:6:115"},"nodeType":"YulFunctionCall","src":"9627:22:115"},"nodeType":"YulExpressionStatement","src":"9627:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9599:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"9608:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9595:3:115"},"nodeType":"YulFunctionCall","src":"9595:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"9620:3:115","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9591:3:115"},"nodeType":"YulFunctionCall","src":"9591:33:115"},"nodeType":"YulIf","src":"9588:2:115"},{"nodeType":"YulAssignment","src":"9660:33:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9683:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9670:12:115"},"nodeType":"YulFunctionCall","src":"9670:23:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9660:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"9702:45:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9732:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9743:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9728:3:115"},"nodeType":"YulFunctionCall","src":"9728:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9715:12:115"},"nodeType":"YulFunctionCall","src":"9715:32:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"9706:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9783:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"9756:26:115"},"nodeType":"YulFunctionCall","src":"9756:33:115"},"nodeType":"YulExpressionStatement","src":"9756:33:115"},{"nodeType":"YulAssignment","src":"9798:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"9808:5:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9798:6:115"}]},{"nodeType":"YulAssignment","src":"9822:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9849:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9860:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9845:3:115"},"nodeType":"YulFunctionCall","src":"9845:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9832:12:115"},"nodeType":"YulFunctionCall","src":"9832:32:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"9822:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"9873:47:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9905:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"9916:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9901:3:115"},"nodeType":"YulFunctionCall","src":"9901:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9888:12:115"},"nodeType":"YulFunctionCall","src":"9888:32:115"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"9877:7:115","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"9956:7:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"9929:26:115"},"nodeType":"YulFunctionCall","src":"9929:35:115"},"nodeType":"YulExpressionStatement","src":"9929:35:115"},{"nodeType":"YulAssignment","src":"9973:17:115","value":{"name":"value_1","nodeType":"YulIdentifier","src":"9983:7:115"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"9973:6:115"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9520:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9531:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9543:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9551:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9559:6:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9567:6:115","type":""}],"src":"9457:539:115"},{"body":{"nodeType":"YulBlock","src":"10052:267:115","statements":[{"nodeType":"YulVariableDeclaration","src":"10062:26:115","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10082:5:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10076:5:115"},"nodeType":"YulFunctionCall","src":"10076:12:115"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"10066:6:115","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10104:3:115"},{"name":"length","nodeType":"YulIdentifier","src":"10109:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10097:6:115"},"nodeType":"YulFunctionCall","src":"10097:19:115"},"nodeType":"YulExpressionStatement","src":"10097:19:115"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10151:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"10158:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10147:3:115"},"nodeType":"YulFunctionCall","src":"10147:16:115"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10169:3:115"},{"kind":"number","nodeType":"YulLiteral","src":"10174:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10165:3:115"},"nodeType":"YulFunctionCall","src":"10165:14:115"},{"name":"length","nodeType":"YulIdentifier","src":"10181:6:115"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"10125:21:115"},"nodeType":"YulFunctionCall","src":"10125:63:115"},"nodeType":"YulExpressionStatement","src":"10125:63:115"},{"nodeType":"YulAssignment","src":"10197:116:115","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10212:3:115"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10225:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"10233:2:115","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10221:3:115"},"nodeType":"YulFunctionCall","src":"10221:15:115"},{"kind":"number","nodeType":"YulLiteral","src":"10238:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10217:3:115"},"nodeType":"YulFunctionCall","src":"10217:88:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10208:3:115"},"nodeType":"YulFunctionCall","src":"10208:98:115"},{"kind":"number","nodeType":"YulLiteral","src":"10308:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10204:3:115"},"nodeType":"YulFunctionCall","src":"10204:109:115"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10197:3:115"}]}]},"name":"abi_encode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10029:5:115","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10036:3:115","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10044:3:115","type":""}],"src":"10001:318:115"},{"body":{"nodeType":"YulBlock","src":"10497:341:115","statements":[{"nodeType":"YulVariableDeclaration","src":"10507:76:115","value":{"kind":"number","nodeType":"YulLiteral","src":"10517:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"10511:2:115","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10599:3:115"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10612:2:115","type":"","value":"96"},{"name":"value0","nodeType":"YulIdentifier","src":"10616:6:115"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10608:3:115"},"nodeType":"YulFunctionCall","src":"10608:15:115"},{"name":"_1","nodeType":"YulIdentifier","src":"10625:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10604:3:115"},"nodeType":"YulFunctionCall","src":"10604:24:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10592:6:115"},"nodeType":"YulFunctionCall","src":"10592:37:115"},"nodeType":"YulExpressionStatement","src":"10592:37:115"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10649:3:115"},{"kind":"number","nodeType":"YulLiteral","src":"10654:2:115","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10645:3:115"},"nodeType":"YulFunctionCall","src":"10645:12:115"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10667:3:115","type":"","value":"232"},{"name":"value1","nodeType":"YulIdentifier","src":"10672:6:115"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10663:3:115"},"nodeType":"YulFunctionCall","src":"10663:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"10681:66:115","type":"","value":"0xffffff0000000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10659:3:115"},"nodeType":"YulFunctionCall","src":"10659:89:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10638:6:115"},"nodeType":"YulFunctionCall","src":"10638:111:115"},"nodeType":"YulExpressionStatement","src":"10638:111:115"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10769:3:115"},{"kind":"number","nodeType":"YulLiteral","src":"10774:2:115","type":"","value":"23"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10765:3:115"},"nodeType":"YulFunctionCall","src":"10765:12:115"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10787:2:115","type":"","value":"96"},{"name":"value2","nodeType":"YulIdentifier","src":"10791:6:115"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10783:3:115"},"nodeType":"YulFunctionCall","src":"10783:15:115"},{"name":"_1","nodeType":"YulIdentifier","src":"10800:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10779:3:115"},"nodeType":"YulFunctionCall","src":"10779:24:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10758:6:115"},"nodeType":"YulFunctionCall","src":"10758:46:115"},"nodeType":"YulExpressionStatement","src":"10758:46:115"},{"nodeType":"YulAssignment","src":"10813:19:115","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10824:3:115"},{"kind":"number","nodeType":"YulLiteral","src":"10829:2:115","type":"","value":"43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10820:3:115"},"nodeType":"YulFunctionCall","src":"10820:12:115"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10813:3:115"}]}]},"name":"abi_encode_tuple_packed_t_address_t_uint24_t_address__to_t_address_t_uint24_t_address__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"10457:3:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10462:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10470:6:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10478:6:115","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10489:3:115","type":""}],"src":"10324:514:115"},{"body":{"nodeType":"YulBlock","src":"10990:126:115","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11013:3:115"},{"name":"value0","nodeType":"YulIdentifier","src":"11018:6:115"},{"name":"value1","nodeType":"YulIdentifier","src":"11026:6:115"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"11000:12:115"},"nodeType":"YulFunctionCall","src":"11000:33:115"},"nodeType":"YulExpressionStatement","src":"11000:33:115"},{"nodeType":"YulVariableDeclaration","src":"11042:26:115","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11056:3:115"},{"name":"value1","nodeType":"YulIdentifier","src":"11061:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11052:3:115"},"nodeType":"YulFunctionCall","src":"11052:16:115"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"11046:2:115","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"11084:2:115"},{"name":"end","nodeType":"YulIdentifier","src":"11088:3:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11077:6:115"},"nodeType":"YulFunctionCall","src":"11077:15:115"},"nodeType":"YulExpressionStatement","src":"11077:15:115"},{"nodeType":"YulAssignment","src":"11101:9:115","value":{"name":"_1","nodeType":"YulIdentifier","src":"11108:2:115"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"11101:3:115"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"10958:3:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10963:6:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10971:6:115","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10982:3:115","type":""}],"src":"10843:273:115"},{"body":{"nodeType":"YulBlock","src":"11222:125:115","statements":[{"nodeType":"YulAssignment","src":"11232:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11244:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"11255:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11240:3:115"},"nodeType":"YulFunctionCall","src":"11240:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11232:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11274:9:115"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11289:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"11297:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11285:3:115"},"nodeType":"YulFunctionCall","src":"11285:55:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11267:6:115"},"nodeType":"YulFunctionCall","src":"11267:74:115"},"nodeType":"YulExpressionStatement","src":"11267:74:115"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11191:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11202:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11213:4:115","type":""}],"src":"11121:226:115"},{"body":{"nodeType":"YulBlock","src":"11575:370:115","statements":[{"nodeType":"YulVariableDeclaration","src":"11585:52:115","value":{"kind":"number","nodeType":"YulLiteral","src":"11595:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"11589:2:115","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11653:9:115"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11668:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"11676:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11664:3:115"},"nodeType":"YulFunctionCall","src":"11664:15:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11646:6:115"},"nodeType":"YulFunctionCall","src":"11646:34:115"},"nodeType":"YulExpressionStatement","src":"11646:34:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11700:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"11711:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11696:3:115"},"nodeType":"YulFunctionCall","src":"11696:18:115"},{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11730:6:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11723:6:115"},"nodeType":"YulFunctionCall","src":"11723:14:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11716:6:115"},"nodeType":"YulFunctionCall","src":"11716:22:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11689:6:115"},"nodeType":"YulFunctionCall","src":"11689:50:115"},"nodeType":"YulExpressionStatement","src":"11689:50:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11759:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"11770:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11755:3:115"},"nodeType":"YulFunctionCall","src":"11755:18:115"},{"name":"value2","nodeType":"YulIdentifier","src":"11775:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11748:6:115"},"nodeType":"YulFunctionCall","src":"11748:34:115"},"nodeType":"YulExpressionStatement","src":"11748:34:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11802:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"11813:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11798:3:115"},"nodeType":"YulFunctionCall","src":"11798:18:115"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"11822:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"11830:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11818:3:115"},"nodeType":"YulFunctionCall","src":"11818:15:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11791:6:115"},"nodeType":"YulFunctionCall","src":"11791:43:115"},"nodeType":"YulExpressionStatement","src":"11791:43:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11854:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"11865:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11850:3:115"},"nodeType":"YulFunctionCall","src":"11850:19:115"},{"kind":"number","nodeType":"YulLiteral","src":"11871:3:115","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11843:6:115"},"nodeType":"YulFunctionCall","src":"11843:32:115"},"nodeType":"YulExpressionStatement","src":"11843:32:115"},{"nodeType":"YulAssignment","src":"11884:55:115","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"11911:6:115"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11923:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"11934:3:115","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11919:3:115"},"nodeType":"YulFunctionCall","src":"11919:19:115"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"11892:18:115"},"nodeType":"YulFunctionCall","src":"11892:47:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11884:4:115"}]}]},"name":"abi_encode_tuple_t_address_t_bool_t_int256_t_uint160_t_bytes_memory_ptr__to_t_address_t_bool_t_int256_t_uint160_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11512:9:115","type":""},{"name":"value4","nodeType":"YulTypedName","src":"11523:6:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"11531:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11539:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11547:6:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11555:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11566:4:115","type":""}],"src":"11352:593:115"},{"body":{"nodeType":"YulBlock","src":"12119:696:115","statements":[{"nodeType":"YulVariableDeclaration","src":"12129:12:115","value":{"kind":"number","nodeType":"YulLiteral","src":"12139:2:115","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"12133:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12150:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12168:9:115"},{"name":"_1","nodeType":"YulIdentifier","src":"12179:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12164:3:115"},"nodeType":"YulFunctionCall","src":"12164:18:115"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"12154:6:115","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12198:9:115"},{"name":"_1","nodeType":"YulIdentifier","src":"12209:2:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12191:6:115"},"nodeType":"YulFunctionCall","src":"12191:21:115"},"nodeType":"YulExpressionStatement","src":"12191:21:115"},{"nodeType":"YulVariableDeclaration","src":"12221:17:115","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"12232:6:115"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"12225:3:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12247:27:115","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12267:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12261:5:115"},"nodeType":"YulFunctionCall","src":"12261:13:115"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"12251:6:115","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"12290:6:115"},{"name":"length","nodeType":"YulIdentifier","src":"12298:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12283:6:115"},"nodeType":"YulFunctionCall","src":"12283:22:115"},"nodeType":"YulExpressionStatement","src":"12283:22:115"},{"nodeType":"YulAssignment","src":"12314:25:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12325:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"12336:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12321:3:115"},"nodeType":"YulFunctionCall","src":"12321:18:115"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12314:3:115"}]},{"nodeType":"YulVariableDeclaration","src":"12348:54:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12370:9:115"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12385:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"12393:2:115"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"12381:3:115"},"nodeType":"YulFunctionCall","src":"12381:15:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12366:3:115"},"nodeType":"YulFunctionCall","src":"12366:31:115"},{"kind":"number","nodeType":"YulLiteral","src":"12399:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12362:3:115"},"nodeType":"YulFunctionCall","src":"12362:40:115"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"12352:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12411:29:115","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12429:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"12437:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12425:3:115"},"nodeType":"YulFunctionCall","src":"12425:15:115"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"12415:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12449:13:115","value":{"name":"tail","nodeType":"YulIdentifier","src":"12458:4:115"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"12453:1:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"12520:266:115","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12541:3:115"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12554:6:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"12562:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12550:3:115"},"nodeType":"YulFunctionCall","src":"12550:22:115"},{"kind":"number","nodeType":"YulLiteral","src":"12574:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12546:3:115"},"nodeType":"YulFunctionCall","src":"12546:95:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12534:6:115"},"nodeType":"YulFunctionCall","src":"12534:108:115"},"nodeType":"YulExpressionStatement","src":"12534:108:115"},{"nodeType":"YulAssignment","src":"12655:51:115","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"12690:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12684:5:115"},"nodeType":"YulFunctionCall","src":"12684:13:115"},{"name":"tail_2","nodeType":"YulIdentifier","src":"12699:6:115"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"12665:18:115"},"nodeType":"YulFunctionCall","src":"12665:41:115"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12655:6:115"}]},{"nodeType":"YulAssignment","src":"12719:25:115","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"12733:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"12741:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12729:3:115"},"nodeType":"YulFunctionCall","src":"12729:15:115"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"12719:6:115"}]},{"nodeType":"YulAssignment","src":"12757:19:115","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12768:3:115"},{"name":"_1","nodeType":"YulIdentifier","src":"12773:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12764:3:115"},"nodeType":"YulFunctionCall","src":"12764:12:115"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12757:3:115"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"12482:1:115"},{"name":"length","nodeType":"YulIdentifier","src":"12485:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"12479:2:115"},"nodeType":"YulFunctionCall","src":"12479:13:115"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"12493:18:115","statements":[{"nodeType":"YulAssignment","src":"12495:14:115","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"12504:1:115"},{"kind":"number","nodeType":"YulLiteral","src":"12507:1:115","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12500:3:115"},"nodeType":"YulFunctionCall","src":"12500:9:115"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"12495:1:115"}]}]},"pre":{"nodeType":"YulBlock","src":"12475:3:115","statements":[]},"src":"12471:315:115"},{"nodeType":"YulAssignment","src":"12795:14:115","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"12803:6:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12795:4:115"}]}]},"name":"abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12088:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12099:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12110:4:115","type":""}],"src":"11950:865:115"},{"body":{"nodeType":"YulBlock","src":"12941:100:115","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12958:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"12969:2:115","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12951:6:115"},"nodeType":"YulFunctionCall","src":"12951:21:115"},"nodeType":"YulExpressionStatement","src":"12951:21:115"},{"nodeType":"YulAssignment","src":"12981:54:115","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13008:6:115"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13020:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13031:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13016:3:115"},"nodeType":"YulFunctionCall","src":"13016:18:115"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"12989:18:115"},"nodeType":"YulFunctionCall","src":"12989:46:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12981:4:115"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12910:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12921:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12932:4:115","type":""}],"src":"12820:221:115"},{"body":{"nodeType":"YulBlock","src":"13220:168:115","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13237:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13248:2:115","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13230:6:115"},"nodeType":"YulFunctionCall","src":"13230:21:115"},"nodeType":"YulExpressionStatement","src":"13230:21:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13271:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13282:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13267:3:115"},"nodeType":"YulFunctionCall","src":"13267:18:115"},{"kind":"number","nodeType":"YulLiteral","src":"13287:2:115","type":"","value":"18"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13260:6:115"},"nodeType":"YulFunctionCall","src":"13260:30:115"},"nodeType":"YulExpressionStatement","src":"13260:30:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13310:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13321:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13306:3:115"},"nodeType":"YulFunctionCall","src":"13306:18:115"},{"kind":"string","nodeType":"YulLiteral","src":"13326:20:115","type":"","value":"Too much requested"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13299:6:115"},"nodeType":"YulFunctionCall","src":"13299:48:115"},"nodeType":"YulExpressionStatement","src":"13299:48:115"},{"nodeType":"YulAssignment","src":"13356:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13368:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13379:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13364:3:115"},"nodeType":"YulFunctionCall","src":"13364:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13356:4:115"}]}]},"name":"abi_encode_tuple_t_stringliteral_a5c1362ddf12293b907d8907d79f16e40792a7ddc4f09ee6d70cfec4ad443305__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13197:9:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13211:4:115","type":""}],"src":"13046:342:115"},{"body":{"nodeType":"YulBlock","src":"13567:169:115","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13584:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13595:2:115","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13577:6:115"},"nodeType":"YulFunctionCall","src":"13577:21:115"},"nodeType":"YulExpressionStatement","src":"13577:21:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13618:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13629:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13614:3:115"},"nodeType":"YulFunctionCall","src":"13614:18:115"},{"kind":"number","nodeType":"YulLiteral","src":"13634:2:115","type":"","value":"19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13607:6:115"},"nodeType":"YulFunctionCall","src":"13607:30:115"},"nodeType":"YulExpressionStatement","src":"13607:30:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13657:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13668:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13653:3:115"},"nodeType":"YulFunctionCall","src":"13653:18:115"},{"kind":"string","nodeType":"YulLiteral","src":"13673:21:115","type":"","value":"Too little received"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13646:6:115"},"nodeType":"YulFunctionCall","src":"13646:49:115"},"nodeType":"YulExpressionStatement","src":"13646:49:115"},{"nodeType":"YulAssignment","src":"13704:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13716:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13727:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13712:3:115"},"nodeType":"YulFunctionCall","src":"13712:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13704:4:115"}]}]},"name":"abi_encode_tuple_t_stringliteral_f037a9cbca9be03859489f289f0cf5f85c0414bbfdd9785bc7ab31bd734e249c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13544:9:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13558:4:115","type":""}],"src":"13393:343:115"},{"body":{"nodeType":"YulBlock","src":"13910:328:115","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13927:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"13938:2:115","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13920:6:115"},"nodeType":"YulFunctionCall","src":"13920:21:115"},"nodeType":"YulExpressionStatement","src":"13920:21:115"},{"nodeType":"YulVariableDeclaration","src":"13950:33:115","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13976:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13970:5:115"},"nodeType":"YulFunctionCall","src":"13970:13:115"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"13954:12:115","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14003:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"14014:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13999:3:115"},"nodeType":"YulFunctionCall","src":"13999:18:115"},{"kind":"number","nodeType":"YulLiteral","src":"14019:4:115","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13992:6:115"},"nodeType":"YulFunctionCall","src":"13992:32:115"},"nodeType":"YulExpressionStatement","src":"13992:32:115"},{"nodeType":"YulVariableDeclaration","src":"14033:66:115","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"14066:12:115"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14084:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"14095:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14080:3:115"},"nodeType":"YulFunctionCall","src":"14080:18:115"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"14047:18:115"},"nodeType":"YulFunctionCall","src":"14047:52:115"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"14037:6:115","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14119:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"14130:4:115","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14115:3:115"},"nodeType":"YulFunctionCall","src":"14115:20:115"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14151:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"14159:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14147:3:115"},"nodeType":"YulFunctionCall","src":"14147:15:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14141:5:115"},"nodeType":"YulFunctionCall","src":"14141:22:115"},{"kind":"number","nodeType":"YulLiteral","src":"14165:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14137:3:115"},"nodeType":"YulFunctionCall","src":"14137:71:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14108:6:115"},"nodeType":"YulFunctionCall","src":"14108:101:115"},"nodeType":"YulExpressionStatement","src":"14108:101:115"},{"nodeType":"YulAssignment","src":"14218:14:115","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"14226:6:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14218:4:115"}]}]},"name":"abi_encode_tuple_t_struct$_SwapCallbackData_$7269_memory_ptr__to_t_struct$_SwapCallbackData_$7269_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13879:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13890:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13901:4:115","type":""}],"src":"13741:497:115"},{"body":{"nodeType":"YulBlock","src":"14344:76:115","statements":[{"nodeType":"YulAssignment","src":"14354:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14366:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"14377:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14362:3:115"},"nodeType":"YulFunctionCall","src":"14362:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14354:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14396:9:115"},{"name":"value0","nodeType":"YulIdentifier","src":"14407:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14389:6:115"},"nodeType":"YulFunctionCall","src":"14389:25:115"},"nodeType":"YulExpressionStatement","src":"14389:25:115"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14313:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14324:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14335:4:115","type":""}],"src":"14243:177:115"},{"body":{"nodeType":"YulBlock","src":"14519:498:115","statements":[{"nodeType":"YulVariableDeclaration","src":"14529:51:115","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"14568:11:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"14555:12:115"},"nodeType":"YulFunctionCall","src":"14555:25:115"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"14533:18:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"14728:22:115","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"14737:4:115"},{"name":"addr","nodeType":"YulIdentifier","src":"14743:4:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14730:6:115"},"nodeType":"YulFunctionCall","src":"14730:18:115"},"nodeType":"YulExpressionStatement","src":"14730:18:115"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"14603:18:115"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"14631:12:115"},"nodeType":"YulFunctionCall","src":"14631:14:115"},{"name":"base_ref","nodeType":"YulIdentifier","src":"14647:8:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14627:3:115"},"nodeType":"YulFunctionCall","src":"14627:29:115"},{"kind":"number","nodeType":"YulLiteral","src":"14658:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14623:3:115"},"nodeType":"YulFunctionCall","src":"14623:102:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"14599:3:115"},"nodeType":"YulFunctionCall","src":"14599:127:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"14592:6:115"},"nodeType":"YulFunctionCall","src":"14592:135:115"},"nodeType":"YulIf","src":"14589:2:115"},{"nodeType":"YulVariableDeclaration","src":"14759:47:115","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"14777:8:115"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"14787:18:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14773:3:115"},"nodeType":"YulFunctionCall","src":"14773:33:115"},"variables":[{"name":"addr_1","nodeType":"YulTypedName","src":"14763:6:115","type":""}]},{"nodeType":"YulAssignment","src":"14815:30:115","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"14838:6:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"14825:12:115"},"nodeType":"YulFunctionCall","src":"14825:20:115"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"14815:6:115"}]},{"body":{"nodeType":"YulBlock","src":"14888:22:115","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"14897:4:115"},{"name":"addr","nodeType":"YulIdentifier","src":"14903:4:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14890:6:115"},"nodeType":"YulFunctionCall","src":"14890:18:115"},"nodeType":"YulExpressionStatement","src":"14890:18:115"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14860:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"14868:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14857:2:115"},"nodeType":"YulFunctionCall","src":"14857:30:115"},"nodeType":"YulIf","src":"14854:2:115"},{"nodeType":"YulAssignment","src":"14919:25:115","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"14931:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"14939:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14927:3:115"},"nodeType":"YulFunctionCall","src":"14927:17:115"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"14919:4:115"}]},{"body":{"nodeType":"YulBlock","src":"14995:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15004:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15007:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14997:6:115"},"nodeType":"YulFunctionCall","src":"14997:12:115"},"nodeType":"YulExpressionStatement","src":"14997:12:115"}]},"condition":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"14960:4:115"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"14970:12:115"},"nodeType":"YulFunctionCall","src":"14970:14:115"},{"name":"length","nodeType":"YulIdentifier","src":"14986:6:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14966:3:115"},"nodeType":"YulFunctionCall","src":"14966:27:115"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"14956:3:115"},"nodeType":"YulFunctionCall","src":"14956:38:115"},"nodeType":"YulIf","src":"14953:2:115"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"14476:8:115","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"14486:11:115","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"14502:4:115","type":""},{"name":"length","nodeType":"YulTypedName","src":"14508:6:115","type":""}],"src":"14425:592:115"},{"body":{"nodeType":"YulBlock","src":"15066:198:115","statements":[{"nodeType":"YulAssignment","src":"15076:19:115","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15092:2:115","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15086:5:115"},"nodeType":"YulFunctionCall","src":"15086:9:115"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"15076:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"15104:35:115","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"15126:6:115"},{"name":"size","nodeType":"YulIdentifier","src":"15134:4:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15122:3:115"},"nodeType":"YulFunctionCall","src":"15122:17:115"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"15108:10:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"15214:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"15216:7:115"},"nodeType":"YulFunctionCall","src":"15216:9:115"},"nodeType":"YulExpressionStatement","src":"15216:9:115"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"15157:10:115"},{"kind":"number","nodeType":"YulLiteral","src":"15169:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15154:2:115"},"nodeType":"YulFunctionCall","src":"15154:34:115"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"15193:10:115"},{"name":"memPtr","nodeType":"YulIdentifier","src":"15205:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"15190:2:115"},"nodeType":"YulFunctionCall","src":"15190:22:115"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"15151:2:115"},"nodeType":"YulFunctionCall","src":"15151:62:115"},"nodeType":"YulIf","src":"15148:2:115"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15243:2:115","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"15247:10:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15236:6:115"},"nodeType":"YulFunctionCall","src":"15236:22:115"},"nodeType":"YulExpressionStatement","src":"15236:22:115"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"15046:4:115","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"15055:6:115","type":""}],"src":"15022:242:115"},{"body":{"nodeType":"YulBlock","src":"15328:181:115","statements":[{"body":{"nodeType":"YulBlock","src":"15372:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"15374:7:115"},"nodeType":"YulFunctionCall","src":"15374:9:115"},"nodeType":"YulExpressionStatement","src":"15374:9:115"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"15344:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"15352:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15341:2:115"},"nodeType":"YulFunctionCall","src":"15341:30:115"},"nodeType":"YulIf","src":"15338:2:115"},{"nodeType":"YulAssignment","src":"15394:109:115","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"15414:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"15422:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15410:3:115"},"nodeType":"YulFunctionCall","src":"15410:17:115"},{"kind":"number","nodeType":"YulLiteral","src":"15429:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15406:3:115"},"nodeType":"YulFunctionCall","src":"15406:90:115"},{"kind":"number","nodeType":"YulLiteral","src":"15498:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15402:3:115"},"nodeType":"YulFunctionCall","src":"15402:101:115"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"15394:4:115"}]}]},"name":"array_allocation_size_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"15308:6:115","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"15319:4:115","type":""}],"src":"15269:240:115"},{"body":{"nodeType":"YulBlock","src":"15567:205:115","statements":[{"nodeType":"YulVariableDeclaration","src":"15577:10:115","value":{"kind":"number","nodeType":"YulLiteral","src":"15586:1:115","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"15581:1:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"15646:63:115","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"15671:3:115"},{"name":"i","nodeType":"YulIdentifier","src":"15676:1:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15667:3:115"},"nodeType":"YulFunctionCall","src":"15667:11:115"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"15690:3:115"},{"name":"i","nodeType":"YulIdentifier","src":"15695:1:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15686:3:115"},"nodeType":"YulFunctionCall","src":"15686:11:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15680:5:115"},"nodeType":"YulFunctionCall","src":"15680:18:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15660:6:115"},"nodeType":"YulFunctionCall","src":"15660:39:115"},"nodeType":"YulExpressionStatement","src":"15660:39:115"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"15607:1:115"},{"name":"length","nodeType":"YulIdentifier","src":"15610:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"15604:2:115"},"nodeType":"YulFunctionCall","src":"15604:13:115"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"15618:19:115","statements":[{"nodeType":"YulAssignment","src":"15620:15:115","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"15629:1:115"},{"kind":"number","nodeType":"YulLiteral","src":"15632:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15625:3:115"},"nodeType":"YulFunctionCall","src":"15625:10:115"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"15620:1:115"}]}]},"pre":{"nodeType":"YulBlock","src":"15600:3:115","statements":[]},"src":"15596:113:115"},{"body":{"nodeType":"YulBlock","src":"15735:31:115","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"15748:3:115"},{"name":"length","nodeType":"YulIdentifier","src":"15753:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15744:3:115"},"nodeType":"YulFunctionCall","src":"15744:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"15762:1:115","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15737:6:115"},"nodeType":"YulFunctionCall","src":"15737:27:115"},"nodeType":"YulExpressionStatement","src":"15737:27:115"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"15724:1:115"},{"name":"length","nodeType":"YulIdentifier","src":"15727:6:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15721:2:115"},"nodeType":"YulFunctionCall","src":"15721:13:115"},"nodeType":"YulIf","src":"15718:2:115"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"15545:3:115","type":""},{"name":"dst","nodeType":"YulTypedName","src":"15550:3:115","type":""},{"name":"length","nodeType":"YulTypedName","src":"15555:6:115","type":""}],"src":"15514:258:115"},{"body":{"nodeType":"YulBlock","src":"15824:109:115","statements":[{"body":{"nodeType":"YulBlock","src":"15911:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15920:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15923:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"15913:6:115"},"nodeType":"YulFunctionCall","src":"15913:12:115"},"nodeType":"YulExpressionStatement","src":"15913:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15847:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15858:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"15865:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15854:3:115"},"nodeType":"YulFunctionCall","src":"15854:54:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"15844:2:115"},"nodeType":"YulFunctionCall","src":"15844:65:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"15837:6:115"},"nodeType":"YulFunctionCall","src":"15837:73:115"},"nodeType":"YulIf","src":"15834:2:115"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15813:5:115","type":""}],"src":"15777:156:115"}]},"contents":"{\n    { }\n    function abi_decode_t_address(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_t_address(value)\n    }\n    function abi_decode_t_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        let array_1 := allocateMemory(array_allocation_size_t_bytes(_1))\n        mstore(array_1, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(array, array) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(array_1, _1), 0x20), array)\n        array := array_1\n    }\n    function abi_decode_t_struct$_ExactInputSingleParams_calldata(offset, end) -> value\n    {\n        if slt(sub(end, offset), 256) { revert(value, value) }\n        value := offset\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_addresst_uint256t_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value1, value1) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_t_address(value_1)\n        value2 := value_1\n    }\n    function abi_decode_tuple_t_addresst_uint256t_addresst_uint256t_address(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_t_address(value_1)\n        value2 := value_1\n        value3 := calldataload(add(headStart, 96))\n        let value_2 := calldataload(add(headStart, 128))\n        validator_revert_t_address(value_2)\n        value4 := value_2\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(value5, value5) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let value_1 := calldataload(add(headStart, 96))\n        if iszero(eq(value_1, and(value_1, 0xff))) { revert(value5, value5) }\n        value3 := value_1\n        value4 := calldataload(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n    }\n    function abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value0, value0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(value0, value0) }\n        if gt(add(add(_2, mul(length, 32)), 32), dataEnd) { revert(value0, value0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_decode_tuple_t_int256t_int256_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_int256t_int256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value2, value2) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value2, value2) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(value2, value2) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(value2, value2) }\n        value2 := add(_2, 32)\n        value3 := length\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _2 := mload(_1)\n        let array := allocateMemory(array_allocation_size_t_bytes(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(value0, value0) }\n        copy_memory_to_memory(add(_1, 32), add(array, 32), _2)\n        value0 := array\n    }\n    function abi_decode_tuple_t_struct$_ExactInputParams_$10088_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if slt(sub(dataEnd, _2), 0xa0) { revert(value0, value0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0xa0)\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n        let offset_1 := calldataload(_2)\n        if gt(offset_1, _1) { revert(value0, value0) }\n        mstore(memPtr, abi_decode_t_bytes(add(_2, offset_1), dataEnd))\n        mstore(add(memPtr, 32), abi_decode_t_address(add(_2, 32)))\n        mstore(add(memPtr, 64), calldataload(add(_2, 64)))\n        mstore(add(memPtr, 96), calldataload(add(_2, 96)))\n        mstore(add(memPtr, 128), calldataload(add(_2, 128)))\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_struct$_ExactInputSingleParams_$10069_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 256) { revert(value0, value0) }\n        value0 := abi_decode_t_struct$_ExactInputSingleParams_calldata(headStart, dataEnd)\n    }\n    function abi_decode_tuple_t_struct$_ExactOutputParams_$10132_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        let _1 := add(headStart, offset)\n        if slt(sub(dataEnd, _1), 160) { revert(value0, value0) }\n        value0 := _1\n    }\n    function abi_decode_tuple_t_struct$_ExactOutputSingleParams_$10113_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 256) { revert(value0, value0) }\n        value0 := abi_decode_t_struct$_ExactInputSingleParams_calldata(headStart, dataEnd)\n    }\n    function abi_decode_tuple_t_struct$_SwapCallbackData_$7269_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if slt(sub(dataEnd, _2), 0x40) { revert(value0, value0) }\n        let memPtr := mload(0x40)\n        let newFreePtr := add(memPtr, 0x40)\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(0x40, newFreePtr)\n        let offset_1 := calldataload(_2)\n        if gt(offset_1, _1) { revert(value0, value0) }\n        mstore(memPtr, abi_decode_t_bytes(add(_2, offset_1), dataEnd))\n        let value := calldataload(add(_2, 32))\n        validator_revert_t_address(value)\n        mstore(add(memPtr, 32), value)\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_uint160(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint24(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffff))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_t_address(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_uint256t_addresst_uint256t_address(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value2, value2) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_t_address(value)\n        value1 := value\n        value2 := calldataload(add(headStart, 64))\n        let value_1 := calldataload(add(headStart, 96))\n        validator_revert_t_address(value_1)\n        value3 := value_1\n    }\n    function abi_encode_t_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_packed_t_address_t_uint24_t_address__to_t_address_t_uint24_t_address__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000\n        mstore(pos, and(shl(96, value0), _1))\n        mstore(add(pos, 20), and(shl(232, value1), 0xffffff0000000000000000000000000000000000000000000000000000000000))\n        mstore(add(pos, 23), and(shl(96, value2), _1))\n        end := add(pos, 43)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, end)\n        end := _1\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_bool_t_int256_t_uint160_t_bytes_memory_ptr__to_t_address_t_bool_t_int256_t_uint160_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), iszero(iszero(value1)))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), 160)\n        tail := abi_encode_t_bytes(value4, add(headStart, 160))\n    }\n    function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let tail_2 := add(add(headStart, mul(length, _1)), 64)\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0))\n            tail_2 := abi_encode_t_bytes(mload(srcPtr), tail_2)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        tail := tail_2\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_t_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_a5c1362ddf12293b907d8907d79f16e40792a7ddc4f09ee6d70cfec4ad443305__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 18)\n        mstore(add(headStart, 64), \"Too much requested\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f037a9cbca9be03859489f289f0cf5f85c0414bbfdd9785bc7ab31bd734e249c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"Too little received\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_struct$_SwapCallbackData_$7269_memory_ptr__to_t_struct$_SwapCallbackData_$7269_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let memberValue0 := mload(value0)\n        mstore(add(headStart, 32), 0x40)\n        let tail_1 := abi_encode_t_bytes(memberValue0, add(headStart, 96))\n        mstore(add(headStart, 0x40), and(mload(add(value0, 32)), 0xffffffffffffffffffffffffffffffffffffffff))\n        tail := tail_1\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(addr, addr) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(addr, addr) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function allocateMemory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, size)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_t_bytes(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        size := add(and(add(length, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function validator_revert_t_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n}","id":115,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"8379":[{"length":32,"start":955},{"length":32,"start":3899},{"length":32,"start":9417}],"8383":[{"length":32,"start":330},{"length":32,"start":1782},{"length":32,"start":1846},{"length":32,"start":2144},{"length":32,"start":2569},{"length":32,"start":2867},{"length":32,"start":5536},{"length":32,"start":5632},{"length":32,"start":5761}]},"linkReferences":{},"object":"60806040526004361061012d5760003560e01c8063c04b8d59116100a5578063db3e219811610074578063e0e189a011610059578063e0e189a01461033d578063f28c049814610350578063f3995c6714610363576101d8565b8063db3e219814610317578063df2ab5bb1461032a576101d8565b8063c04b8d59146102d4578063c2e3140a146102e7578063c45a0155146102fa578063c53af3041461030f576101d8565b806390793ea8116100fc578063a4a78f0c116100e1578063a4a78f0c1461028e578063a98ce37f146102a1578063ac9650d8146102b4576101d8565b806390793ea81461025957806397e87d9d1461027b576101d8565b806311c17848146101dd5780633beb26c4146101fd578063414bf3891461021d5780634659a49414610246576101d8565b366101d8573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101d657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e6f742053414d42000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b3480156101e957600080fd5b506101d66101f83660046128aa565b610376565b34801561020957600080fd5b506101d6610218366004612b41565b6104c9565b61023061022b366004612a3a565b6104ce565b60405161023d9190612e4b565b60405180910390f35b6101d66102543660046127b8565b610640565b34801561026557600080fd5b5061026e6106f4565b60405161023d9190612c91565b6101d6610289366004612b88565b610718565b6101d661029c3660046127b8565b610930565b6101d66102af366004612b59565b610a05565b6102c76102c2366004612818565b610bcb565b60405161023d9190612d04565b6102306102e236600461298f565b610d25565b6101d66102f53660046127b8565b610e84565b34801561030657600080fd5b5061026e610f39565b6101d6610f5d565b610230610325366004612a3a565b610f6f565b6101d6610338366004612719565b6110ff565b6101d661034b36600461275a565b61121c565b61023061035e366004612a56565b611382565b6101d66103713660046127b8565b6114b6565b60008413806103855750600083135b61038e57600080fd5b600061039c82840184612a8e565b905060008060006103b0846000015161154e565b9250925092506103e27f000000000000000000000000000000000000000000000000000000000000000084848461157f565b5060008060008a13610423578473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161089610454565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16108a5b9150915081156104735761046e858760200151338461159e565b6104bd565b855161047e9061177c565b156104a357855161048e90611788565b865261049d81336000896117c3565b506104bd565b806000819055508394506104bd858760200151338461159e565b50505050505050505050565b600155565b60008160800135806104de61197f565b111561054b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b6105f160a084013561056360808601606087016126f6565b610574610100870160e088016126f6565b604080518082019091528061058c60208a018a6126f6565b61059c60608b0160408c01612b1e565b6105ac60408c0160208d016126f6565b6040516020016105be93929190612c1b565b60405160208183030381529060405281526020013373ffffffffffffffffffffffffffffffffffffffff16815250611985565b91508260c0013582101561063a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063190612dcc565b60405180910390fd5b50919050565b604080517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e48101839052905173ffffffffffffffffffffffffffffffffffffffff881691638fcbaf0c9161010480830192600092919082900301818387803b1580156106e057600080fd5b505af11580156104bd573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b600082118015610729575060648211155b61073257600080fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156107bb57600080fd5b505afa1580156107cf573d6000803e3d6000fd5b505050506040513d60208110156107e557600080fd5b505190508481101561085857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e73756666696369656e742053414d42000000000000000000000000000000604482015290519081900360640190fd5b8015610929577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156108d157600080fd5b505af11580156108e5573d6000803e3d6000fd5b5050505060006127106109018584611b0b90919063ffffffff16565b8161090857fe5b049050801561091b5761091b8382611b2f565b61092785828403611b2f565b505b5050505050565b604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b1580156109c557600080fd5b505afa1580156109d9573d6000803e3d6000fd5b505050506040513d60208110156109ef57600080fd5b5051101561092757610927868686868686610640565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a8e57600080fd5b505afa158015610aa2573d6000803e3d6000fd5b505050506040513d6020811015610ab857600080fd5b5051905082811015610b2b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e73756666696369656e742053414d42000000000000000000000000000000604482015290519081900360640190fd5b8015610bc6577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610ba457600080fd5b505af1158015610bb8573d6000803e3d6000fd5b50505050610bc68282611b2f565b505050565b60608167ffffffffffffffff81118015610be457600080fd5b50604051908082528060200260200182016040528015610c1857816020015b6060815260200190600190039081610c035790505b50905060005b82811015610d1e5760008030868685818110610c3657fe5b9050602002810190610c489190612e54565b604051610c56929190612c81565b600060405180830381855af49150503d8060008114610c91576040519150601f19603f3d011682016040523d82523d6000602084013e610c96565b606091505b509150915081610cfc57604481511015610caf57600080fd5b60048101905080806020019051810190610cc99190612925565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106319190612d82565b80848481518110610d0957fe5b60209081029190910101525050600101610c1e565b5092915050565b6000816040015180610d3561197f565b1115610da257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b335b6000610db3856000015161177c565b9050610e0c856060015182610dcc578660200151610dce565b305b60006040518060400160405280610de88b60000151611c7d565b81526020018773ffffffffffffffffffffffffffffffffffffffff16815250611985565b60608601528015610e2c578451309250610e2590611788565b8552610e39565b8460600151935050610e3f565b50610da4565b8360800151831015610e7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063190612dcc565b5050919050565b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051869173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b158015610ef957600080fd5b505afa158015610f0d573d6000803e3d6000fd5b505050506040513d6020811015610f2357600080fd5b50511015610927576109278686868686866114b6565b7f000000000000000000000000000000000000000000000000000000000000000081565b4715610f6d57610f6d3347611b2f565b565b6000816080013580610f7f61197f565b1115610fec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b61109560a084013561100460808601606087016126f6565b611015610100870160e088016126f6565b604051806040016040528088602001602081019061103391906126f6565b61104360608b0160408c01612b1e565b61105060208c018c6126f6565b60405160200161106293929190612c1b565b60405160208183030381529060405281526020013373ffffffffffffffffffffffffffffffffffffffff168152506117c3565b91508260c001358211156110d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063190612d95565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600055919050565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561116857600080fd5b505afa15801561117c573d6000803e3d6000fd5b505050506040513d602081101561119257600080fd5b505190508281101561120557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b801561121657611216848383611c8c565b50505050565b60008211801561122d575060648211155b61123657600080fd5b60008573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561129f57600080fd5b505afa1580156112b3573d6000803e3d6000fd5b505050506040513d60208110156112c957600080fd5b505190508481101561133c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b80156109275760006127106113518386611b0b565b8161135857fe5b049050801561136c5761136c878483611c8c565b6113798786838503611c8c565b50505050505050565b600081604001358061139261197f565b11156113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b611472606084013561141760408601602087016126f6565b604080518082019091526000908061142f8980612e54565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250336020909101526117c3565b50600054915082608001358211156110d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063190612d95565b604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c48101839052905173ffffffffffffffffffffffffffffffffffffffff88169163d505accf9160e480830192600092919082900301818387803b1580156106e057600080fd5b6000808061155c8482611e61565b9250611569846014611f61565b9050611576846017611e61565b91509193909250565b600061159585611590868686612051565b6120ce565b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156115f95750804710155b15611742577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561166657600080fd5b505af115801561167a573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561171057600080fd5b505af1158015611724573d6000803e3d6000fd5b505050506040513d602081101561173a57600080fd5b506112169050565b73ffffffffffffffffffffffffffffffffffffffff83163014156117705761176b848383611c8c565b611216565b611216848484846120fe565b8051604211155b919050565b80516060906117bd9083906017907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9016122db565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff84166117e4573093505b60008060006117f6856000015161154e565b9194509250905073ffffffffffffffffffffffffffffffffffffffff808416908316106000806118278587866124c2565b73ffffffffffffffffffffffffffffffffffffffff1663128acb088b8561184d8f612500565b60000373ffffffffffffffffffffffffffffffffffffffff8e1615611872578d611898565b876118915773fffd8963efd1fc6a506488495d951d5263988d25611898565b6401000276a45b8d6040516020016118a99190612e03565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016118d8959493929190612cb2565b6040805180830381600087803b1580156118f157600080fd5b505af1158015611905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119299190612887565b9150915060008361193e578183600003611944565b82826000035b909850905073ffffffffffffffffffffffffffffffffffffffff8a16611970578b811461197057600080fd5b50505050505050949350505050565b60015490565b600073ffffffffffffffffffffffffffffffffffffffff84166119a6573093505b60008060006119b8856000015161154e565b9194509250905073ffffffffffffffffffffffffffffffffffffffff808316908416106000806119e98686866124c2565b73ffffffffffffffffffffffffffffffffffffffff1663128acb088b85611a0f8f612500565b73ffffffffffffffffffffffffffffffffffffffff8e1615611a31578d611a57565b87611a505773fffd8963efd1fc6a506488495d951d5263988d25611a57565b6401000276a45b8d604051602001611a689190612e03565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401611a97959493929190612cb2565b6040805180830381600087803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae89190612887565b9150915082611af75781611af9565b805b6000039b9a5050505050505050505050565b6000821580611b2657505081810281838281611b2357fe5b04145b6117bd57600080fd5b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310611ba657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611b69565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611c08576040519150601f19603f3d011682016040523d82523d6000602084013e611c0d565b606091505b5050905080610bc657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60606117bd826000602b6122db565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b60208310611d6157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611d24565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611dc3576040519150601f19603f3d011682016040523d82523d6000602084013e611dc8565b606091505b5091509150818015611df6575080511580611df65750808060200190516020811015611df357600080fd5b50515b61092957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600081826014011015611ed557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015611f4857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015611fd557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b816003018351101561204857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b612059612668565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115612091579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b60006120da8383612532565b90503373ffffffffffffffffffffffffffffffffffffffff8216146117bd57600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000178152925182516000948594938a169392918291908083835b602083106121db57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161219e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461223d576040519150601f19603f3d011682016040523d82523d6000602084013e612242565b606091505b5091509150818015612270575080511580612270575080806020019051602081101561226d57600080fd5b50515b61092757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354460000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60608182601f01101561234f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b8282840110156123c057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b8183018451101561243257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b60608215801561245157604051915060008252602082016040526124b9565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561248a578051835260209283019201612472565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b60006124f87f00000000000000000000000000000000000000000000000000000000000000006124f3868686612051565b612532565b949350505050565b60007f8000000000000000000000000000000000000000000000000000000000000000821061252e57600080fd5b5090565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff161061257457600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0460d5808301919091528251808303909101815260f5909101909152805191012090565b604080516060810182526000808252602082018190529181019190915290565b803561178381612f4e565b600082601f8301126126a3578081fd5b81356126b66126b182612ee2565b612ebe565b8181528460208386010111156126ca578283fd5b816020850160208301379081016020019190915292915050565b6000610100828403121561063a578081fd5b600060208284031215612707578081fd5b813561271281612f4e565b9392505050565b60008060006060848603121561272d578182fd5b833561273881612f4e565b925060208401359150604084013561274f81612f4e565b809150509250925092565b600080600080600060a08688031215612771578081fd5b853561277c81612f4e565b945060208601359350604086013561279381612f4e565b92506060860135915060808601356127aa81612f4e565b809150509295509295909350565b60008060008060008060c087890312156127d0578081fd5b86356127db81612f4e565b95506020870135945060408701359350606087013560ff811681146127fe578182fd5b9598949750929560808101359460a0909101359350915050565b6000806020838503121561282a578182fd5b823567ffffffffffffffff80821115612841578384fd5b818501915085601f830112612854578384fd5b813581811115612862578485fd5b8660208083028501011115612875578485fd5b60209290920196919550909350505050565b60008060408385031215612899578182fd5b505080516020909101519092909150565b600080600080606085870312156128bf578182fd5b8435935060208501359250604085013567ffffffffffffffff808211156128e4578384fd5b818701915087601f8301126128f7578384fd5b813581811115612905578485fd5b886020828501011115612916578485fd5b95989497505060200194505050565b600060208284031215612936578081fd5b815167ffffffffffffffff81111561294c578182fd5b8201601f8101841361295c578182fd5b805161296a6126b182612ee2565b81815285602083850101111561297e578384fd5b611595826020830160208601612f22565b6000602082840312156129a0578081fd5b813567ffffffffffffffff808211156129b7578283fd5b9083019060a082860312156129ca578283fd5b60405160a0810181811083821117156129df57fe5b6040528235828111156129f0578485fd5b6129fc87828601612693565b825250612a0b60208401612688565b602082015260408301356040820152606083013560608201526080830135608082015280935050505092915050565b60006101008284031215612a4c578081fd5b61271283836126e4565b600060208284031215612a67578081fd5b813567ffffffffffffffff811115612a7d578182fd5b820160a08185031215612712578182fd5b600060208284031215612a9f578081fd5b813567ffffffffffffffff80821115612ab6578283fd5b9083019060408286031215612ac9578283fd5b604051604081018181108382111715612ade57fe5b604052823582811115612aef578485fd5b612afb87828601612693565b82525060208301359250612b0e83612f4e565b6020810192909252509392505050565b600060208284031215612b2f578081fd5b813562ffffff81168114612712578182fd5b600060208284031215612b52578081fd5b5035919050565b60008060408385031215612b6b578182fd5b823591506020830135612b7d81612f4e565b809150509250929050565b60008060008060808587031215612b9d578182fd5b843593506020850135612baf81612f4e565b9250604085013591506060850135612bc681612f4e565b939692955090935050565b60008151808452612be9816020860160208601612f22565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6000828483379101908152919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a06080830152612cf960a0830184612bd1565b979650505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015612d75577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452612d63858351612bd1565b94509285019290850190600101612d29565b5092979650505050505050565b6000602082526127126020830184612bd1565b60208082526012908201527f546f6f206d756368207265717565737465640000000000000000000000000000604082015260600190565b60208082526013908201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604082015260600190565b600060208252825160406020840152612e1f6060840182612bd1565b905073ffffffffffffffffffffffffffffffffffffffff60208501511660408401528091505092915050565b90815260200190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e88578283fd5b83018035915067ffffffffffffffff821115612ea2578283fd5b602001915036819003821315612eb757600080fd5b9250929050565b60405181810167ffffffffffffffff81118282101715612eda57fe5b604052919050565b600067ffffffffffffffff821115612ef657fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015612f3d578181015183820152602001612f25565b838111156112165750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114612f7057600080fd5b5056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC04B8D59 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xDB3E2198 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xE0E189A0 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE0E189A0 EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0xF28C0498 EQ PUSH2 0x350 JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x363 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0xDB3E2198 EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0xDF2AB5BB EQ PUSH2 0x32A JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0xC04B8D59 EQ PUSH2 0x2D4 JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0xC53AF304 EQ PUSH2 0x30F JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x90793EA8 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0xA4A78F0C GT PUSH2 0xE1 JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0xA98CE37F EQ PUSH2 0x2A1 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x2B4 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x90793EA8 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x97E87D9D EQ PUSH2 0x27B JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x11C17848 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x3BEB26C4 EQ PUSH2 0x1FD JUMPI DUP1 PUSH4 0x414BF389 EQ PUSH2 0x21D JUMPI DUP1 PUSH4 0x4659A494 EQ PUSH2 0x246 JUMPI PUSH2 0x1D8 JUMP JUMPDEST CALLDATASIZE PUSH2 0x1D8 JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x1D6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F742053414D42000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D6 PUSH2 0x1F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x28AA JUMP JUMPDEST PUSH2 0x376 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D6 PUSH2 0x218 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B41 JUMP JUMPDEST PUSH2 0x4C9 JUMP JUMPDEST PUSH2 0x230 PUSH2 0x22B CALLDATASIZE PUSH1 0x4 PUSH2 0x2A3A JUMP JUMPDEST PUSH2 0x4CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23D SWAP2 SWAP1 PUSH2 0x2E4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D6 PUSH2 0x254 CALLDATASIZE PUSH1 0x4 PUSH2 0x27B8 JUMP JUMPDEST PUSH2 0x640 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26E PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23D SWAP2 SWAP1 PUSH2 0x2C91 JUMP JUMPDEST PUSH2 0x1D6 PUSH2 0x289 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B88 JUMP JUMPDEST PUSH2 0x718 JUMP JUMPDEST PUSH2 0x1D6 PUSH2 0x29C CALLDATASIZE PUSH1 0x4 PUSH2 0x27B8 JUMP JUMPDEST PUSH2 0x930 JUMP JUMPDEST PUSH2 0x1D6 PUSH2 0x2AF CALLDATASIZE PUSH1 0x4 PUSH2 0x2B59 JUMP JUMPDEST PUSH2 0xA05 JUMP JUMPDEST PUSH2 0x2C7 PUSH2 0x2C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2818 JUMP JUMPDEST PUSH2 0xBCB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23D SWAP2 SWAP1 PUSH2 0x2D04 JUMP JUMPDEST PUSH2 0x230 PUSH2 0x2E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x298F JUMP JUMPDEST PUSH2 0xD25 JUMP JUMPDEST PUSH2 0x1D6 PUSH2 0x2F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x27B8 JUMP JUMPDEST PUSH2 0xE84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x306 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26E PUSH2 0xF39 JUMP JUMPDEST PUSH2 0x1D6 PUSH2 0xF5D JUMP JUMPDEST PUSH2 0x230 PUSH2 0x325 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A3A JUMP JUMPDEST PUSH2 0xF6F JUMP JUMPDEST PUSH2 0x1D6 PUSH2 0x338 CALLDATASIZE PUSH1 0x4 PUSH2 0x2719 JUMP JUMPDEST PUSH2 0x10FF JUMP JUMPDEST PUSH2 0x1D6 PUSH2 0x34B CALLDATASIZE PUSH1 0x4 PUSH2 0x275A JUMP JUMPDEST PUSH2 0x121C JUMP JUMPDEST PUSH2 0x230 PUSH2 0x35E CALLDATASIZE PUSH1 0x4 PUSH2 0x2A56 JUMP JUMPDEST PUSH2 0x1382 JUMP JUMPDEST PUSH2 0x1D6 PUSH2 0x371 CALLDATASIZE PUSH1 0x4 PUSH2 0x27B8 JUMP JUMPDEST PUSH2 0x14B6 JUMP JUMPDEST PUSH1 0x0 DUP5 SGT DUP1 PUSH2 0x385 JUMPI POP PUSH1 0x0 DUP4 SGT JUMPDEST PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x39C DUP3 DUP5 ADD DUP5 PUSH2 0x2A8E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3B0 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x154E JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x3E2 PUSH32 0x0 DUP5 DUP5 DUP5 PUSH2 0x157F JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP11 SGT PUSH2 0x423 JUMPI DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT DUP10 PUSH2 0x454 JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT DUP11 JUMPDEST SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x473 JUMPI PUSH2 0x46E DUP6 DUP8 PUSH1 0x20 ADD MLOAD CALLER DUP5 PUSH2 0x159E JUMP JUMPDEST PUSH2 0x4BD JUMP JUMPDEST DUP6 MLOAD PUSH2 0x47E SWAP1 PUSH2 0x177C JUMP JUMPDEST ISZERO PUSH2 0x4A3 JUMPI DUP6 MLOAD PUSH2 0x48E SWAP1 PUSH2 0x1788 JUMP JUMPDEST DUP7 MSTORE PUSH2 0x49D DUP2 CALLER PUSH1 0x0 DUP10 PUSH2 0x17C3 JUMP JUMPDEST POP PUSH2 0x4BD JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP DUP4 SWAP5 POP PUSH2 0x4BD DUP6 DUP8 PUSH1 0x20 ADD MLOAD CALLER DUP5 PUSH2 0x159E JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x80 ADD CALLDATALOAD DUP1 PUSH2 0x4DE PUSH2 0x197F JUMP JUMPDEST GT ISZERO PUSH2 0x54B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x5F1 PUSH1 0xA0 DUP5 ADD CALLDATALOAD PUSH2 0x563 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x26F6 JUMP JUMPDEST PUSH2 0x574 PUSH2 0x100 DUP8 ADD PUSH1 0xE0 DUP9 ADD PUSH2 0x26F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH2 0x58C PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x26F6 JUMP JUMPDEST PUSH2 0x59C PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x2B1E JUMP JUMPDEST PUSH2 0x5AC PUSH1 0x40 DUP13 ADD PUSH1 0x20 DUP14 ADD PUSH2 0x26F6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x5BE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C1B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x1985 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0xC0 ADD CALLDATALOAD DUP3 LT ISZERO PUSH2 0x63A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x631 SWAP1 PUSH2 0x2DCC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x8FCBAF0C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xFF DUP6 AND PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xC4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xE4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0x8FCBAF0C SWAP2 PUSH2 0x104 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4BD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x729 JUMPI POP PUSH1 0x64 DUP3 GT ISZERO JUMPDEST PUSH2 0x732 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7CF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP5 DUP2 LT ISZERO PUSH2 0x858 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742053414D42000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x929 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x2710 PUSH2 0x901 DUP6 DUP5 PUSH2 0x1B0B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x908 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x91B JUMPI PUSH2 0x91B DUP4 DUP3 PUSH2 0x1B2F JUMP JUMPDEST PUSH2 0x927 DUP6 DUP3 DUP5 SUB PUSH2 0x1B2F JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x927 JUMPI PUSH2 0x927 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x640 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0xB2B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E742053414D42000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0xBC6 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xBC6 DUP3 DUP3 PUSH2 0x1B2F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xBE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC18 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xC03 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xD1E JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0xC36 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xC48 SWAP2 SWAP1 PUSH2 0x2E54 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC56 SWAP3 SWAP2 SWAP1 PUSH2 0x2C81 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xC91 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xC96 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xCFC JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0xCAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xCC9 SWAP2 SWAP1 PUSH2 0x2925 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x631 SWAP2 SWAP1 PUSH2 0x2D82 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xD09 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0xC1E JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD DUP1 PUSH2 0xD35 PUSH2 0x197F JUMP JUMPDEST GT ISZERO PUSH2 0xDA2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER JUMPDEST PUSH1 0x0 PUSH2 0xDB3 DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x177C JUMP JUMPDEST SWAP1 POP PUSH2 0xE0C DUP6 PUSH1 0x60 ADD MLOAD DUP3 PUSH2 0xDCC JUMPI DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0xDCE JUMP JUMPDEST ADDRESS JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xDE8 DUP12 PUSH1 0x0 ADD MLOAD PUSH2 0x1C7D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x1985 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE DUP1 ISZERO PUSH2 0xE2C JUMPI DUP5 MLOAD ADDRESS SWAP3 POP PUSH2 0xE25 SWAP1 PUSH2 0x1788 JUMP JUMPDEST DUP6 MSTORE PUSH2 0xE39 JUMP JUMPDEST DUP5 PUSH1 0x60 ADD MLOAD SWAP4 POP POP PUSH2 0xE3F JUMP JUMPDEST POP PUSH2 0xDA4 JUMP JUMPDEST DUP4 PUSH1 0x80 ADD MLOAD DUP4 LT ISZERO PUSH2 0xE7D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x631 SWAP1 PUSH2 0x2DCC JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF0D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x927 JUMPI PUSH2 0x927 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x14B6 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST SELFBALANCE ISZERO PUSH2 0xF6D JUMPI PUSH2 0xF6D CALLER SELFBALANCE PUSH2 0x1B2F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x80 ADD CALLDATALOAD DUP1 PUSH2 0xF7F PUSH2 0x197F JUMP JUMPDEST GT ISZERO PUSH2 0xFEC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1095 PUSH1 0xA0 DUP5 ADD CALLDATALOAD PUSH2 0x1004 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0x26F6 JUMP JUMPDEST PUSH2 0x1015 PUSH2 0x100 DUP8 ADD PUSH1 0xE0 DUP9 ADD PUSH2 0x26F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1033 SWAP2 SWAP1 PUSH2 0x26F6 JUMP JUMPDEST PUSH2 0x1043 PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x2B1E JUMP JUMPDEST PUSH2 0x1050 PUSH1 0x20 DUP13 ADD DUP13 PUSH2 0x26F6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1062 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C1B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x17C3 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0xC0 ADD CALLDATALOAD DUP3 GT ISZERO PUSH2 0x10D5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x631 SWAP1 PUSH2 0x2D95 JUMP JUMPDEST POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x0 SSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x117C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x1205 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E7420746F6B656E0000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x1216 JUMPI PUSH2 0x1216 DUP5 DUP4 DUP4 PUSH2 0x1C8C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x122D JUMPI POP PUSH1 0x64 DUP3 GT ISZERO JUMPDEST PUSH2 0x1236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x129F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP5 DUP2 LT ISZERO PUSH2 0x133C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E7420746F6B656E0000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x927 JUMPI PUSH1 0x0 PUSH2 0x2710 PUSH2 0x1351 DUP4 DUP7 PUSH2 0x1B0B JUMP JUMPDEST DUP2 PUSH2 0x1358 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x136C JUMPI PUSH2 0x136C DUP8 DUP5 DUP4 PUSH2 0x1C8C JUMP JUMPDEST PUSH2 0x1379 DUP8 DUP7 DUP4 DUP6 SUB PUSH2 0x1C8C JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD CALLDATALOAD DUP1 PUSH2 0x1392 PUSH2 0x197F JUMP JUMPDEST GT ISZERO PUSH2 0x13FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E73616374696F6E20746F6F206F6C6400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1472 PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH2 0x1417 PUSH1 0x40 DUP7 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x26F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 DUP1 PUSH2 0x142F DUP10 DUP1 PUSH2 0x2E54 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP SWAP1 DUP3 MSTORE POP CALLER PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE PUSH2 0x17C3 JUMP JUMPDEST POP PUSH1 0x0 SLOAD SWAP2 POP DUP3 PUSH1 0x80 ADD CALLDATALOAD DUP3 GT ISZERO PUSH2 0x10D5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x631 SWAP1 PUSH2 0x2D95 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xFF DUP6 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x155C DUP5 DUP3 PUSH2 0x1E61 JUMP JUMPDEST SWAP3 POP PUSH2 0x1569 DUP5 PUSH1 0x14 PUSH2 0x1F61 JUMP JUMPDEST SWAP1 POP PUSH2 0x1576 DUP5 PUSH1 0x17 PUSH2 0x1E61 JUMP JUMPDEST SWAP2 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1595 DUP6 PUSH2 0x1590 DUP7 DUP7 DUP7 PUSH2 0x2051 JUMP JUMPDEST PUSH2 0x20CE JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x15F9 JUMPI POP DUP1 SELFBALANCE LT ISZERO JUMPDEST ISZERO PUSH2 0x1742 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x167A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1710 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1724 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x173A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1216 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ADDRESS EQ ISZERO PUSH2 0x1770 JUMPI PUSH2 0x176B DUP5 DUP4 DUP4 PUSH2 0x1C8C JUMP JUMPDEST PUSH2 0x1216 JUMP JUMPDEST PUSH2 0x1216 DUP5 DUP5 DUP5 DUP5 PUSH2 0x20FE JUMP JUMPDEST DUP1 MLOAD PUSH1 0x42 GT ISZERO JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x17BD SWAP1 DUP4 SWAP1 PUSH1 0x17 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 ADD PUSH2 0x22DB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x17E4 JUMPI ADDRESS SWAP4 POP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x17F6 DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x154E JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND SWAP1 DUP4 AND LT PUSH1 0x0 DUP1 PUSH2 0x1827 DUP6 DUP8 DUP7 PUSH2 0x24C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 DUP12 DUP6 PUSH2 0x184D DUP16 PUSH2 0x2500 JUMP JUMPDEST PUSH1 0x0 SUB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND ISZERO PUSH2 0x1872 JUMPI DUP14 PUSH2 0x1898 JUMP JUMPDEST DUP8 PUSH2 0x1891 JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x1898 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x18A9 SWAP2 SWAP1 PUSH2 0x2E03 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18D8 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2CB2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1905 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1929 SWAP2 SWAP1 PUSH2 0x2887 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP4 PUSH2 0x193E JUMPI DUP2 DUP4 PUSH1 0x0 SUB PUSH2 0x1944 JUMP JUMPDEST DUP3 DUP3 PUSH1 0x0 SUB JUMPDEST SWAP1 SWAP9 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH2 0x1970 JUMPI DUP12 DUP2 EQ PUSH2 0x1970 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x19A6 JUMPI ADDRESS SWAP4 POP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x19B8 DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0x154E JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP1 DUP5 AND LT PUSH1 0x0 DUP1 PUSH2 0x19E9 DUP7 DUP7 DUP7 PUSH2 0x24C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 DUP12 DUP6 PUSH2 0x1A0F DUP16 PUSH2 0x2500 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND ISZERO PUSH2 0x1A31 JUMPI DUP14 PUSH2 0x1A57 JUMP JUMPDEST DUP8 PUSH2 0x1A50 JUMPI PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D25 PUSH2 0x1A57 JUMP JUMPDEST PUSH5 0x1000276A4 JUMPDEST DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1A68 SWAP2 SWAP1 PUSH2 0x2E03 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A97 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2CB2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AC4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1AE8 SWAP2 SWAP1 PUSH2 0x2887 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 PUSH2 0x1AF7 JUMPI DUP2 PUSH2 0x1AF9 JUMP JUMPDEST DUP1 JUMPDEST PUSH1 0x0 SUB SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x1B26 JUMPI POP POP DUP2 DUP2 MUL DUP2 DUP4 DUP3 DUP2 PUSH2 0x1B23 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x17BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1BA6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1B69 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1C08 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1C0D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xBC6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354450000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH2 0x17BD DUP3 PUSH1 0x0 PUSH1 0x2B PUSH2 0x22DB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1D61 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1D24 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1DC3 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1DC8 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1DF6 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1DF6 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x929 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x14 ADD LT ISZERO PUSH2 0x1ED5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F416464726573735F6F766572666C6F770000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x14 ADD DUP4 MLOAD LT ISZERO PUSH2 0x1F48 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F416464726573735F6F75744F66426F756E64730000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH13 0x1000000000000000000000000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x3 ADD LT ISZERO PUSH2 0x1FD5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F55696E7432345F6F766572666C6F77000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 ADD DUP4 MLOAD LT ISZERO PUSH2 0x2048 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F55696E7432345F6F75744F66426F756E6473000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x3 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2059 PUSH2 0x2668 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x2091 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH3 0xFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20DA DUP4 DUP4 PUSH2 0x2532 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x17BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x21DB JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x219E JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x223D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2242 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2270 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2270 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x226D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x927 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354460000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP2 DUP3 PUSH1 0x1F ADD LT ISZERO PUSH2 0x234F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F766572666C6F77000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 DUP5 ADD LT ISZERO PUSH2 0x23C0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F766572666C6F77000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 ADD DUP5 MLOAD LT ISZERO PUSH2 0x2432 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F75744F66426F756E6473000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO DUP1 ISZERO PUSH2 0x2451 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x0 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x24B9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F DUP5 AND DUP1 ISZERO PUSH1 0x20 MUL DUP2 DUP5 ADD ADD DUP6 DUP2 ADD DUP8 DUP4 ISZERO PUSH1 0x20 MUL DUP5 DUP12 ADD ADD ADD JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x248A JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x2472 JUMP JUMPDEST POP POP DUP6 DUP5 MSTORE PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x40 MSTORE POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24F8 PUSH32 0x0 PUSH2 0x24F3 DUP7 DUP7 DUP7 PUSH2 0x2051 JUMP JUMPDEST PUSH2 0x2532 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 LT PUSH2 0x252E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x2574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 DUP6 ADD MSTORE SWAP4 SWAP1 SWAP2 AND DUP4 DUP6 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x80 DUP5 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 PUSH1 0xD5 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xF5 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1783 DUP2 PUSH2 0x2F4E JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x26A3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x26B6 PUSH2 0x26B1 DUP3 PUSH2 0x2EE2 JUMP JUMPDEST PUSH2 0x2EBE JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x26CA JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x63A JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2707 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2712 DUP2 PUSH2 0x2F4E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x272D JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2738 DUP2 PUSH2 0x2F4E JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x274F DUP2 PUSH2 0x2F4E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2771 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x277C DUP2 PUSH2 0x2F4E JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x2793 DUP2 PUSH2 0x2F4E JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x27AA DUP2 PUSH2 0x2F4E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x27D0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x27DB DUP2 PUSH2 0x2F4E JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x27FE JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP5 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x282A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2841 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2854 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2862 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x2875 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2899 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x28BF JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x28E4 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28F7 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2905 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2916 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2936 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x294C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x295C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x296A PUSH2 0x26B1 DUP3 PUSH2 0x2EE2 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x297E JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1595 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2F22 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x29A0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x29B7 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0xA0 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x29CA JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x29DF JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x29F0 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x29FC DUP8 DUP3 DUP7 ADD PUSH2 0x2693 JUMP JUMPDEST DUP3 MSTORE POP PUSH2 0x2A0B PUSH1 0x20 DUP5 ADD PUSH2 0x2688 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A4C JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2712 DUP4 DUP4 PUSH2 0x26E4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A67 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A7D JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0xA0 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x2712 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A9F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2AB6 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x40 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x2AC9 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x2ADE JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x2AEF JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2AFB DUP8 DUP3 DUP7 ADD PUSH2 0x2693 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP3 POP PUSH2 0x2B0E DUP4 PUSH2 0x2F4E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B2F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2712 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B52 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B6B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2B7D DUP2 PUSH2 0x2F4E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2B9D JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x2BAF DUP2 PUSH2 0x2F4E JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x2BC6 DUP2 PUSH2 0x2F4E JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2BE9 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2F22 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SWAP4 DUP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0xE8 SWAP4 SWAP1 SWAP4 SHL PUSH32 0xFFFFFF0000000000000000000000000000000000000000000000000000000000 AND PUSH1 0x14 DUP3 ADD MSTORE SWAP3 SHL AND PUSH1 0x17 DUP3 ADD MSTORE PUSH1 0x2B ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND DUP4 MSTORE DUP7 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE DUP6 PUSH1 0x40 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x60 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x2CF9 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x2BD1 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2D75 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x2D63 DUP6 DUP4 MLOAD PUSH2 0x2BD1 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2D29 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x2712 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2BD1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH32 0x546F6F206D756368207265717565737465640000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x546F6F206C6974746C6520726563656976656400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD PUSH1 0x40 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2E1F PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0x2BD1 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2E88 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2EA2 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2EB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2EDA JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2EF6 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2F3D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F25 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1216 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2F70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"113:322:98:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;438:10:51;:18;452:4;438:18;;430:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;113:322:98;;;;;2115:1242:45;;;;;;;;;;-1:-1:-1;2115:1242:45;;;;;:::i;:::-;;:::i;363:70:98:-;;;;;;;;;;-1:-1:-1;363:70:98;;;;;:::i;:::-;;:::i;4339:517:45:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1325:289:55;;;;;;:::i;:::-;;:::i;420:38:50:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;610:686:52:-;;;;;;:::i;:::-;;:::i;1652:348:55:-;;;;;;:::i;:::-;;:::i;521:386:51:-;;;;;;:::i;:::-;;:::i;308:653:49:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4894:1245:45:-;;;;;;:::i;:::-;;:::i;973:314:55:-;;;;;;:::i;:::-;;:::i;328:41:50:-;;;;;;;;;;;;;:::i;1362:160:51:-;;;:::i;7522:702:45:-;;;;;;:::i;:::-;;:::i;952:365:51:-;;;;;;:::i;:::-;;:::i;1348:678:52:-;;;;;;:::i;:::-;;:::i;8262:726:45:-;;;;;;:::i;:::-;;:::i;662:273:55:-;;;;;;:::i;:::-;;:::i;2115:1242:45:-;2259:1;2244:12;:16;:36;;;;2279:1;2264:12;:16;2244:36;2236:45;;;;;;2354:28;2385:37;;;;2396:5;2385:37;:::i;:::-;2354:68;;2433:15;2450:16;2468:10;2482:27;:4;:9;;;:25;:27::i;:::-;2432:77;;;;;;2519:66;2553:7;2562;2571:8;2581:3;2519:33;:66::i;:::-;;2597:17;2616:19;2654:1;2639:12;:16;:132;;2740:7;2729:18;;:8;:18;;;2757:12;2639:132;;;2681:8;2671:18;;:7;:18;;;2699:12;2639:132;2596:175;;;;2785:12;2781:570;;;2813:49;2817:7;2826:4;:10;;;2838;2850:11;2813:3;:49::i;:::-;2781:570;;;2949:9;;:28;;:26;:28::i;:::-;2945:396;;;3009:9;;:21;;:19;:21::i;:::-;2997:33;;3048:53;3068:11;3081:10;2997:9;:4;3048:19;:53::i;:::-;;2945:396;;;3157:11;3140:14;:28;;;;3196:8;3186:18;;3277:49;3281:7;3290:4;:10;;;3302;3314:11;3277:3;:49::i;:::-;2115:1242;;;;;;;;;;:::o;363:70:98:-;414:4;:12;363:70::o;4339:517:45:-;4485:17;4459:6;:15;;;244:8:53;223:17;:15;:17::i;:::-;:29;;215:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4526:245:45::1;4558:15;::::0;::::1;;4587:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;4617:24;::::0;;;::::1;::::0;::::1;;:::i;:::-;4655:106;::::0;;;;::::1;::::0;;;;4696:14:::1;;::::0;::::1;:6:::0;:14:::1;:::i;:::-;4712:10;::::0;;;::::1;::::0;::::1;;:::i;:::-;4724:15;::::0;;;::::1;::::0;::::1;;:::i;:::-;4679:61;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4655:106;;;;4749:10;4655:106;;;;::::0;4526:18:::1;:245::i;:::-;4514:257;;4802:6;:23;;;4789:9;:36;;4781:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4339:517:::0;;;;:::o;1325:289:55:-;1517:90;;;;;;1551:10;1517:90;;;;1571:4;1517:90;;;;;;;;;;;;;;;;1593:4;1517:90;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;;;:90;;;;;-1:-1:-1;;1517:90:55;;;;;;;-1:-1:-1;1517:33:55;:90;;;;;;;;;;;;;;;;;;;;;;;;;;420:38:50;;;:::o;610:686:52:-;808:1;798:7;:11;:29;;;;;824:3;813:7;:14;;798:29;790:38;;;;;;839:19;867:4;861:21;;;891:4;861:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;861:36:52;;-1:-1:-1;915:28:52;;;;907:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;980:15;;976:314;;1017:4;1011:20;;;1032:11;1011:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1058:17;1105:6;1078:24;1094:7;1078:11;:15;;:24;;;;:::i;:::-;:33;;;;;;;-1:-1:-1;1129:13:52;;1125:74;;1144:55;1175:12;1189:9;1144:30;:55::i;:::-;1213:66;1244:9;1269;1255:11;:23;1213:30;:66::i;:::-;976:314;;610:686;;;;;:::o;1652:348:55:-;1861:50;;;;;;1885:10;1861:50;;;;1905:4;1861:50;;;;;;1914:17;;1861:23;;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1861:50:55;:70;1857:136;;;1945:48;1963:5;1970;1977:6;1985:1;1988;1991;1945:17;:48::i;521:386:51:-;617:19;645:4;639:21;;;669:4;639:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;639:36:51;;-1:-1:-1;693:28:51;;;;685:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;758:15;;754:147;;795:4;789:20;;;810:11;789:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;836:54;867:9;878:11;836:30;:54::i;:::-;521:386;;;:::o;308:653:49:-;383:22;439:4;427:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;417:34;;466:9;461:494;481:15;;;461:494;;;518:12;;563:4;582;;587:1;582:7;;;;;;;;;;;;;;;;;;:::i;:::-;555:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;517:73;;;;610:7;605:306;;737:2;721:6;:13;:18;717:32;;;741:8;;;717:32;820:4;812:6;808:17;798:27;;878:6;867:28;;;;;;;;;;;;:::i;:::-;860:36;;;;;;;;;;;:::i;605:306::-;938:6;925:7;933:1;925:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;498:3:49;;461:494;;;;308:653;;;;:::o;4894:1245:45:-;5026:17;5000:6;:15;;;244:8:53;223:17;:15;:17::i;:::-;:29;;215:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5071:10:45::1;5129:925;5156:21;5180:30;:6;:11;;;:28;:30::i;:::-;5156:54;;5322:394;5358:6;:15;;;5391:16;:51;;5426:6;:16;;;5391:51;;;5418:4;5391:51;5511:1;5530:172;;;;;;;;5575:26;:6;:11;;;:24;:26::i;:::-;5530:172;;;;5678:5;5530:172;;;;::::0;5322:18:::1;:394::i;:::-;5304:15;::::0;::::1;:412:::0;5786:258;::::1;;;5917:11:::0;;5842:4:::1;::::0;-1:-1:-1;5917:23:45::1;::::0;:21:::1;:23::i;:::-;5903:37:::0;;5786:258:::1;;;5991:6;:15;;;5979:27;;6024:5;;;5786:258;5129:925;;;;6085:6;:23;;;6072:9;:36;;6064:68;;;;;;;;;;;;:::i;:::-;286:1:53;4894:1245:45::0;;;;:::o;973:314:55:-;1177:50;;;;;;1201:10;1177:50;;;;1221:4;1177:50;;;;;;1230:5;;1177:23;;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1177:50:55;:58;1173:107;;;1237:43;1248:5;1255;1262:8;1272:1;1275;1278;1237:10;:43::i;328:41:50:-;;;:::o;1362:160:51:-;1423:21;:25;1419:96;;1450:65;1481:10;1493:21;1450:30;:65::i;:::-;1362:160::o;7522:702:45:-;7670:16;7644:6;:15;;;244:8:53;223:17;:15;:17::i;:::-;:29;;215:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7765:247:45::1;7798:16;::::0;::::1;;7828;::::0;;;::::1;::::0;::::1;;:::i;:::-;7858:24;::::0;;;::::1;::::0;::::1;;:::i;:::-;7896:106;;;;;;;;7937:6;:15;;;;;;;;;;:::i;:::-;7954:10;::::0;;;::::1;::::0;::::1;;:::i;:::-;7966:14;;::::0;::::1;:6:::0;:14:::1;:::i;:::-;7920:61;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7896:106;;;;7990:10;7896:106;;;;::::0;7765:19:::1;:247::i;:::-;7754:258;;8043:6;:22;;;8031:8;:34;;8023:65;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;1379:17:45::1;8176:14;:41:::0;7522:702;;-1:-1:-1;7522:702:45:o;952:365:51:-;1063:20;1093:5;1086:23;;;1118:4;1086:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1086:38:51;;-1:-1:-1;1142:29:51;;;;1134:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1209:16;;1205:106;;1241:59;1269:5;1276:9;1287:12;1241:27;:59::i;:::-;952:365;;;;:::o;1348:678:52:-;1569:1;1559:7;:11;:29;;;;;1585:3;1574:7;:14;;1559:29;1551:38;;;;;;1600:20;1630:5;1623:23;;;1655:4;1623:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1623:38:52;;-1:-1:-1;1679:29:52;;;;1671:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1746:16;;1742:278;;1778:17;1826:6;1798:25;:12;1815:7;1798:16;:25::i;:::-;:34;;;;;;;-1:-1:-1;1850:13:52;;1846:78;;1865:59;1893:5;1900:12;1914:9;1865:27;:59::i;:::-;1938:71;1966:5;1973:9;1999;1984:12;:24;1938:27;:71::i;:::-;1742:278;1348:678;;;;;;:::o;8262:726:45:-;8398:16;8372:6;:15;;;244:8:53;223:17;:15;:17::i;:::-;:29;;215:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8645:174:45::1;8678:16;::::0;::::1;;8708;::::0;;;::::1;::::0;::::1;;:::i;:::-;8753:56;::::0;;;;::::1;::::0;;;8738:1:::1;::::0;8753:56;8777:11:::1;:6:::0;;:11:::1;:::i;:::-;8753:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;8753:56:45;;;-1:-1:-1;8797:10:45::1;8753:56;::::0;;::::1;::::0;8645:19:::1;:174::i;:::-;;8841:14;;8830:25;;8885:6;:22;;;8873:8;:34;;8865:65;;;;;;;;;;;;:::i;662:273:55:-:0;849:79;;;;;;876:10;849:79;;;;896:4;849:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;;;:79;;;;;-1:-1:-1;;849:79:55;;;;;;;-1:-1:-1;849:26:55;:79;;;;;;;;;;1779:240:87;1846:14;;;1909:17;:4;1846:14;1909;:17::i;:::-;1900:26;-1:-1:-1;1942:24:87;:4;304:2;1942:13;:24::i;:::-;1936:30;-1:-1:-1;1985:27:87;:4;507:20;1985:14;:27::i;:::-;1976:36;;1779:240;;;;;:::o;742:257:81:-;888:17;924:68;939:7;948:43;971:6;979;987:3;948:22;:43::i;:::-;924:14;:68::i;:::-;917:75;742:257;-1:-1:-1;;;;;742:257:81:o;1713:655:51:-;1822:4;1813:13;;:5;:13;;;:47;;;;;1855:5;1830:21;:30;;1813:47;1809:553;;;1911:4;1905:19;;;1932:5;1905:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1995:4;1989:20;;;2010:9;2021:5;1989:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1809:553:51;;-1:-1:-1;1809:553:51;;2048:22;;;2065:4;2048:22;2044:318;;;2177:52;2205:5;2212:9;2223:5;2177:27;:52::i;:::-;2044:318;;;2288:63;2320:5;2327;2334:9;2345:5;2288:31;:63::i;992:138:87:-;1083:11;;777:24;-1:-1:-1;1083:40:87;992:138;;;;:::o;2561:149::-;2677:11;;2622:12;;2653:50;;2677:4;;507:20;;2677:25;;2653:10;:50::i;:::-;2646:57;2561:149;-1:-1:-1;;2561:149:87:o;6194:1290:45:-;6373:16;6468:23;;;6464:54;;6513:4;6493:25;;6464:54;6530:16;6548:15;6565:10;6579:27;:4;:9;;;:25;:27::i;:::-;6529:77;;-1:-1:-1;6529:77:45;-1:-1:-1;6529:77:45;-1:-1:-1;6635:18:45;;;;;;;;6617:15;;6709:31;6529:77;;;6709:7;:31::i;:::-;:36;;;6759:9;6782:10;6807:20;:9;:18;:20::i;:::-;6806:21;;6841:22;;;;:149;;6973:17;6841:149;;;6883:10;:70;;6926:27;6883:70;;;6896:27;6883:70;7015:4;7004:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;6709:321;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6664:366;;;;7041:25;7108:10;:134;;7204:12;7228;7227:13;;7108:134;;;7142:12;7166;7165:13;;7108:134;7076:166;;-1:-1:-1;7076:166:45;-1:-1:-1;7414:22:45;;;7410:67;;7467:9;7446:17;:30;7438:39;;;;;;6194:1290;;;;;;;;;;;;;:::o;261:96:98:-;346:4;;261:96;:::o;3411:890:45:-;3588:17;3684:23;;;3680:54;;3729:4;3709:25;;3680:54;3746:15;3763:16;3781:10;3795:27;:4;:9;;;:25;:27::i;:::-;3745:77;;-1:-1:-1;3745:77:45;-1:-1:-1;3745:77:45;-1:-1:-1;3851:18:45;;;;;;;;3833:15;;3915:31;3745:77;;;3915:7;:31::i;:::-;:36;;;3965:9;3988:10;4012:19;:8;:17;:19::i;:::-;4045:22;;;;:149;;4177:17;4045:149;;;4087:10;:70;;4130:27;4087:70;;;4100:27;4087:70;4219:4;4208:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;3915:319;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3880:354;;;;4262:10;:30;;4285:7;4262:30;;;4275:7;4262:30;4260:33;;;3411:890;-1:-1:-1;;;;;;;;;;;3411:890:45:o;986:125:16:-;1044:9;1073:6;;;:30;;-1:-1:-1;;1088:5:16;;;1102:1;1097;1088:5;1097:1;1083:15;;;;;:20;1073:30;1065:39;;;;;2282:165:95;2394:12;;;2354;2394;;;;;;;;;2372:7;;;;2387:5;;2372:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2353:54;;;2425:7;2417:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:127:87;2309:12;2340:25;:4;2351:1;618:23;2340:10;:25::i;1183:279:95:-;1313:59;;;1302:10;1313:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1336:24;1313:59;;;1302:71;;;;1267:12;;;;1302:10;;;;1313:59;1302:71;;;1313:59;1302:71;;1313:59;1302:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1266:107;;;;1391:7;:57;;;;-1:-1:-1;1403:11:95;;:16;;:44;;;1434:4;1423:24;;;;;;;;;;;;;;;-1:-1:-1;1423:24:95;1403:44;1383:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3214:416:80;3293:7;3335:6;3320;3329:2;3320:11;:21;;3312:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3399:6;3408:2;3399:11;3382:6;:13;:28;;3374:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3524:30:80;3540:4;3524:30;3518:37;3557:27;3514:71;;;3214:416::o;3636:365::-;3714:6;3754;3740;3749:1;3740:10;:20;;3732:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3817:6;3826:1;3817:10;3800:6;:13;:27;;3792:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3929:29:80;3945:3;3929:29;3923:36;;3636:365::o;784:244:88:-;871:14;;:::i;:::-;910:6;901:15;;:6;:15;;;897:56;;;938:6;;946;897:56;-1:-1:-1;970:51:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;784:244::o;1248:269:81:-;1370:17;1419:44;1446:7;1455;1419:26;:44::i;:::-;1399:65;-1:-1:-1;1482:10:81;:27;;;;1474:36;;;;;561:330:95;722:69;;;698:10;722:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;745:28;722:69;;;698:103;;;;663:12;;;;698:10;;;;722:69;698:103;;;722:69;698:103;;722:69;698:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;662:139;;;;819:7;:57;;;;-1:-1:-1;831:11:95;;:16;;:44;;;862:4;851:24;;;;;;;;;;;;;;;-1:-1:-1;851:24:95;831:44;811:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;399:2809:80;491:12;539:7;523;533:2;523:12;:23;;515:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;603:6;592:7;583:6;:16;:26;;575:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;672:7;663:6;:16;646:6;:13;:33;;638:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;712:22;775:15;;803:1967;;;;2911:4;2905:11;2892:24;;3097:1;3086:9;3079:20;3145:4;3134:9;3130:20;3124:4;3117:34;768:2397;;803:1967;985:4;979:11;966:24;;1644:2;1635:7;1631:16;2026:9;2019:17;2013:4;2009:28;1997:9;1986;1982:25;1978:60;2074:7;2070:2;2066:16;2326:6;2312:9;2305:17;2299:4;2295:28;2283:9;2275:6;2271:22;2267:57;2263:70;2100:425;2359:3;2355:2;2352:11;2100:425;;;2497:9;;2486:21;;2400:4;2392:13;;;;2432;2100:425;;;-1:-1:-1;;2543:26:80;;;2751:2;2734:11;2747:7;2730:25;2724:4;2717:39;-1:-1:-1;768:2397:80;-1:-1:-1;3192:9:80;399:2809;-1:-1:-1;;;;399:2809:80:o;1773:215:45:-;1856:12;1900:80;1927:7;1936:43;1959:6;1967;1975:3;1936:22;:43::i;:::-;1900:26;:80::i;:::-;1880:101;1773:215;-1:-1:-1;;;;1773:215:45:o;924:123:17:-;976:8;1008;1004:1;:12;996:21;;;;;;-1:-1:-1;1038:1:17;924:123::o;1276:512:88:-;1360:12;1405:3;:10;;;1392:23;;:3;:10;;;:23;;;1384:32;;;;;;-1:-1:-1;1639:10:88;;1651;;;;;1663:7;;;;;1628:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1618:54;;;;;;1510:229;;;;;;;;;;;;;;;;;;;;;241:66;1510:229;;;;;;;;;;;;;;;;;;;;;;;;;1479:278;;;;;;1276:512::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:138:115:-;84:20;;113:33;84:20;113:33;:::i;157:485::-;;254:3;247:4;239:6;235:17;231:27;221:2;;276:5;269;262:20;221:2;316:6;303:20;347:49;362:33;392:2;362:33;:::i;:::-;347:49;:::i;:::-;421:2;412:7;405:19;467:3;460:4;455:2;447:6;443:15;439:26;436:35;433:2;;;488:5;481;474:20;433:2;557;550:4;542:6;538:17;531:4;522:7;518:18;505:55;580:16;;;598:4;576:27;569:42;;;;584:7;211:431;-1:-1:-1;;211:431:115:o;647:182::-;;770:3;761:6;756:3;752:16;748:26;745:2;;;791:5;784;777:20;834:259;;946:2;934:9;925:7;921:23;917:32;914:2;;;967:6;959;952:22;914:2;1011:9;998:23;1030:33;1057:5;1030:33;:::i;:::-;1082:5;904:189;-1:-1:-1;;;904:189:115:o;1098:470::-;;;;1244:2;1232:9;1223:7;1219:23;1215:32;1212:2;;;1265:6;1257;1250:22;1212:2;1309:9;1296:23;1328:33;1355:5;1328:33;:::i;:::-;1380:5;-1:-1:-1;1432:2:115;1417:18;;1404:32;;-1:-1:-1;1488:2:115;1473:18;;1460:32;1501:35;1460:32;1501:35;:::i;:::-;1555:7;1545:17;;;1202:366;;;;;:::o;1573:683::-;;;;;;1753:3;1741:9;1732:7;1728:23;1724:33;1721:2;;;1775:6;1767;1760:22;1721:2;1819:9;1806:23;1838:33;1865:5;1838:33;:::i;:::-;1890:5;-1:-1:-1;1942:2:115;1927:18;;1914:32;;-1:-1:-1;1998:2:115;1983:18;;1970:32;2011:35;1970:32;2011:35;:::i;:::-;2065:7;-1:-1:-1;2119:2:115;2104:18;;2091:32;;-1:-1:-1;2175:3:115;2160:19;;2147:33;2189:35;2147:33;2189:35;:::i;:::-;2243:7;2233:17;;;1711:545;;;;;;;;:::o;2261:709::-;;;;;;;2456:3;2444:9;2435:7;2431:23;2427:33;2424:2;;;2478:6;2470;2463:22;2424:2;2522:9;2509:23;2541:33;2568:5;2541:33;:::i;:::-;2593:5;-1:-1:-1;2645:2:115;2630:18;;2617:32;;-1:-1:-1;2696:2:115;2681:18;;2668:32;;-1:-1:-1;2752:2:115;2737:18;;2724:32;2800:4;2787:18;;2775:31;;2765:2;;2825:6;2817;2810:22;2765:2;2414:556;;;;-1:-1:-1;2414:556:115;;2907:3;2892:19;;2879:33;;2959:3;2944:19;;;2931:33;;-1:-1:-1;2414:556:115;-1:-1:-1;;2414:556:115:o;2975:677::-;;;3133:2;3121:9;3112:7;3108:23;3104:32;3101:2;;;3154:6;3146;3139:22;3101:2;3199:9;3186:23;3228:18;3269:2;3261:6;3258:14;3255:2;;;3290:6;3282;3275:22;3255:2;3333:6;3322:9;3318:22;3308:32;;3378:7;3371:4;3367:2;3363:13;3359:27;3349:2;;3405:6;3397;3390:22;3349:2;3450;3437:16;3476:2;3468:6;3465:14;3462:2;;;3497:6;3489;3482:22;3462:2;3556:7;3551:2;3545;3537:6;3533:15;3529:2;3525:24;3521:33;3518:46;3515:2;;;3582:6;3574;3567:22;3515:2;3618;3610:11;;;;;3640:6;;-1:-1:-1;3091:561:115;;-1:-1:-1;;;;3091:561:115:o;3657:253::-;;;3795:2;3783:9;3774:7;3770:23;3766:32;3763:2;;;3816:6;3808;3801:22;3763:2;-1:-1:-1;;3844:16:115;;3900:2;3885:18;;;3879:25;3844:16;;3879:25;;-1:-1:-1;3753:157:115:o;3915:775::-;;;;;4078:2;4066:9;4057:7;4053:23;4049:32;4046:2;;;4099:6;4091;4084:22;4046:2;4140:9;4127:23;4117:33;;4197:2;4186:9;4182:18;4169:32;4159:42;;4252:2;4241:9;4237:18;4224:32;4275:18;4316:2;4308:6;4305:14;4302:2;;;4337:6;4329;4322:22;4302:2;4380:6;4369:9;4365:22;4355:32;;4425:7;4418:4;4414:2;4410:13;4406:27;4396:2;;4452:6;4444;4437:22;4396:2;4497;4484:16;4523:2;4515:6;4512:14;4509:2;;;4544:6;4536;4529:22;4509:2;4594:7;4589:2;4580:6;4576:2;4572:15;4568:24;4565:37;4562:2;;;4620:6;4612;4605:22;4562:2;4036:654;;;;-1:-1:-1;;4656:2:115;4648:11;;-1:-1:-1;;;4036:654:115:o;4695:676::-;;4828:2;4816:9;4807:7;4803:23;4799:32;4796:2;;;4849:6;4841;4834:22;4796:2;4887:9;4881:16;4920:18;4912:6;4909:30;4906:2;;;4957:6;4949;4942:22;4906:2;4985:22;;5038:4;5030:13;;5026:27;-1:-1:-1;5016:2:115;;5072:6;5064;5057:22;5016:2;5106;5100:9;5131:49;5146:33;5176:2;5146:33;:::i;5131:49::-;5203:2;5196:5;5189:17;5243:7;5238:2;5233;5229;5225:11;5221:20;5218:33;5215:2;;;5269:6;5261;5254:22;5215:2;5287:54;5338:2;5333;5326:5;5322:14;5317:2;5313;5309:11;5287:54;:::i;5376:1043::-;;5523:2;5511:9;5502:7;5498:23;5494:32;5491:2;;;5544:6;5536;5529:22;5491:2;5589:9;5576:23;5618:18;5659:2;5651:6;5648:14;5645:2;;;5680:6;5672;5665:22;5645:2;5708:22;;;;5764:4;5746:16;;;5742:27;5739:2;;;5787:6;5779;5772:22;5739:2;5825;5819:9;5867:4;5859:6;5855:17;5922:6;5910:10;5907:22;5902:2;5890:10;5887:18;5884:46;5881:2;;;5933:9;5881:2;5960;5953:22;6000:16;;6028;;;6025:2;;;6062:6;6054;6047:22;6025:2;6095:46;6133:7;6122:8;6118:2;6114:17;6095:46;:::i;:::-;6087:6;6080:62;;6175:33;6204:2;6200;6196:11;6175:33;:::i;:::-;6170:2;6162:6;6158:15;6151:58;6263:2;6259;6255:11;6242:25;6237:2;6229:6;6225:15;6218:50;6322:2;6318;6314:11;6301:25;6296:2;6288:6;6284:15;6277:50;6382:3;6378:2;6374:12;6361:26;6355:3;6347:6;6343:16;6336:52;6407:6;6397:16;;;;;5481:938;;;;:::o;6424:283::-;;6579:3;6567:9;6558:7;6554:23;6550:33;6547:2;;;6601:6;6593;6586:22;6547:2;6629:72;6693:7;6682:9;6629:72;:::i;6712:428::-;;6862:2;6850:9;6841:7;6837:23;6833:32;6830:2;;;6883:6;6875;6868:22;6830:2;6928:9;6915:23;6961:18;6953:6;6950:30;6947:2;;;6998:6;6990;6983:22;6947:2;7026:22;;7082:3;7064:16;;;7060:26;7057:2;;;7104:6;7096;7089:22;7434:928;;7580:2;7568:9;7559:7;7555:23;7551:32;7548:2;;;7601:6;7593;7586:22;7548:2;7646:9;7633:23;7675:18;7716:2;7708:6;7705:14;7702:2;;;7737:6;7729;7722:22;7702:2;7765:22;;;;7821:4;7803:16;;;7799:27;7796:2;;;7844:6;7836;7829:22;7796:2;7882:4;7876:11;7926:4;7918:6;7914:17;7981:6;7969:10;7966:22;7961:2;7949:10;7946:18;7943:46;7940:2;;;7992:9;7940:2;8019:4;8012:24;8061:16;;8089;;;8086:2;;;8123:6;8115;8108:22;8086:2;8156:46;8194:7;8183:8;8179:2;8175:17;8156:46;:::i;:::-;8148:6;8141:62;;8246:2;8242;8238:11;8225:25;8212:38;;8259:33;8286:5;8259:33;:::i;:::-;8320:2;8308:15;;8301:30;;;;-1:-1:-1;8312:6:115;7538:824;-1:-1:-1;;;7538:824:115:o;8631:294::-;;8742:2;8730:9;8721:7;8717:23;8713:32;8710:2;;;8763:6;8755;8748:22;8710:2;8807:9;8794:23;8857:8;8850:5;8846:20;8839:5;8836:31;8826:2;;8886:6;8878;8871:22;8930:190;;9042:2;9030:9;9021:7;9017:23;9013:32;9010:2;;;9063:6;9055;9048:22;9010:2;-1:-1:-1;9091:23:115;;9000:120;-1:-1:-1;9000:120:115:o;9125:327::-;;;9254:2;9242:9;9233:7;9229:23;9225:32;9222:2;;;9275:6;9267;9260:22;9222:2;9316:9;9303:23;9293:33;;9376:2;9365:9;9361:18;9348:32;9389:33;9416:5;9389:33;:::i;:::-;9441:5;9431:15;;;9212:240;;;;;:::o;9457:539::-;;;;;9620:3;9608:9;9599:7;9595:23;9591:33;9588:2;;;9642:6;9634;9627:22;9588:2;9683:9;9670:23;9660:33;;9743:2;9732:9;9728:18;9715:32;9756:33;9783:5;9756:33;:::i;:::-;9808:5;-1:-1:-1;9860:2:115;9845:18;;9832:32;;-1:-1:-1;9916:2:115;9901:18;;9888:32;9929:35;9888:32;9929:35;:::i;:::-;9578:418;;;;-1:-1:-1;9578:418:115;;-1:-1:-1;;9578:418:115:o;10001:318::-;;10082:5;10076:12;10109:6;10104:3;10097:19;10125:63;10181:6;10174:4;10169:3;10165:14;10158:4;10151:5;10147:16;10125:63;:::i;:::-;10233:2;10221:15;10238:66;10217:88;10208:98;;;;10308:4;10204:109;;10052:267;-1:-1:-1;;10052:267:115:o;10324:514::-;10612:2;10608:15;;;10517:66;10604:24;;;10592:37;;10667:3;10663:16;;;;10681:66;10659:89;10654:2;10645:12;;10638:111;10783:15;;10779:24;10774:2;10765:12;;10758:46;10829:2;10820:12;;10497:341::o;10843:273::-;;11026:6;11018;11013:3;11000:33;11052:16;;11077:15;;;11052:16;10990:126;-1:-1:-1;10990:126:115:o;11121:226::-;11297:42;11285:55;;;;11267:74;;11255:2;11240:18;;11222:125::o;11352:593::-;;11595:42;11676:2;11668:6;11664:15;11653:9;11646:34;11730:6;11723:14;11716:22;11711:2;11700:9;11696:18;11689:50;11775:6;11770:2;11759:9;11755:18;11748:34;11830:2;11822:6;11818:15;11813:2;11802:9;11798:18;11791:43;;11871:3;11865;11854:9;11850:19;11843:32;11892:47;11934:3;11923:9;11919:19;11911:6;11892:47;:::i;:::-;11884:55;11575:370;-1:-1:-1;;;;;;;11575:370:115:o;11950:865::-;;12139:2;12179;12168:9;12164:18;12209:2;12198:9;12191:21;12232:6;12267;12261:13;12298:6;12290;12283:22;12336:2;12325:9;12321:18;12314:25;;12399:2;12393;12385:6;12381:15;12370:9;12366:31;12362:40;12348:54;;12437:2;12429:6;12425:15;12458:4;12471:315;12485:6;12482:1;12479:13;12471:315;;;12574:66;12562:9;12554:6;12550:22;12546:95;12541:3;12534:108;12665:41;12699:6;12690;12684:13;12665:41;:::i;:::-;12655:51;-1:-1:-1;12764:12:115;;;;12729:15;;;;12507:1;12500:9;12471:315;;;-1:-1:-1;12803:6:115;;12119:696;-1:-1:-1;;;;;;;12119:696:115:o;12820:221::-;;12969:2;12958:9;12951:21;12989:46;13031:2;13020:9;13016:18;13008:6;12989:46;:::i;13046:342::-;13248:2;13230:21;;;13287:2;13267:18;;;13260:30;13326:20;13321:2;13306:18;;13299:48;13379:2;13364:18;;13220:168::o;13393:343::-;13595:2;13577:21;;;13634:2;13614:18;;;13607:30;13673:21;13668:2;13653:18;;13646:49;13727:2;13712:18;;13567:169::o;13741:497::-;;13938:2;13927:9;13920:21;13976:6;13970:13;14019:4;14014:2;14003:9;13999:18;13992:32;14047:52;14095:2;14084:9;14080:18;14066:12;14047:52;:::i;:::-;14033:66;;14165:42;14159:2;14151:6;14147:15;14141:22;14137:71;14130:4;14119:9;14115:20;14108:101;14226:6;14218:14;;;13910:328;;;;:::o;14243:177::-;14389:25;;;14377:2;14362:18;;14344:76::o;14425:592::-;;;14568:11;14555:25;14658:66;14647:8;14631:14;14627:29;14623:102;14603:18;14599:127;14589:2;;14743:4;14737;14730:18;14589:2;14773:33;;14825:20;;;-1:-1:-1;14868:18:115;14857:30;;14854:2;;;14903:4;14897;14890:18;14854:2;14939:4;14927:17;;-1:-1:-1;14970:14:115;14966:27;;;14956:38;;14953:2;;;15007:1;15004;14997:12;14953:2;14519:498;;;;;:::o;15022:242::-;15092:2;15086:9;15122:17;;;15169:18;15154:34;;15190:22;;;15151:62;15148:2;;;15216:9;15148:2;15243;15236:22;15066:198;;-1:-1:-1;15066:198:115:o;15269:240::-;;15352:18;15344:6;15341:30;15338:2;;;15374:9;15338:2;-1:-1:-1;15422:4:115;15410:17;15429:66;15406:90;15498:4;15402:101;;15328:181::o;15514:258::-;15586:1;15596:113;15610:6;15607:1;15604:13;15596:113;;;15686:11;;;15680:18;15667:11;;;15660:39;15632:2;15625:10;15596:113;;;15727:6;15724:1;15721:13;15718:2;;;-1:-1:-1;;15762:1:115;15744:16;;15737:27;15567:205::o;15777:156::-;15865:42;15858:5;15854:54;15847:5;15844:65;15834:2;;15923:1;15920;15913:12;15834:2;15824:109;:::o"},"methodIdentifiers":{"SAMB()":"90793ea8","astraCLSwapCallback(int256,int256,bytes)":"11c17848","exactInput((bytes,address,uint256,uint256,uint256))":"c04b8d59","exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"414bf389","exactOutput((bytes,address,uint256,uint256,uint256))":"f28c0498","exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"db3e2198","factory()":"c45a0155","multicall(bytes[])":"ac9650d8","refundAMB()":"c53af304","selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)":"f3995c67","selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)":"4659a494","selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"a4a78f0c","selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"c2e3140a","setTime(uint256)":"3beb26c4","sweepToken(address,uint256,address)":"df2ab5bb","sweepTokenWithFee(address,uint256,address,uint256,address)":"e0e189a0","unwrapSAMB(uint256,address)":"a98ce37f","unwrapSAMBWithFee(uint256,address,uint256,address)":"97e87d9d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_SAMB\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"SAMB\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"astraCLSwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapRouter.ExactInputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct ISwapRouter.ExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapRouter.ExactOutputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct ISwapRouter.ExactOutputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"refundAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowed\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowedIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_time\",\"type\":\"uint256\"}],\"name\":\"setTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"sweepToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeBips\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"sweepTokenWithFee\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"unwrapSAMB\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeBips\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"unwrapSAMBWithFee\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IAstraCLPoolActions#swap call\"}},\"exactInput((bytes,address,uint256,uint256,uint256))\":{\"params\":{\"params\":\"The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\"},\"returns\":{\"amountOut\":\"The amount of the received token\"}},\"exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"params\":{\"params\":\"The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\"},\"returns\":{\"amountOut\":\"The amount of the received token\"}},\"exactOutput((bytes,address,uint256,uint256,uint256))\":{\"params\":{\"params\":\"The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\"},\"returns\":{\"amountIn\":\"The amount of the input token\"}},\"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"params\":{\"params\":\"The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\"},\"returns\":{\"amountIn\":\"The amount of the input token\"}},\"multicall(bytes[])\":{\"details\":\"The `msg.value` should not be trusted for any method callable from multicall.\",\"params\":{\"data\":\"The encoded function data for each of the calls to make to this contract\"},\"returns\":{\"results\":\"The results from each of the calls passed in via data\"}},\"refundAMB()\":{\"details\":\"Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps that use ether for the input amount\"},\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this).\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this)\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this) Can be used instead of #selfPermitAllowed to prevent calls from failing due to a frontrun of a call to #selfPermitAllowed.\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this). Can be used instead of #selfPermit to prevent calls from failing due to a frontrun of a call to #selfPermit\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}},\"sweepToken(address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing the token from users\",\"params\":{\"amountMinimum\":\"The minimum amount of token required for a transfer\",\"recipient\":\"The destination address of the token\",\"token\":\"The contract address of the token which will be transferred to `recipient`\"}},\"sweepTokenWithFee(address,uint256,address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing the token from users\"},\"unwrapSAMB(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of SAMB to unwrap\",\"recipient\":\"The address receiving AMB\"}},\"unwrapSAMBWithFee(uint256,address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing SAMB from users.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IAstraCLPool#swap.\"},\"exactInput((bytes,address,uint256,uint256,uint256))\":{\"notice\":\"Swaps `amountIn` of one token for as much as possible of another along the specified path\"},\"exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"notice\":\"Swaps `amountIn` of one token for as much as possible of another token\"},\"exactOutput((bytes,address,uint256,uint256,uint256))\":{\"notice\":\"Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)\"},\"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"notice\":\"Swaps as little as possible of one token for `amountOut` of another token\"},\"multicall(bytes[])\":{\"notice\":\"Call multiple functions in the current contract and return the data from all of them if they all succeed\"},\"refundAMB()\":{\"notice\":\"Refunds any AMB balance held by this contract to the `msg.sender`\"},\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"},\"sweepToken(address,uint256,address)\":{\"notice\":\"Transfers the full amount of a token held by this contract to recipient\"},\"sweepTokenWithFee(address,uint256,address,uint256,address)\":{\"notice\":\"Transfers the full amount of a token held by this contract to recipient, with a percentage between 0 (exclusive) and 1 (inclusive) going to feeRecipient\"},\"unwrapSAMB(uint256,address)\":{\"notice\":\"Unwraps the contract's SAMB balance and sends it to recipient as AMB.\"},\"unwrapSAMBWithFee(uint256,address,uint256,address)\":{\"notice\":\"Unwraps the contract's SAMB balance and sends it to recipient as AMB, with a percentage between 0 (exclusive), and 1 (inclusive) going to feeRecipient\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockTimeSwapRouter.sol\":\"MockTimeSwapRouter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol\":{\"keccak256\":\"0xaa82f63f0c930e51d6aaae0d59e7bf3ef5b32371ac0549f6e07bfcab5b4dcb16\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://73419af0b4f35f02c3b89d387d6ac46041637a7133e249de617103b7567bf4c4\",\"dweb:/ipfs/QmTfwEX1dCoUUUMaMFzDnqDcFXihHQnEG1fbkBFpidRs8o\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0x86715eb960f18e01ac94e3bba4614ed51a887fa3c5bd1c43bf80aa98e019cf2d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfc1d5d58e59015086b0e65a6c3a2ddad312e2350480510f6c0c8167f3d71a37\",\"dweb:/ipfs/QmQndULYjFsHKHjMAKLMfc12vWbVB5FawtioHtvwcWRJZp\"]},\"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0xd4c1c1b67f946b077d7c52a158113763a89a210fc2927b8491055a962ecd18c0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5344400c74320ca8dbe19241db7ff49babbd6c875c1b561c79d6e4315a9fb5f9\",\"dweb:/ipfs/QmRKCNTbkovxK1WvejXZr3iAHhGN97ZT1yWGsWCJFkrT5X\"]},\"@airdao/astra-cl-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0xe22d07f1ebf9c8468c81cb6905bfc8f8a54fa2f9b4a50742202a47cdbcb5af80\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d4773ca5008d2a2f496370695942c8ba3d6e1d487adbf5cda1149da12e3a6268\",\"dweb:/ipfs/QmcPYTLpEWfU8e3KAYBfHH7uYR4tGAkvnWrWS1CG8EkyLC\"]},\"@openzeppelin/contracts/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"contracts/SwapRouter.sol\":{\"keccak256\":\"0x80afe04104e037caa9f42f553c7c128a53cdcbf486e545ffb70525821d8d852f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://44b81b11854ebaeae36675d03bb17b86c9b7c10bf936219d2d368728d0b0af4f\",\"dweb:/ipfs/Qmb8NQ3Vkzn1uYzLUZKba6ogLUdz1HSSTRW8oaryt3AtKR\"]},\"contracts/base/BlockTimestamp.sol\":{\"keccak256\":\"0x1aa66f71234064a0c0976f62233f2edbd69554e5ad817dc97f318bc8e11f4da6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b3a40450e9d6b0f9cb91b40ffd6215612505bd74e7d954529958f4edc6ee7b93\",\"dweb:/ipfs/QmewsUCHK5N5KhNtqEwK8JgsXFADyFBrQRS5HoDWM5gi3b\"]},\"contracts/base/Multicall.sol\":{\"keccak256\":\"0xfcfd78c62d2145634a791d5680a1af7055fbd301c415d29c09333c99c37d9037\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0d1c8f4a18cec8ad49e5269c5b07c7f6fd497dfc1b7b777f8ddcfb8055efd803\",\"dweb:/ipfs/QmdeCTnfHM3RGtQuo3DMX9m7gPspGGwQp7ho6m9cJjjnER\"]},\"contracts/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x566b2f2f7bf89d107c66316e12b9cad9fade2f9cc2076bceb2090f54bada22da\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d13d485890a8eb6b2b6b38cf0b7fc39c7fc66462a9553159947ece2de55d9ba3\",\"dweb:/ipfs/QmaSEEBMjMvvrLqxmrskUmDwg86g7RHDa6SYiYiA77SJ1X\"]},\"contracts/base/PeripheryPayments.sol\":{\"keccak256\":\"0x88e12ecce0236f43cac955dee8ae50e8ffba7d133625ba18b590d51b9e030098\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://9f10d1317582a91e7842901c6888c4bb28939817cefa3d3f88458c2ec653b6ed\",\"dweb:/ipfs/QmP2qV22Uq6Pou1VkgNzRnXHzNJ71CBpVBYhYDnLccBx8U\"]},\"contracts/base/PeripheryPaymentsWithFee.sol\":{\"keccak256\":\"0x93f6d5b75cb4e7204ae63f45722eb82ac62f732d56cbf31f3a65ce2ea262cc6d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a23090fa2e584774818eeb9e548086b8c383acd9d35830845191fd114bfbf03b\",\"dweb:/ipfs/QmXr9EGVoUMCGttgsDFJZ5UBrBjY42qBV2FRakCDi8aeTs\"]},\"contracts/base/PeripheryValidation.sol\":{\"keccak256\":\"0xc736bab599912d6212e8414ee4ba7af0c1e08ff6aa11caa85f5f6e07f7d421c3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://06f6c13a86900c71fa486fc029a59d1b7eb96162bb42885b5f845d995294893e\",\"dweb:/ipfs/QmUcBxMsmncw9n6eXhzzwSasGBvBGKH5FT8HSrAxrsXV4A\"]},\"contracts/base/SelfPermit.sol\":{\"keccak256\":\"0xe75aedfc1eff6c84adac82b2bc41d197127a74530f0c344a7a122a6c8ec186be\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://05150ae691e10f2c9c82ad46de86c8b6683d8eba995e6f9ff82eaefc064902e9\",\"dweb:/ipfs/QmdKxxmxCPxV7qe11MbRhpaQXDAnnKWH1BoTMmEXYPAA7g\"]},\"contracts/interfaces/IMulticall.sol\":{\"keccak256\":\"0xa8f9d0061ee730a522dc4bae6bd5cabb3e997e2c5983da183e912bdca93dfa7b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://496b68d4f72d58cc83cf51bd9cc9c99aaa46dc3c3df7c951a9e50ba29ee33016\",\"dweb:/ipfs/Qmc3bkXwuRP8mDpcKgvLgbCKn8tD8PGCaBjnLHSPMJCRGD\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x57bd5b069f6e66edd42a9b41e5864bfcd2aa7d404337d6c57a083fb589fc59bd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4efa92b18c295755437180f93a19179ef15dfe24a6db10ae876c41247fd4a907\",\"dweb:/ipfs/QmYJTRqE5BEjqyNoZqoctVFgxZF336cK9ba1RSd2LbgFkG\"]},\"contracts/interfaces/IPeripheryPaymentsWithFee.sol\":{\"keccak256\":\"0x95eb2970f74b59074666d156779b7eeb1a34228476ac26f987f6f563b834098d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bd17994291ec4231d4fa66af52e0cfd4f7883365ecb41f534acf08afffa8806d\",\"dweb:/ipfs/QmUjst3v8zu8DE9Ue3YHJJoRLcZGd9CXP3jVoC2tSAUjs9\"]},\"contracts/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0x402d04301ffd41853f4949a574b8853c46d076910ed734f5e4478bf64369a3ed\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6a5536d179ff3777920ff8ed60cfc457f7a4dda1373c8f0394b2a8e0fe537525\",\"dweb:/ipfs/QmdaYGikTmmi2vbECnoomZ8vS8PBiD4Bq8BoFCYqFZmKgR\"]},\"contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0xbcb66f65faf010af6a5314375428277818cd2648f6dc936970aee18711a4fdd2\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2a58b8e026a90bc84be07cfa9cbf64083f1bbde0d217ca4744650ba871122ff9\",\"dweb:/ipfs/QmRN4TqojnnF6wiupZZBYDATC6WmY9dx4p9Sorb9zXY9us\"]},\"contracts/interfaces/external/IERC20PermitAllowed.sol\":{\"keccak256\":\"0x8c4c1b8e724e0a78cb691d703dd37cd91b8bd6600537fb227807a194025a792d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://783be851155842a02cdb0483c3a69ecc0e7ae8545f65cec1d4aeb355b2026a7d\",\"dweb:/ipfs/QmZNBQosTjpGNKB3Eo2K6Zzye7FYiLVoEki5iPB2Y69jz2\"]},\"contracts/interfaces/external/ISAMB.sol\":{\"keccak256\":\"0x5b5789677c6b7e447fd774a5c065d9547c85f22e950e18690f686a6b779d78dc\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c2e45681c8d5c704fbfef7369ff7878e6af2d987ba564eb97148ee6e8db87e49\",\"dweb:/ipfs/Qmeg4ynPmWipSVb6BRj4o8uZRbE2bQk8nCwp9apMAEq8Xk\"]},\"contracts/libraries/BytesLib.sol\":{\"keccak256\":\"0xed1b8acd0184eb321d5f4b5c2576608d1c12f5db1bb72d950054438f7f1946a6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f55d6aca86dcf1f1ab6413f48964f821306a29914c2117c16f20446faa5d6d0a\",\"dweb:/ipfs/QmWKbbg6kA9kkPVrCh6hJMnPhK1NhuVoHEd9s3vmYWsvTa\"]},\"contracts/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xf21a3d7e2bc14386ce7b072b124b580df53441a32591770845860e8947f942d0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6941e21d9bc52bddc65079c5e7bc9d6ffd6553f6ed7f3d3b340996a55115b46f\",\"dweb:/ipfs/QmaDJ9uafahho77WP5izBCRL4W3mVM7NFL5q5QR5YvAC3A\"]},\"contracts/libraries/Path.sol\":{\"keccak256\":\"0x0a6928608f48763796089e22dfc02a462cce63bb7727663961b3ed8c4f3eb862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://73bb4f107faf873db8700ce8950d2c4c88d41e0e1716da599bb733ad884f95eb\",\"dweb:/ipfs/QmZXSaPVpgDXpkKqYRdByJ3UXaMV2ATkr7V72nRZij8wmB\"]},\"contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xdd82100913bcb7c490e9e6912ab33994bd97d5a59e67209826ebf917bc8271c1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ecfc24c77d80aa718604d8a2c4d59460b76b5fd567d15206414e3838dd6698b7\",\"dweb:/ipfs/QmVtUC9dnade4RkzXaSqEFdAkiEftJ777jmT619LX2VLGv\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x0fef3409a5a161cd12b777fdfa86845d64b86f72c78b8312c9e3c92f9017e5c5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c9df2c76e4581a1d343ea1dd1d0478df7f1c1eef1b476ccea452367ef5b75e65\",\"dweb:/ipfs/QmWZVBRQcn4ekrmCDFkM4BSRAZ1m72GHzUnfzUn39PwQow\"]},\"contracts/test/MockTimeSwapRouter.sol\":{\"keccak256\":\"0x89f6bf374cdf6ad0d292ce7a950259bd6aa81dfdcf02574096952e66352d0150\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6fac26e2cd8f4bf40724255a32d8cb384b22fe2da7d52a3fd3c4913f6d02b2ac\",\"dweb:/ipfs/QmPenZdG7xnjMnRfsvQYzyZEFQZ3497PZPae2NywchoXLo\"]}},\"version\":1}"}},"contracts/test/NonfungiblePositionManagerPositionsGasTest.sol":{"NonfungiblePositionManagerPositionsGasTest":{"abi":[{"inputs":[{"internalType":"contract INonfungiblePositionManager","name":"_nonfungiblePositionManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getGasCostOfPositions","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b506040516101803803806101808339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b031661011a610066600039806067525061011a6000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063994ea42c14610030575b600080fd5b61004d6004803603602081101561004657600080fd5b503561005f565b60408051918252519081900360200190f35b6000805a90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166399fbab88846040518263ffffffff1660e01b8152600401808281526020019150506101806040518083038186803b1580156100d757600080fd5b505afa1580156100eb573d6000803e3d6000fd5b505050506040513d61018081101561010257600080fd5b50505a90039291505056fea164736f6c6343000706000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x180 CODESIZE SUB DUP1 PUSH2 0x180 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 DUP2 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11A PUSH2 0x66 PUSH1 0x0 CODECOPY DUP1 PUSH1 0x67 MSTORE POP PUSH2 0x11A PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x994EA42C EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x99FBAB88 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH2 0x180 DUP2 LT ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP GAS SWAP1 SUB SWAP3 SWAP2 POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"121:498:99:-:0;;;250:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;250:142:99;329:56;;;;-1:-1:-1;;;;;;329:56:99;;;-1:-1:-1;;;;;121:498:99;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{"16080":[{"length":32,"start":103}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061002b5760003560e01c8063994ea42c14610030575b600080fd5b61004d6004803603602081101561004657600080fd5b503561005f565b60408051918252519081900360200190f35b6000805a90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166399fbab88846040518263ffffffff1660e01b8152600401808281526020019150506101806040518083038186803b1580156100d757600080fd5b505afa1580156100eb573d6000803e3d6000fd5b505050506040513d61018081101561010257600080fd5b50505a90039291505056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x994EA42C EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x99FBAB88 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH2 0x180 DUP2 LT ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP GAS SWAP1 SUB SWAP3 SWAP2 POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"121:498:99:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;398:219;;;;;;;;;;;;;;;;-1:-1:-1;398:219:99;;:::i;:::-;;;;;;;;;;;;;;;;;469:7;488:17;508:9;488:29;;527:26;:36;;;564:7;527:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;601:9:99;589:21;;;398:219;-1:-1:-1;;398:219:99:o"},"methodIdentifiers":{"getGasCostOfPositions(uint256)":"994ea42c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract INonfungiblePositionManager\",\"name\":\"_nonfungiblePositionManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getGasCostOfPositions\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/NonfungiblePositionManagerPositionsGasTest.sol\":\"NonfungiblePositionManagerPositionsGasTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]},\"contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x383d39a13ce10019d4ebd27a694d085c03a1498a1cc31ec1511fac91b5296342\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3d22d9cc7a33829bd31da42d96bd75401a675ef32c8eb4d9e3074c21ec1241b6\",\"dweb:/ipfs/QmNrvD2T3k3wH5kWz6Kss9mSjxdJhXAA6NTH1Evj8j3k6A\"]},\"contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x920448f826d2d8e40aae06ce855644abac394c085a769605399d80cb36bde27f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b299cd039cf1fb92c9c58f666dfbb2753431f3904bed659ddd653ad9a503045\",\"dweb:/ipfs/QmZWb11WyJgGCW35e2opF3Ncstu59krJCDPAZpHWU9rqix\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x57bd5b069f6e66edd42a9b41e5864bfcd2aa7d404337d6c57a083fb589fc59bd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4efa92b18c295755437180f93a19179ef15dfe24a6db10ae876c41247fd4a907\",\"dweb:/ipfs/QmYJTRqE5BEjqyNoZqoctVFgxZF336cK9ba1RSd2LbgFkG\"]},\"contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x5d9b76c0eed9d836f8ab1d65a37921c56c46a69802f28c312f239ce159634473\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ab60ec035cd2f600d7e89828bcf1427a674defdcb4c511679144aae42273ba2d\",\"dweb:/ipfs/QmYWy2dAG2Mq4BUwybjVCbGtXYRG8Lz1jRfK6L924YuwRa\"]},\"contracts/test/NonfungiblePositionManagerPositionsGasTest.sol\":{\"keccak256\":\"0x43373dc1cb7eaf101f19850b72bed1ec4be0e423cb960d0061dfbb9af6999856\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7cb1437b875e37159ee5bce41c944436173762056e78b2ef7555e1216d38750d\",\"dweb:/ipfs/QmQbP7NCTf9hFaHDGwRCHqJwFfxXaeMZuxigLjLwjoXdoQ\"]}},\"version\":1}"}},"contracts/test/OracleTest.sol":{"OracleTest":{"abi":[{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint32","name":"secondsAgo","type":"uint32"}],"name":"consult","outputs":[{"internalType":"int24","name":"arithmeticMeanTick","type":"int24"},{"internalType":"uint128","name":"harmonicMeanLiquidity","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getBlockStartingTickAndLiquidity","outputs":[{"internalType":"int24","name":"","type":"int24"},{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"int24[]","name":"ticks","type":"int24[]"}],"name":"getChainedPrice","outputs":[{"internalType":"int256","name":"syntheticTick","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint32","name":"period","type":"uint32"}],"name":"getGasCostOfConsult","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint128","name":"baseAmount","type":"uint128"},{"internalType":"address","name":"baseToken","type":"address"},{"internalType":"address","name":"quoteToken","type":"address"}],"name":"getGasCostOfGetQuoteAtTick","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getOldestObservationSecondsAgo","outputs":[{"internalType":"uint32","name":"secondsAgo","type":"uint32"},{"internalType":"uint32","name":"currentTimestamp","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint128","name":"baseAmount","type":"uint128"},{"internalType":"address","name":"baseToken","type":"address"},{"internalType":"address","name":"quoteToken","type":"address"}],"name":"getQuoteAtTick","outputs":[{"internalType":"uint256","name":"quoteAmount","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint128","name":"weight","type":"uint128"}],"internalType":"struct OracleLibrary.WeightedTickData[]","name":"observations","type":"tuple[]"}],"name":"getWeightedArithmeticMeanTick","outputs":[{"internalType":"int24","name":"arithmeticMeanWeightedTick","type":"int24"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50611839806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063824134891161005b57806382413489146100fd578063ab34b0fc14610110578063bbe8f41914610130578063e6c4fbe01461014357610088565b8063333b19a81461008d57806343c57a27146100b75780636a816ff9146100d75780637059b38a146100ea575b600080fd5b6100a061009b366004611558565b610164565b6040516100ae9291906117a5565b60405180910390f35b6100ca6100c5366004611744565b61017a565b6040516100ae91906117ca565b6100ca6100e5366004611744565b610191565b6100ca6100f83660046115b0565b6101b0565b6100a061010b366004611572565b6101c3565b61012361011e36600461166e565b6101db565b6040516100ae9190611797565b6100ca61013e366004611572565b6101ee565b610156610151366004611558565b61020a565b6040516100ae9291906117d3565b6000806101708361021f565b915091505b915091565b60006101888585858561060e565b95945050505050565b6000805a90506101a38686868661060e565b505a900395945050505050565b60006101bc83836107b7565b9392505050565b6000806101d084846108e7565b915091509250929050565b60006101e682610d18565b90505b919050565b6000805a90506101fe84846108e7565b50505a90039392505050565b60008061021683610e04565b93429350915050565b60008060008060008573ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561026d57600080fd5b505afa158015610281573d6000803e3d6000fd5b505050506040513d60e081101561029757600080fd5b50602081015160408201516060909201519094509092509050600161ffff82161161032357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f4e454f0000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60008060008873ffffffffffffffffffffffffffffffffffffffff1663252c09d7866040518263ffffffff1660e01b8152600401808261ffff16815260200191505060806040518083038186803b15801561037d57600080fd5b505afa158015610391573d6000803e3d6000fd5b505050506040513d60808110156103a757600080fd5b508051602082015160409092015190945090925090504263ffffffff9081169084161461045257858973ffffffffffffffffffffffffffffffffffffffff16631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b15801561041557600080fd5b505afa158015610429573d6000803e3d6000fd5b505050506040513d602081101561043f57600080fd5b5051909850965061017595505050505050565b60008461ffff1660018661ffff168861ffff1601038161046e57fe5b0690506000806000808d73ffffffffffffffffffffffffffffffffffffffff1663252c09d7866040518263ffffffff1660e01b81526004018082815260200191505060806040518083038186803b1580156104c857600080fd5b505afa1580156104dc573d6000803e3d6000fd5b505050506040513d60808110156104f257600080fd5b50805160208201516040830151606090930151919650945090925090508061057b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f4f4e490000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b83880363ffffffff811684890360060b8161059257fe5b059b50600077ffffffffffffffffffffffffffffffffffffffff0000000084890360201b1663ffffffff831673ffffffffffffffffffffffffffffffffffffffff0277ffffffffffffffffffffffffffffffffffffffffffffffff16816105f557fe5b9d9f50909c049c50505050505050505050505050915091565b60008061061a8661102f565b90506fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff8216116106e85773ffffffffffffffffffffffffffffffffffffffff808216800290848116908616106106aa576106a57801000000000000000000000000000000000000000000000000876fffffffffffffffffffffffffffffffff16836113c2565b6106e0565b6106e081876fffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000006113c2565b9250506107ae565b600061071473ffffffffffffffffffffffffffffffffffffffff831680680100000000000000006113c2565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161061077c57610777700100000000000000000000000000000000876fffffffffffffffffffffffffffffffff16836113c2565b6107aa565b6107aa81876fffffffffffffffffffffffffffffffff167001000000000000000000000000000000006113c2565b9250505b50949350505050565b6000815160018451031461082c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f444c000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60015b825181116108e05783818151811061084357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1684600183038151811061087057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16106108b7578260018203815181106108a257fe5b602002602001015160020b82039150816108d7565b8260018203815181106108c657fe5b602002602001015160020b82019150815b5060010161082f565b5092915050565b60008063ffffffff831661095c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f4250000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b604080516002808252606082018352600092602083019080368337019050509050838160008151811061098b57fe5b602002602001019063ffffffff16908163ffffffff16815250506000816001815181106109b457fe5b63ffffffff9092166020928302919091018201526040517f883bdbfd00000000000000000000000000000000000000000000000000000000815260048101828152835160248301528351600093849373ffffffffffffffffffffffffffffffffffffffff8b169363883bdbfd9388939192839260449091019185820191028083838b5b83811015610a4f578181015183820152602001610a37565b505050509050019250505060006040518083038186803b158015610a7257600080fd5b505afa158015610a86573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040908152811015610acd57600080fd5b8101908080516040519392919084640100000000821115610aed57600080fd5b908301906020820185811115610b0257600080fd5b8251866020820283011164010000000082111715610b1f57600080fd5b82525081516020918201928201910280838360005b83811015610b4c578181015183820152602001610b34565b5050505090500160405260200180516040519392919084640100000000821115610b7557600080fd5b908301906020820185811115610b8a57600080fd5b8251866020820283011164010000000082111715610ba757600080fd5b82525081516020918201928201910280838360005b83811015610bd4578181015183820152602001610bbc565b5050505090500160405250505091509150600082600081518110610bf457fe5b602002602001015183600181518110610c0957fe5b6020026020010151039050600082600081518110610c2357fe5b602002602001015183600181518110610c3857fe5b60200260200101510390508763ffffffff168260060b81610c5557fe5b05965060008260060b128015610c7f57508763ffffffff168260060b81610c7857fe5b0760060b15155b15610caa577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909601955b63ffffffff881673ffffffffffffffffffffffffffffffffffffffff0277ffffffffffffffffffffffffffffffffffffffff00000000602083901b1677ffffffffffffffffffffffffffffffffffffffffffffffff821681610d0857fe5b0496505050505050509250929050565b6000806000805b8451811015610dad57848181518110610d3457fe5b6020026020010151602001516fffffffffffffffffffffffffffffffff16858281518110610d5e57fe5b60200260200101516000015160020b0283019250848181518110610d7e57fe5b6020026020010151602001516fffffffffffffffffffffffffffffffff16820191508080600101915050610d1f565b50808281610db757fe5b059250600082128015610dd25750808281610dce57fe5b0715155b15610dfd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201915b5050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610e4f57600080fd5b505afa158015610e63573d6000803e3d6000fd5b505050506040513d60e0811015610e7957600080fd5b506040810151606090910151909250905061ffff8116610efa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f4e49000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1663252c09d78461ffff168660010161ffff1681610f2d57fe5b066040518263ffffffff1660e01b8152600401808261ffff16815260200191505060806040518083038186803b158015610f6657600080fd5b505afa158015610f7a573d6000803e3d6000fd5b505050506040513d6080811015610f9057600080fd5b508051606090910151909250905080611024578573ffffffffffffffffffffffffffffffffffffffff1663252c09d760006040518263ffffffff1660e01b81526004018082815260200191505060806040518083038186803b158015610ff557600080fd5b505afa158015611009573d6000803e3d6000fd5b505050506040513d608081101561101f57600080fd5b505191505b504203949350505050565b60008060008360020b12611046578260020b61104e565b8260020b6000035b9050620d89e88111156110c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f5400000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000600182166110e3577001000000000000000000000000000000006110f5565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611129576ffff97272373d413259a46990580e213a0260801c5b6004821615611148576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611167576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611186576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156111a5576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156111c4576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156111e3576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611203576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611223576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611243576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611263576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611283576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156112a3576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156112c3576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156112e3576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611304576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611324576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611343576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611360576b048a170391f7dc42444e8fa20260801c5b60008460020b131561139957807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8161139557fe5b0490505b6401000000008106156113ad5760016113b0565b60005b60ff16602082901c0192505050919050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870986860292508281109083900303905080611416576000841161140b57600080fd5b5082900490506101bc565b80841161142257600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101e957600080fd5b600082601f8301126114c3578081fd5b813560206114d86114d38361180e565b6117ea565b82815281810190858301838502870184018810156114f4578586fd5b855b858110156115195761150782611526565b845292840192908401906001016114f6565b5090979650505050505050565b8035600281900b81146101e957600080fd5b80356fffffffffffffffffffffffffffffffff811681146101e957600080fd5b600060208284031215611569578081fd5b6101bc8261148f565b60008060408385031215611584578081fd5b61158d8361148f565b9150602083013563ffffffff811681146115a5578182fd5b809150509250929050565b600080604083850312156115c2578182fd5b823567ffffffffffffffff808211156115d9578384fd5b818501915085601f8301126115ec578384fd5b813560206115fc6114d38361180e565b82815281810190858301838502870184018b1015611618578889fd5b8896505b848710156116415761162d8161148f565b83526001969096019591830191830161161c565b5096505086013592505080821115611657578283fd5b50611664858286016114b3565b9150509250929050565b60006020808385031215611680578182fd5b823567ffffffffffffffff80821115611697578384fd5b818501915085601f8301126116aa578384fd5b81356116b86114d38261180e565b818152848101908486016040808502870188018b10156116d6578889fd5b8896505b848710156117355780828c0312156116f0578889fd5b8051818101818110888211171561170357fe5b825261170e83611526565b815261171b898401611538565b818a015284526001969096019592870192908101906116da565b50909998505050505050505050565b60008060008060808587031215611759578182fd5b61176285611526565b935061177060208601611538565b925061177e6040860161148f565b915061178c6060860161148f565b905092959194509250565b60029190910b815260200190565b60029290920b82526fffffffffffffffffffffffffffffffff16602082015260400190565b90815260200190565b63ffffffff92831681529116602082015260400190565b60405181810167ffffffffffffffff8111828210171561180657fe5b604052919050565b600067ffffffffffffffff82111561182257fe5b506020908102019056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1839 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x82413489 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x82413489 EQ PUSH2 0xFD JUMPI DUP1 PUSH4 0xAB34B0FC EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0xBBE8F419 EQ PUSH2 0x130 JUMPI DUP1 PUSH4 0xE6C4FBE0 EQ PUSH2 0x143 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x333B19A8 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x43C57A27 EQ PUSH2 0xB7 JUMPI DUP1 PUSH4 0x6A816FF9 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x7059B38A EQ PUSH2 0xEA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x1558 JUMP JUMPDEST PUSH2 0x164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAE SWAP3 SWAP2 SWAP1 PUSH2 0x17A5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCA PUSH2 0xC5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1744 JUMP JUMPDEST PUSH2 0x17A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAE SWAP2 SWAP1 PUSH2 0x17CA JUMP JUMPDEST PUSH2 0xCA PUSH2 0xE5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1744 JUMP JUMPDEST PUSH2 0x191 JUMP JUMPDEST PUSH2 0xCA PUSH2 0xF8 CALLDATASIZE PUSH1 0x4 PUSH2 0x15B0 JUMP JUMPDEST PUSH2 0x1B0 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x10B CALLDATASIZE PUSH1 0x4 PUSH2 0x1572 JUMP JUMPDEST PUSH2 0x1C3 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x11E CALLDATASIZE PUSH1 0x4 PUSH2 0x166E JUMP JUMPDEST PUSH2 0x1DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAE SWAP2 SWAP1 PUSH2 0x1797 JUMP JUMPDEST PUSH2 0xCA PUSH2 0x13E CALLDATASIZE PUSH1 0x4 PUSH2 0x1572 JUMP JUMPDEST PUSH2 0x1EE JUMP JUMPDEST PUSH2 0x156 PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x1558 JUMP JUMPDEST PUSH2 0x20A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAE SWAP3 SWAP2 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x170 DUP4 PUSH2 0x21F JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x188 DUP6 DUP6 DUP6 DUP6 PUSH2 0x60E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x1A3 DUP7 DUP7 DUP7 DUP7 PUSH2 0x60E JUMP JUMPDEST POP GAS SWAP1 SUB SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BC DUP4 DUP4 PUSH2 0x7B7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D0 DUP5 DUP5 PUSH2 0x8E7 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E6 DUP3 PUSH2 0xD18 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x1FE DUP5 DUP5 PUSH2 0x8E7 JUMP JUMPDEST POP POP GAS SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x216 DUP4 PUSH2 0xE04 JUMP JUMPDEST SWAP4 TIMESTAMP SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x281 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x297 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH2 0xFFFF DUP3 AND GT PUSH2 0x323 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E454F0000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x252C09D7 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x391 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x3A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP TIMESTAMP PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x452 JUMPI DUP6 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1A686502 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x429 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 SWAP9 POP SWAP7 POP PUSH2 0x175 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0xFFFF AND PUSH1 0x1 DUP7 PUSH2 0xFFFF AND DUP9 PUSH2 0xFFFF AND ADD SUB DUP2 PUSH2 0x46E JUMPI INVALID JUMPDEST MOD SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x252C09D7 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x4F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP4 ADD MLOAD SWAP2 SWAP7 POP SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP DUP1 PUSH2 0x57B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F4E490000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 DUP9 SUB PUSH4 0xFFFFFFFF DUP2 AND DUP5 DUP10 SUB PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0x592 JUMPI INVALID JUMPDEST SDIV SWAP12 POP PUSH1 0x0 PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 DUP5 DUP10 SUB PUSH1 0x20 SHL AND PUSH4 0xFFFFFFFF DUP4 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH2 0x5F5 JUMPI INVALID JUMPDEST SWAP14 SWAP16 POP SWAP1 SWAP13 DIV SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x61A DUP7 PUSH2 0x102F JUMP JUMPDEST SWAP1 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND GT PUSH2 0x6E8 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP1 MUL SWAP1 DUP5 DUP2 AND SWAP1 DUP7 AND LT PUSH2 0x6AA JUMPI PUSH2 0x6A5 PUSH25 0x1000000000000000000000000000000000000000000000000 DUP8 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH2 0x13C2 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST PUSH2 0x6E0 DUP2 DUP8 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH25 0x1000000000000000000000000000000000000000000000000 PUSH2 0x13C2 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x7AE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x714 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP1 PUSH9 0x10000000000000000 PUSH2 0x13C2 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x77C JUMPI PUSH2 0x777 PUSH17 0x100000000000000000000000000000000 DUP8 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH2 0x13C2 JUMP JUMPDEST PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x7AA DUP2 DUP8 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH17 0x100000000000000000000000000000000 PUSH2 0x13C2 JUMP JUMPDEST SWAP3 POP POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 DUP5 MLOAD SUB EQ PUSH2 0x82C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x444C000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 JUMPDEST DUP3 MLOAD DUP2 GT PUSH2 0x8E0 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x843 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x1 DUP4 SUB DUP2 MLOAD DUP2 LT PUSH2 0x870 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x8B7 JUMPI DUP3 PUSH1 0x1 DUP3 SUB DUP2 MLOAD DUP2 LT PUSH2 0x8A2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP3 SUB SWAP2 POP DUP2 PUSH2 0x8D7 JUMP JUMPDEST DUP3 PUSH1 0x1 DUP3 SUB DUP2 MLOAD DUP2 LT PUSH2 0x8C6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP3 ADD SWAP2 POP DUP2 JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x82F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH4 0xFFFFFFFF DUP4 AND PUSH2 0x95C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4250000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE PUSH1 0x0 SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x98B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH4 0xFFFFFFFF AND SWAP1 DUP2 PUSH4 0xFFFFFFFF AND DUP2 MSTORE POP POP PUSH1 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x9B4 JUMPI INVALID JUMPDEST PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x883BDBFD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP4 ADD MSTORE DUP4 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP4 PUSH4 0x883BDBFD SWAP4 DUP9 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 DUP6 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 DUP12 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA4F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA37 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE DUP2 LT ISZERO PUSH2 0xACD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0xAED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0xB02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0xB1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB4C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xB34 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0xB75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0xB8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0xBA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBD4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBBC JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xBF4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xC09 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC23 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xC38 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB SWAP1 POP DUP8 PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0xC55 JUMPI INVALID JUMPDEST SDIV SWAP7 POP PUSH1 0x0 DUP3 PUSH1 0x6 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0xC7F JUMPI POP DUP8 PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0xC78 JUMPI INVALID JUMPDEST SMOD PUSH1 0x6 SIGNEXTEND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xCAA JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP7 ADD SWAP6 JUMPDEST PUSH4 0xFFFFFFFF DUP9 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x20 DUP4 SWAP1 SHL AND PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 PUSH2 0xD08 JUMPI INVALID JUMPDEST DIV SWAP7 POP POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xDAD JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xD34 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xD5E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x2 SIGNEXTEND MUL DUP4 ADD SWAP3 POP DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xD7E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 ADD SWAP2 POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0xD1F JUMP JUMPDEST POP DUP1 DUP3 DUP2 PUSH2 0xDB7 JUMPI INVALID JUMPDEST SDIV SWAP3 POP PUSH1 0x0 DUP3 SLT DUP1 ISZERO PUSH2 0xDD2 JUMPI POP DUP1 DUP3 DUP2 PUSH2 0xDCE JUMPI INVALID JUMPDEST SMOD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xDFD JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 ADD SWAP2 JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE63 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xE79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x60 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xFFFF DUP2 AND PUSH2 0xEFA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E49000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x252C09D7 DUP5 PUSH2 0xFFFF AND DUP7 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0xF2D JUMPI INVALID JUMPDEST MOD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xF90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x60 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP1 PUSH2 0x1024 JUMPI DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x252C09D7 PUSH1 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1009 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x101F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP JUMPDEST POP TIMESTAMP SUB SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x1046 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x104E JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x10C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x10E3 JUMPI PUSH17 0x100000000000000000000000000000000 PUSH2 0x10F5 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x1129 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x1148 JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x1167 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x1186 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x11A5 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x11C4 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x11E3 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x1203 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x1223 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x1243 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x1263 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x1283 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x12A3 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x12C3 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x12E3 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x1304 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x1324 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x1343 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x1360 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x1399 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 PUSH2 0x1395 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x13AD JUMPI PUSH1 0x1 PUSH2 0x13B0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x1416 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x140B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x1BC JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x1422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x14C3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x14D8 PUSH2 0x14D3 DUP4 PUSH2 0x180E JUMP JUMPDEST PUSH2 0x17EA JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD DUP4 DUP6 MUL DUP8 ADD DUP5 ADD DUP9 LT ISZERO PUSH2 0x14F4 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x1519 JUMPI PUSH2 0x1507 DUP3 PUSH2 0x1526 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x14F6 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1569 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1BC DUP3 PUSH2 0x148F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1584 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x158D DUP4 PUSH2 0x148F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x15A5 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x15C2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x15D9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x15EC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x15FC PUSH2 0x14D3 DUP4 PUSH2 0x180E JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD DUP4 DUP6 MUL DUP8 ADD DUP5 ADD DUP12 LT ISZERO PUSH2 0x1618 JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x1641 JUMPI PUSH2 0x162D DUP2 PUSH2 0x148F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x161C JUMP JUMPDEST POP SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x1657 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1664 DUP6 DUP3 DUP7 ADD PUSH2 0x14B3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1680 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1697 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x16AA JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x16B8 PUSH2 0x14D3 DUP3 PUSH2 0x180E JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 DUP2 ADD SWAP1 DUP5 DUP7 ADD PUSH1 0x40 DUP1 DUP6 MUL DUP8 ADD DUP9 ADD DUP12 LT ISZERO PUSH2 0x16D6 JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x1735 JUMPI DUP1 DUP3 DUP13 SUB SLT ISZERO PUSH2 0x16F0 JUMPI DUP9 DUP10 REVERT JUMPDEST DUP1 MLOAD DUP2 DUP2 ADD DUP2 DUP2 LT DUP9 DUP3 GT OR ISZERO PUSH2 0x1703 JUMPI INVALID JUMPDEST DUP3 MSTORE PUSH2 0x170E DUP4 PUSH2 0x1526 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x171B DUP10 DUP5 ADD PUSH2 0x1538 JUMP JUMPDEST DUP2 DUP11 ADD MSTORE DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP8 ADD SWAP3 SWAP1 DUP2 ADD SWAP1 PUSH2 0x16DA JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1759 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1762 DUP6 PUSH2 0x1526 JUMP JUMPDEST SWAP4 POP PUSH2 0x1770 PUSH1 0x20 DUP7 ADD PUSH2 0x1538 JUMP JUMPDEST SWAP3 POP PUSH2 0x177E PUSH1 0x40 DUP7 ADD PUSH2 0x148F JUMP JUMPDEST SWAP2 POP PUSH2 0x178C PUSH1 0x60 DUP7 ADD PUSH2 0x148F JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1806 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1822 JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"126:2002:100:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6528:115","statements":[{"nodeType":"YulBlock","src":"6:3:115","statements":[]},{"body":{"nodeType":"YulBlock","src":"65:147:115","statements":[{"nodeType":"YulAssignment","src":"75:29:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"97:6:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"84:12:115"},"nodeType":"YulFunctionCall","src":"84:20:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"75:5:115"}]},{"body":{"nodeType":"YulBlock","src":"190:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"199:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"202:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"192:6:115"},"nodeType":"YulFunctionCall","src":"192:12:115"},"nodeType":"YulExpressionStatement","src":"192:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"126:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"137:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"144:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"133:3:115"},"nodeType":"YulFunctionCall","src":"133:54:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"123:2:115"},"nodeType":"YulFunctionCall","src":"123:65:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"116:6:115"},"nodeType":"YulFunctionCall","src":"116:73:115"},"nodeType":"YulIf","src":"113:2:115"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"44:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"55:5:115","type":""}],"src":"14:198:115"},{"body":{"nodeType":"YulBlock","src":"285:641:115","statements":[{"body":{"nodeType":"YulBlock","src":"334:24:115","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"343:5:115"},{"name":"array","nodeType":"YulIdentifier","src":"350:5:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"336:6:115"},"nodeType":"YulFunctionCall","src":"336:20:115"},"nodeType":"YulExpressionStatement","src":"336:20:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"313:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"321:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"309:3:115"},"nodeType":"YulFunctionCall","src":"309:17:115"},{"name":"end","nodeType":"YulIdentifier","src":"328:3:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"305:3:115"},"nodeType":"YulFunctionCall","src":"305:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"298:6:115"},"nodeType":"YulFunctionCall","src":"298:35:115"},"nodeType":"YulIf","src":"295:2:115"},{"nodeType":"YulVariableDeclaration","src":"367:30:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"390:6:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"377:12:115"},"nodeType":"YulFunctionCall","src":"377:20:115"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"371:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"406:14:115","value":{"kind":"number","nodeType":"YulLiteral","src":"416:4:115","type":"","value":"0x20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"410:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"429:76:115","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"501:2:115"}],"functionName":{"name":"array_allocation_size_t_array$_t_address_$dyn","nodeType":"YulIdentifier","src":"455:45:115"},"nodeType":"YulFunctionCall","src":"455:49:115"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"440:14:115"},"nodeType":"YulFunctionCall","src":"440:65:115"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"433:3:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"514:16:115","value":{"name":"dst","nodeType":"YulIdentifier","src":"527:3:115"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"518:5:115","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"546:3:115"},{"name":"_1","nodeType":"YulIdentifier","src":"551:2:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"539:6:115"},"nodeType":"YulFunctionCall","src":"539:15:115"},"nodeType":"YulExpressionStatement","src":"539:15:115"},{"nodeType":"YulAssignment","src":"563:19:115","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"574:3:115"},{"name":"_2","nodeType":"YulIdentifier","src":"579:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"570:3:115"},"nodeType":"YulFunctionCall","src":"570:12:115"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"563:3:115"}]},{"nodeType":"YulVariableDeclaration","src":"591:26:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"606:6:115"},{"name":"_2","nodeType":"YulIdentifier","src":"614:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"602:3:115"},"nodeType":"YulFunctionCall","src":"602:15:115"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"595:3:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"672:24:115","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"681:5:115"},{"name":"array","nodeType":"YulIdentifier","src":"688:5:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"674:6:115"},"nodeType":"YulFunctionCall","src":"674:20:115"},"nodeType":"YulExpressionStatement","src":"674:20:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"640:6:115"},{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"652:2:115"},{"name":"_2","nodeType":"YulIdentifier","src":"656:2:115"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"648:3:115"},"nodeType":"YulFunctionCall","src":"648:11:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"636:3:115"},"nodeType":"YulFunctionCall","src":"636:24:115"},{"name":"_2","nodeType":"YulIdentifier","src":"662:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"632:3:115"},"nodeType":"YulFunctionCall","src":"632:33:115"},{"name":"end","nodeType":"YulIdentifier","src":"667:3:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"629:2:115"},"nodeType":"YulFunctionCall","src":"629:42:115"},"nodeType":"YulIf","src":"626:2:115"},{"nodeType":"YulVariableDeclaration","src":"705:14:115","value":{"name":"array","nodeType":"YulIdentifier","src":"714:5:115"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"709:1:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"773:124:115","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"794:3:115"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"818:3:115"}],"functionName":{"name":"abi_decode_t_int24","nodeType":"YulIdentifier","src":"799:18:115"},"nodeType":"YulFunctionCall","src":"799:23:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"787:6:115"},"nodeType":"YulFunctionCall","src":"787:36:115"},"nodeType":"YulExpressionStatement","src":"787:36:115"},{"nodeType":"YulAssignment","src":"836:19:115","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"847:3:115"},{"name":"_2","nodeType":"YulIdentifier","src":"852:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"843:3:115"},"nodeType":"YulFunctionCall","src":"843:12:115"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"836:3:115"}]},{"nodeType":"YulAssignment","src":"868:19:115","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"879:3:115"},{"name":"_2","nodeType":"YulIdentifier","src":"884:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"875:3:115"},"nodeType":"YulFunctionCall","src":"875:12:115"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"868:3:115"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"739:1:115"},{"name":"_1","nodeType":"YulIdentifier","src":"742:2:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"736:2:115"},"nodeType":"YulFunctionCall","src":"736:9:115"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"746:18:115","statements":[{"nodeType":"YulAssignment","src":"748:14:115","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"757:1:115"},{"kind":"number","nodeType":"YulLiteral","src":"760:1:115","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"753:3:115"},"nodeType":"YulFunctionCall","src":"753:9:115"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"748:1:115"}]}]},"pre":{"nodeType":"YulBlock","src":"732:3:115","statements":[]},"src":"728:169:115"},{"nodeType":"YulAssignment","src":"906:14:115","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"915:5:115"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"906:5:115"}]}]},"name":"abi_decode_t_array$_t_int24_$dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"259:6:115","type":""},{"name":"end","nodeType":"YulTypedName","src":"267:3:115","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"275:5:115","type":""}],"src":"217:709:115"},{"body":{"nodeType":"YulBlock","src":"980:113:115","statements":[{"nodeType":"YulAssignment","src":"990:29:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1012:6:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"999:12:115"},"nodeType":"YulFunctionCall","src":"999:20:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"990:5:115"}]},{"body":{"nodeType":"YulBlock","src":"1071:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1080:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1083:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1073:6:115"},"nodeType":"YulFunctionCall","src":"1073:12:115"},"nodeType":"YulExpressionStatement","src":"1073:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1041:5:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1059:1:115","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"1062:5:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"1048:10:115"},"nodeType":"YulFunctionCall","src":"1048:20:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1038:2:115"},"nodeType":"YulFunctionCall","src":"1038:31:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1031:6:115"},"nodeType":"YulFunctionCall","src":"1031:39:115"},"nodeType":"YulIf","src":"1028:2:115"}]},"name":"abi_decode_t_int24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"959:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"970:5:115","type":""}],"src":"931:162:115"},{"body":{"nodeType":"YulBlock","src":"1149:139:115","statements":[{"nodeType":"YulAssignment","src":"1159:29:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1181:6:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1168:12:115"},"nodeType":"YulFunctionCall","src":"1168:20:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1159:5:115"}]},{"body":{"nodeType":"YulBlock","src":"1266:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1275:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1278:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1268:6:115"},"nodeType":"YulFunctionCall","src":"1268:12:115"},"nodeType":"YulExpressionStatement","src":"1268:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1210:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1221:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"1228:34:115","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1217:3:115"},"nodeType":"YulFunctionCall","src":"1217:46:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1207:2:115"},"nodeType":"YulFunctionCall","src":"1207:57:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1200:6:115"},"nodeType":"YulFunctionCall","src":"1200:65:115"},"nodeType":"YulIf","src":"1197:2:115"}]},"name":"abi_decode_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1128:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1139:5:115","type":""}],"src":"1098:190:115"},{"body":{"nodeType":"YulBlock","src":"1363:128:115","statements":[{"body":{"nodeType":"YulBlock","src":"1409:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1418:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"1426:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1411:6:115"},"nodeType":"YulFunctionCall","src":"1411:22:115"},"nodeType":"YulExpressionStatement","src":"1411:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1384:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"1393:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1380:3:115"},"nodeType":"YulFunctionCall","src":"1380:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"1405:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1376:3:115"},"nodeType":"YulFunctionCall","src":"1376:32:115"},"nodeType":"YulIf","src":"1373:2:115"},{"nodeType":"YulAssignment","src":"1444:41:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1475:9:115"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1454:20:115"},"nodeType":"YulFunctionCall","src":"1454:31:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1444:6:115"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1329:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1340:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1352:6:115","type":""}],"src":"1293:198:115"},{"body":{"nodeType":"YulBlock","src":"1582:286:115","statements":[{"body":{"nodeType":"YulBlock","src":"1628:26:115","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1637:6:115"},{"name":"value1","nodeType":"YulIdentifier","src":"1645:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1630:6:115"},"nodeType":"YulFunctionCall","src":"1630:22:115"},"nodeType":"YulExpressionStatement","src":"1630:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1603:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"1612:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1599:3:115"},"nodeType":"YulFunctionCall","src":"1599:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"1624:2:115","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1595:3:115"},"nodeType":"YulFunctionCall","src":"1595:32:115"},"nodeType":"YulIf","src":"1592:2:115"},{"nodeType":"YulAssignment","src":"1663:41:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1694:9:115"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1673:20:115"},"nodeType":"YulFunctionCall","src":"1673:31:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1663:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"1713:45:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1743:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1754:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1739:3:115"},"nodeType":"YulFunctionCall","src":"1739:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1726:12:115"},"nodeType":"YulFunctionCall","src":"1726:32:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1717:5:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"1812:26:115","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1821:6:115"},{"name":"value1","nodeType":"YulIdentifier","src":"1829:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1814:6:115"},"nodeType":"YulFunctionCall","src":"1814:22:115"},"nodeType":"YulExpressionStatement","src":"1814:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1780:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1791:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"1798:10:115","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1787:3:115"},"nodeType":"YulFunctionCall","src":"1787:22:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1777:2:115"},"nodeType":"YulFunctionCall","src":"1777:33:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1770:6:115"},"nodeType":"YulFunctionCall","src":"1770:41:115"},"nodeType":"YulIf","src":"1767:2:115"},{"nodeType":"YulAssignment","src":"1847:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"1857:5:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1847:6:115"}]}]},"name":"abi_decode_tuple_t_addresst_uint32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1540:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1551:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1563:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1571:6:115","type":""}],"src":"1496:372:115"},{"body":{"nodeType":"YulBlock","src":"2008:1087:115","statements":[{"body":{"nodeType":"YulBlock","src":"2054:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2063:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2071:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2056:6:115"},"nodeType":"YulFunctionCall","src":"2056:22:115"},"nodeType":"YulExpressionStatement","src":"2056:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2029:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"2038:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2025:3:115"},"nodeType":"YulFunctionCall","src":"2025:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"2050:2:115","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2021:3:115"},"nodeType":"YulFunctionCall","src":"2021:32:115"},"nodeType":"YulIf","src":"2018:2:115"},{"nodeType":"YulVariableDeclaration","src":"2089:37:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2116:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2103:12:115"},"nodeType":"YulFunctionCall","src":"2103:23:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2093:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2135:28:115","value":{"kind":"number","nodeType":"YulLiteral","src":"2145:18:115","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2139:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"2190:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2199:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2207:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2192:6:115"},"nodeType":"YulFunctionCall","src":"2192:22:115"},"nodeType":"YulExpressionStatement","src":"2192:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2178:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"2186:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2175:2:115"},"nodeType":"YulFunctionCall","src":"2175:14:115"},"nodeType":"YulIf","src":"2172:2:115"},{"nodeType":"YulVariableDeclaration","src":"2225:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2239:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"2250:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2235:3:115"},"nodeType":"YulFunctionCall","src":"2235:22:115"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2229:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"2305:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2314:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2322:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2307:6:115"},"nodeType":"YulFunctionCall","src":"2307:22:115"},"nodeType":"YulExpressionStatement","src":"2307:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2284:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"2288:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2280:3:115"},"nodeType":"YulFunctionCall","src":"2280:13:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2295:7:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2276:3:115"},"nodeType":"YulFunctionCall","src":"2276:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2269:6:115"},"nodeType":"YulFunctionCall","src":"2269:35:115"},"nodeType":"YulIf","src":"2266:2:115"},{"nodeType":"YulVariableDeclaration","src":"2340:26:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2363:2:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2350:12:115"},"nodeType":"YulFunctionCall","src":"2350:16:115"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2344:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2375:14:115","value":{"kind":"number","nodeType":"YulLiteral","src":"2385:4:115","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"2379:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2398:76:115","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2470:2:115"}],"functionName":{"name":"array_allocation_size_t_array$_t_address_$dyn","nodeType":"YulIdentifier","src":"2424:45:115"},"nodeType":"YulFunctionCall","src":"2424:49:115"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"2409:14:115"},"nodeType":"YulFunctionCall","src":"2409:65:115"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"2402:3:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2483:16:115","value":{"name":"dst","nodeType":"YulIdentifier","src":"2496:3:115"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"2487:5:115","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2515:3:115"},{"name":"_3","nodeType":"YulIdentifier","src":"2520:2:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2508:6:115"},"nodeType":"YulFunctionCall","src":"2508:15:115"},"nodeType":"YulExpressionStatement","src":"2508:15:115"},{"nodeType":"YulAssignment","src":"2532:19:115","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2543:3:115"},{"name":"_4","nodeType":"YulIdentifier","src":"2548:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2539:3:115"},"nodeType":"YulFunctionCall","src":"2539:12:115"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"2532:3:115"}]},{"nodeType":"YulVariableDeclaration","src":"2560:22:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2575:2:115"},{"name":"_4","nodeType":"YulIdentifier","src":"2579:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2571:3:115"},"nodeType":"YulFunctionCall","src":"2571:11:115"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"2564:3:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"2637:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2646:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2654:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2639:6:115"},"nodeType":"YulFunctionCall","src":"2639:22:115"},"nodeType":"YulExpressionStatement","src":"2639:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2605:2:115"},{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2613:2:115"},{"name":"_4","nodeType":"YulIdentifier","src":"2617:2:115"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2609:3:115"},"nodeType":"YulFunctionCall","src":"2609:11:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2601:3:115"},"nodeType":"YulFunctionCall","src":"2601:20:115"},{"name":"_4","nodeType":"YulIdentifier","src":"2623:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2597:3:115"},"nodeType":"YulFunctionCall","src":"2597:29:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2628:7:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2594:2:115"},"nodeType":"YulFunctionCall","src":"2594:42:115"},"nodeType":"YulIf","src":"2591:2:115"},{"nodeType":"YulVariableDeclaration","src":"2672:15:115","value":{"name":"value0","nodeType":"YulIdentifier","src":"2681:6:115"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"2676:1:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"2741:126:115","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2762:3:115"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2788:3:115"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"2767:20:115"},"nodeType":"YulFunctionCall","src":"2767:25:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2755:6:115"},"nodeType":"YulFunctionCall","src":"2755:38:115"},"nodeType":"YulExpressionStatement","src":"2755:38:115"},{"nodeType":"YulAssignment","src":"2806:19:115","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2817:3:115"},{"name":"_4","nodeType":"YulIdentifier","src":"2822:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2813:3:115"},"nodeType":"YulFunctionCall","src":"2813:12:115"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"2806:3:115"}]},{"nodeType":"YulAssignment","src":"2838:19:115","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2849:3:115"},{"name":"_4","nodeType":"YulIdentifier","src":"2854:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2845:3:115"},"nodeType":"YulFunctionCall","src":"2845:12:115"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"2838:3:115"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2707:1:115"},{"name":"_3","nodeType":"YulIdentifier","src":"2710:2:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2704:2:115"},"nodeType":"YulFunctionCall","src":"2704:9:115"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2714:18:115","statements":[{"nodeType":"YulAssignment","src":"2716:14:115","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2725:1:115"},{"kind":"number","nodeType":"YulLiteral","src":"2728:1:115","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2721:3:115"},"nodeType":"YulFunctionCall","src":"2721:9:115"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"2716:1:115"}]}]},"pre":{"nodeType":"YulBlock","src":"2700:3:115","statements":[]},"src":"2696:171:115"},{"nodeType":"YulAssignment","src":"2876:15:115","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"2886:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2876:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"2900:48:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2933:9:115"},{"name":"_4","nodeType":"YulIdentifier","src":"2944:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2929:3:115"},"nodeType":"YulFunctionCall","src":"2929:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2916:12:115"},"nodeType":"YulFunctionCall","src":"2916:32:115"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"2904:8:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"2977:26:115","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2986:6:115"},{"name":"value1","nodeType":"YulIdentifier","src":"2994:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2979:6:115"},"nodeType":"YulFunctionCall","src":"2979:22:115"},"nodeType":"YulExpressionStatement","src":"2979:22:115"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"2963:8:115"},{"name":"_1","nodeType":"YulIdentifier","src":"2973:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2960:2:115"},"nodeType":"YulFunctionCall","src":"2960:16:115"},"nodeType":"YulIf","src":"2957:2:115"},{"nodeType":"YulAssignment","src":"3012:77:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3059:9:115"},{"name":"offset_1","nodeType":"YulIdentifier","src":"3070:8:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3055:3:115"},"nodeType":"YulFunctionCall","src":"3055:24:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3081:7:115"}],"functionName":{"name":"abi_decode_t_array$_t_int24_$dyn","nodeType":"YulIdentifier","src":"3022:32:115"},"nodeType":"YulFunctionCall","src":"3022:67:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3012:6:115"}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_int24_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1966:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1977:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1989:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1997:6:115","type":""}],"src":"1873:1222:115"},{"body":{"nodeType":"YulBlock","src":"3230:1277:115","statements":[{"nodeType":"YulVariableDeclaration","src":"3240:12:115","value":{"kind":"number","nodeType":"YulLiteral","src":"3250:2:115","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3244:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"3297:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3306:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3314:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3299:6:115"},"nodeType":"YulFunctionCall","src":"3299:22:115"},"nodeType":"YulExpressionStatement","src":"3299:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3272:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"3281:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3268:3:115"},"nodeType":"YulFunctionCall","src":"3268:23:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3293:2:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3264:3:115"},"nodeType":"YulFunctionCall","src":"3264:32:115"},"nodeType":"YulIf","src":"3261:2:115"},{"nodeType":"YulVariableDeclaration","src":"3332:37:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3359:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3346:12:115"},"nodeType":"YulFunctionCall","src":"3346:23:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3336:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3378:28:115","value":{"kind":"number","nodeType":"YulLiteral","src":"3388:18:115","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3382:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"3433:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3442:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3450:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3435:6:115"},"nodeType":"YulFunctionCall","src":"3435:22:115"},"nodeType":"YulExpressionStatement","src":"3435:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3421:6:115"},{"name":"_2","nodeType":"YulIdentifier","src":"3429:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3418:2:115"},"nodeType":"YulFunctionCall","src":"3418:14:115"},"nodeType":"YulIf","src":"3415:2:115"},{"nodeType":"YulVariableDeclaration","src":"3468:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3482:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"3493:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3478:3:115"},"nodeType":"YulFunctionCall","src":"3478:22:115"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"3472:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"3548:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3557:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3565:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3550:6:115"},"nodeType":"YulFunctionCall","src":"3550:22:115"},"nodeType":"YulExpressionStatement","src":"3550:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3527:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"3531:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3523:3:115"},"nodeType":"YulFunctionCall","src":"3523:13:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3538:7:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3519:3:115"},"nodeType":"YulFunctionCall","src":"3519:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3512:6:115"},"nodeType":"YulFunctionCall","src":"3512:35:115"},"nodeType":"YulIf","src":"3509:2:115"},{"nodeType":"YulVariableDeclaration","src":"3583:26:115","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3606:2:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3593:12:115"},"nodeType":"YulFunctionCall","src":"3593:16:115"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"3587:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3618:76:115","value":{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"3690:2:115"}],"functionName":{"name":"array_allocation_size_t_array$_t_address_$dyn","nodeType":"YulIdentifier","src":"3644:45:115"},"nodeType":"YulFunctionCall","src":"3644:49:115"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"3629:14:115"},"nodeType":"YulFunctionCall","src":"3629:65:115"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"3622:3:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3703:16:115","value":{"name":"dst","nodeType":"YulIdentifier","src":"3716:3:115"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"3707:5:115","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3735:3:115"},{"name":"_4","nodeType":"YulIdentifier","src":"3740:2:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3728:6:115"},"nodeType":"YulFunctionCall","src":"3728:15:115"},"nodeType":"YulExpressionStatement","src":"3728:15:115"},{"nodeType":"YulAssignment","src":"3752:19:115","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3763:3:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3768:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3759:3:115"},"nodeType":"YulFunctionCall","src":"3759:12:115"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3752:3:115"}]},{"nodeType":"YulVariableDeclaration","src":"3780:22:115","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3795:2:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3799:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3791:3:115"},"nodeType":"YulFunctionCall","src":"3791:11:115"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"3784:3:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3811:14:115","value":{"kind":"number","nodeType":"YulLiteral","src":"3821:4:115","type":"","value":"0x40"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"3815:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"3880:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3889:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3897:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3882:6:115"},"nodeType":"YulFunctionCall","src":"3882:22:115"},"nodeType":"YulExpressionStatement","src":"3882:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3848:2:115"},{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"3856:2:115"},{"name":"_5","nodeType":"YulIdentifier","src":"3860:2:115"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3852:3:115"},"nodeType":"YulFunctionCall","src":"3852:11:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3844:3:115"},"nodeType":"YulFunctionCall","src":"3844:20:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3866:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3840:3:115"},"nodeType":"YulFunctionCall","src":"3840:29:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3871:7:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3837:2:115"},"nodeType":"YulFunctionCall","src":"3837:42:115"},"nodeType":"YulIf","src":"3834:2:115"},{"nodeType":"YulVariableDeclaration","src":"3915:15:115","value":{"name":"value0","nodeType":"YulIdentifier","src":"3924:6:115"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3919:1:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"3984:493:115","statements":[{"body":{"nodeType":"YulBlock","src":"4028:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4037:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"4045:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4030:6:115"},"nodeType":"YulFunctionCall","src":"4030:22:115"},"nodeType":"YulExpressionStatement","src":"4030:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4009:7:115"},{"name":"src","nodeType":"YulIdentifier","src":"4018:3:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4005:3:115"},"nodeType":"YulFunctionCall","src":"4005:17:115"},{"name":"_5","nodeType":"YulIdentifier","src":"4024:2:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4001:3:115"},"nodeType":"YulFunctionCall","src":"4001:26:115"},"nodeType":"YulIf","src":"3998:2:115"},{"nodeType":"YulVariableDeclaration","src":"4067:23:115","value":{"arguments":[{"name":"_5","nodeType":"YulIdentifier","src":"4087:2:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4081:5:115"},"nodeType":"YulFunctionCall","src":"4081:9:115"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"4071:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4103:33:115","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4125:6:115"},{"name":"_5","nodeType":"YulIdentifier","src":"4133:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4121:3:115"},"nodeType":"YulFunctionCall","src":"4121:15:115"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"4107:10:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"4199:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"4201:7:115"},"nodeType":"YulFunctionCall","src":"4201:9:115"},"nodeType":"YulExpressionStatement","src":"4201:9:115"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4158:10:115"},{"name":"_2","nodeType":"YulIdentifier","src":"4170:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4155:2:115"},"nodeType":"YulFunctionCall","src":"4155:18:115"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4178:10:115"},{"name":"memPtr","nodeType":"YulIdentifier","src":"4190:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4175:2:115"},"nodeType":"YulFunctionCall","src":"4175:22:115"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4152:2:115"},"nodeType":"YulFunctionCall","src":"4152:46:115"},"nodeType":"YulIf","src":"4149:2:115"},{"expression":{"arguments":[{"name":"_5","nodeType":"YulIdentifier","src":"4232:2:115"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4236:10:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4225:6:115"},"nodeType":"YulFunctionCall","src":"4225:22:115"},"nodeType":"YulExpressionStatement","src":"4225:22:115"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4267:6:115"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4294:3:115"}],"functionName":{"name":"abi_decode_t_int24","nodeType":"YulIdentifier","src":"4275:18:115"},"nodeType":"YulFunctionCall","src":"4275:23:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4260:6:115"},"nodeType":"YulFunctionCall","src":"4260:39:115"},"nodeType":"YulExpressionStatement","src":"4260:39:115"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4323:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"4331:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4319:3:115"},"nodeType":"YulFunctionCall","src":"4319:15:115"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4361:3:115"},{"name":"_1","nodeType":"YulIdentifier","src":"4366:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4357:3:115"},"nodeType":"YulFunctionCall","src":"4357:12:115"}],"functionName":{"name":"abi_decode_t_uint128","nodeType":"YulIdentifier","src":"4336:20:115"},"nodeType":"YulFunctionCall","src":"4336:34:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4312:6:115"},"nodeType":"YulFunctionCall","src":"4312:59:115"},"nodeType":"YulExpressionStatement","src":"4312:59:115"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4391:3:115"},{"name":"memPtr","nodeType":"YulIdentifier","src":"4396:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4384:6:115"},"nodeType":"YulFunctionCall","src":"4384:19:115"},"nodeType":"YulExpressionStatement","src":"4384:19:115"},{"nodeType":"YulAssignment","src":"4416:19:115","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4427:3:115"},{"name":"_1","nodeType":"YulIdentifier","src":"4432:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4423:3:115"},"nodeType":"YulFunctionCall","src":"4423:12:115"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"4416:3:115"}]},{"nodeType":"YulAssignment","src":"4448:19:115","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4459:3:115"},{"name":"_5","nodeType":"YulIdentifier","src":"4464:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4455:3:115"},"nodeType":"YulFunctionCall","src":"4455:12:115"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"4448:3:115"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3950:1:115"},{"name":"_4","nodeType":"YulIdentifier","src":"3953:2:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3947:2:115"},"nodeType":"YulFunctionCall","src":"3947:9:115"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3957:18:115","statements":[{"nodeType":"YulAssignment","src":"3959:14:115","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3968:1:115"},{"kind":"number","nodeType":"YulLiteral","src":"3971:1:115","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3964:3:115"},"nodeType":"YulFunctionCall","src":"3964:9:115"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3959:1:115"}]}]},"pre":{"nodeType":"YulBlock","src":"3943:3:115","statements":[]},"src":"3939:538:115"},{"nodeType":"YulAssignment","src":"4486:15:115","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"4496:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4486:6:115"}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_WeightedTickData_$13997_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3196:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3207:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3219:6:115","type":""}],"src":"3100:1407:115"},{"body":{"nodeType":"YulBlock","src":"4631:304:115","statements":[{"body":{"nodeType":"YulBlock","src":"4678:26:115","statements":[{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"4687:6:115"},{"name":"value2","nodeType":"YulIdentifier","src":"4695:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4680:6:115"},"nodeType":"YulFunctionCall","src":"4680:22:115"},"nodeType":"YulExpressionStatement","src":"4680:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4652:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"4661:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4648:3:115"},"nodeType":"YulFunctionCall","src":"4648:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"4673:3:115","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4644:3:115"},"nodeType":"YulFunctionCall","src":"4644:33:115"},"nodeType":"YulIf","src":"4641:2:115"},{"nodeType":"YulAssignment","src":"4713:39:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4742:9:115"}],"functionName":{"name":"abi_decode_t_int24","nodeType":"YulIdentifier","src":"4723:18:115"},"nodeType":"YulFunctionCall","src":"4723:29:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4713:6:115"}]},{"nodeType":"YulAssignment","src":"4761:50:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4796:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4807:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4792:3:115"},"nodeType":"YulFunctionCall","src":"4792:18:115"}],"functionName":{"name":"abi_decode_t_uint128","nodeType":"YulIdentifier","src":"4771:20:115"},"nodeType":"YulFunctionCall","src":"4771:40:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4761:6:115"}]},{"nodeType":"YulAssignment","src":"4820:50:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4855:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4866:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4851:3:115"},"nodeType":"YulFunctionCall","src":"4851:18:115"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4830:20:115"},"nodeType":"YulFunctionCall","src":"4830:40:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4820:6:115"}]},{"nodeType":"YulAssignment","src":"4879:50:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4914:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4925:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4910:3:115"},"nodeType":"YulFunctionCall","src":"4910:18:115"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4889:20:115"},"nodeType":"YulFunctionCall","src":"4889:40:115"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4879:6:115"}]}]},"name":"abi_decode_tuple_t_int24t_uint128t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4573:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4584:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4596:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4604:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4612:6:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4620:6:115","type":""}],"src":"4512:423:115"},{"body":{"nodeType":"YulBlock","src":"5037:91:115","statements":[{"nodeType":"YulAssignment","src":"5047:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5059:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5070:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5055:3:115"},"nodeType":"YulFunctionCall","src":"5055:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5047:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5089:9:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5111:1:115","type":"","value":"2"},{"name":"value0","nodeType":"YulIdentifier","src":"5114:6:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"5100:10:115"},"nodeType":"YulFunctionCall","src":"5100:21:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5082:6:115"},"nodeType":"YulFunctionCall","src":"5082:40:115"},"nodeType":"YulExpressionStatement","src":"5082:40:115"}]},"name":"abi_encode_tuple_t_int24__to_t_int24__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5006:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5017:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5028:4:115","type":""}],"src":"4940:188:115"},{"body":{"nodeType":"YulBlock","src":"5258:175:115","statements":[{"nodeType":"YulAssignment","src":"5268:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5280:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5291:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5276:3:115"},"nodeType":"YulFunctionCall","src":"5276:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5268:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5310:9:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5332:1:115","type":"","value":"2"},{"name":"value0","nodeType":"YulIdentifier","src":"5335:6:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"5321:10:115"},"nodeType":"YulFunctionCall","src":"5321:21:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5303:6:115"},"nodeType":"YulFunctionCall","src":"5303:40:115"},"nodeType":"YulExpressionStatement","src":"5303:40:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5363:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5374:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5359:3:115"},"nodeType":"YulFunctionCall","src":"5359:18:115"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"5383:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"5391:34:115","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5379:3:115"},"nodeType":"YulFunctionCall","src":"5379:47:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5352:6:115"},"nodeType":"YulFunctionCall","src":"5352:75:115"},"nodeType":"YulExpressionStatement","src":"5352:75:115"}]},"name":"abi_encode_tuple_t_int24_t_uint128__to_t_int24_t_uint128__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5219:9:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5230:6:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5238:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5249:4:115","type":""}],"src":"5133:300:115"},{"body":{"nodeType":"YulBlock","src":"5537:76:115","statements":[{"nodeType":"YulAssignment","src":"5547:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5559:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5570:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5555:3:115"},"nodeType":"YulFunctionCall","src":"5555:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5547:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5589:9:115"},{"name":"value0","nodeType":"YulIdentifier","src":"5600:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5582:6:115"},"nodeType":"YulFunctionCall","src":"5582:25:115"},"nodeType":"YulExpressionStatement","src":"5582:25:115"}]},"name":"abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5506:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5517:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5528:4:115","type":""}],"src":"5438:175:115"},{"body":{"nodeType":"YulBlock","src":"5719:76:115","statements":[{"nodeType":"YulAssignment","src":"5729:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5741:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5752:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5737:3:115"},"nodeType":"YulFunctionCall","src":"5737:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5729:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5771:9:115"},{"name":"value0","nodeType":"YulIdentifier","src":"5782:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5764:6:115"},"nodeType":"YulFunctionCall","src":"5764:25:115"},"nodeType":"YulExpressionStatement","src":"5764:25:115"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5688:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5699:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5710:4:115","type":""}],"src":"5618:177:115"},{"body":{"nodeType":"YulBlock","src":"5925:166:115","statements":[{"nodeType":"YulAssignment","src":"5935:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5947:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"5958:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5943:3:115"},"nodeType":"YulFunctionCall","src":"5943:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5935:4:115"}]},{"nodeType":"YulVariableDeclaration","src":"5970:20:115","value":{"kind":"number","nodeType":"YulLiteral","src":"5980:10:115","type":"","value":"0xffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5974:2:115","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6006:9:115"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6021:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"6029:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6017:3:115"},"nodeType":"YulFunctionCall","src":"6017:15:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5999:6:115"},"nodeType":"YulFunctionCall","src":"5999:34:115"},"nodeType":"YulExpressionStatement","src":"5999:34:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6053:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"6064:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6049:3:115"},"nodeType":"YulFunctionCall","src":"6049:18:115"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6073:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"6081:2:115"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6069:3:115"},"nodeType":"YulFunctionCall","src":"6069:15:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6042:6:115"},"nodeType":"YulFunctionCall","src":"6042:43:115"},"nodeType":"YulExpressionStatement","src":"6042:43:115"}]},"name":"abi_encode_tuple_t_uint32_t_uint32__to_t_uint32_t_uint32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5886:9:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5897:6:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5905:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5916:4:115","type":""}],"src":"5800:291:115"},{"body":{"nodeType":"YulBlock","src":"6140:198:115","statements":[{"nodeType":"YulAssignment","src":"6150:19:115","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6166:2:115","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6160:5:115"},"nodeType":"YulFunctionCall","src":"6160:9:115"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6150:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"6178:35:115","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6200:6:115"},{"name":"size","nodeType":"YulIdentifier","src":"6208:4:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6196:3:115"},"nodeType":"YulFunctionCall","src":"6196:17:115"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"6182:10:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"6288:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"6290:7:115"},"nodeType":"YulFunctionCall","src":"6290:9:115"},"nodeType":"YulExpressionStatement","src":"6290:9:115"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"6231:10:115"},{"kind":"number","nodeType":"YulLiteral","src":"6243:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6228:2:115"},"nodeType":"YulFunctionCall","src":"6228:34:115"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"6267:10:115"},{"name":"memPtr","nodeType":"YulIdentifier","src":"6279:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6264:2:115"},"nodeType":"YulFunctionCall","src":"6264:22:115"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6225:2:115"},"nodeType":"YulFunctionCall","src":"6225:62:115"},"nodeType":"YulIf","src":"6222:2:115"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6317:2:115","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"6321:10:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6310:6:115"},"nodeType":"YulFunctionCall","src":"6310:22:115"},"nodeType":"YulExpressionStatement","src":"6310:22:115"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"6120:4:115","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"6129:6:115","type":""}],"src":"6096:242:115"},{"body":{"nodeType":"YulBlock","src":"6418:108:115","statements":[{"body":{"nodeType":"YulBlock","src":"6462:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"6464:7:115"},"nodeType":"YulFunctionCall","src":"6464:9:115"},"nodeType":"YulExpressionStatement","src":"6464:9:115"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6434:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6442:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6431:2:115"},"nodeType":"YulFunctionCall","src":"6431:30:115"},"nodeType":"YulIf","src":"6428:2:115"},{"nodeType":"YulAssignment","src":"6484:36:115","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6500:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"6508:4:115","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6496:3:115"},"nodeType":"YulFunctionCall","src":"6496:17:115"},{"kind":"number","nodeType":"YulLiteral","src":"6515:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6492:3:115"},"nodeType":"YulFunctionCall","src":"6492:28:115"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"6484:4:115"}]}]},"name":"array_allocation_size_t_array$_t_address_$dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"6398:6:115","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"6409:4:115","type":""}],"src":"6343:183:115"}]},"contents":"{\n    { }\n    function abi_decode_t_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_t_array$_t_int24_$dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let dst := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let src := add(offset, _2)\n        if gt(add(add(offset, mul(_1, _2)), _2), end) { revert(array, array) }\n        let i := array\n        for { } lt(i, _1) { i := add(i, 1) }\n        {\n            mstore(dst, abi_decode_t_int24(src))\n            dst := add(dst, _2)\n            src := add(src, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_t_int24(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, signextend(2, value))) { revert(0, 0) }\n    }\n    function abi_decode_t_uint128(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_uint32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n        value0 := abi_decode_t_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(value1, value1) }\n        value1 := value\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_int24_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _3 := calldataload(_2)\n        let _4 := 0x20\n        let dst := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(_3))\n        let dst_1 := dst\n        mstore(dst, _3)\n        dst := add(dst, _4)\n        let src := add(_2, _4)\n        if gt(add(add(_2, mul(_3, _4)), _4), dataEnd) { revert(value0, value0) }\n        let i := value0\n        for { } lt(i, _3) { i := add(i, 1) }\n        {\n            mstore(dst, abi_decode_t_address(src))\n            dst := add(dst, _4)\n            src := add(src, _4)\n        }\n        value0 := dst_1\n        let offset_1 := calldataload(add(headStart, _4))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_array$_t_int24_$dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_array$_t_struct$_WeightedTickData_$13997_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0\n    {\n        let _1 := 32\n        if slt(sub(dataEnd, headStart), _1) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _2 := 0xffffffffffffffff\n        if gt(offset, _2) { revert(value0, value0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _4 := calldataload(_3)\n        let dst := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(_4))\n        let dst_1 := dst\n        mstore(dst, _4)\n        dst := add(dst, _1)\n        let src := add(_3, _1)\n        let _5 := 0x40\n        if gt(add(add(_3, mul(_4, _5)), _1), dataEnd) { revert(value0, value0) }\n        let i := value0\n        for { } lt(i, _4) { i := add(i, 1) }\n        {\n            if slt(sub(dataEnd, src), _5) { revert(value0, value0) }\n            let memPtr := mload(_5)\n            let newFreePtr := add(memPtr, _5)\n            if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { invalid() }\n            mstore(_5, newFreePtr)\n            mstore(memPtr, abi_decode_t_int24(src))\n            mstore(add(memPtr, _1), abi_decode_t_uint128(add(src, _1)))\n            mstore(dst, memPtr)\n            dst := add(dst, _1)\n            src := add(src, _5)\n        }\n        value0 := dst_1\n    }\n    function abi_decode_tuple_t_int24t_uint128t_addresst_address(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value2, value2) }\n        value0 := abi_decode_t_int24(headStart)\n        value1 := abi_decode_t_uint128(add(headStart, 32))\n        value2 := abi_decode_t_address(add(headStart, 64))\n        value3 := abi_decode_t_address(add(headStart, 96))\n    }\n    function abi_encode_tuple_t_int24__to_t_int24__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, signextend(2, value0))\n    }\n    function abi_encode_tuple_t_int24_t_uint128__to_t_int24_t_uint128__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, signextend(2, value0))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint32_t_uint32__to_t_uint32_t_uint32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function allocateMemory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, size)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_t_array$_t_address_$dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        size := add(mul(length, 0x20), 0x20)\n    }\n}","id":115,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c8063824134891161005b57806382413489146100fd578063ab34b0fc14610110578063bbe8f41914610130578063e6c4fbe01461014357610088565b8063333b19a81461008d57806343c57a27146100b75780636a816ff9146100d75780637059b38a146100ea575b600080fd5b6100a061009b366004611558565b610164565b6040516100ae9291906117a5565b60405180910390f35b6100ca6100c5366004611744565b61017a565b6040516100ae91906117ca565b6100ca6100e5366004611744565b610191565b6100ca6100f83660046115b0565b6101b0565b6100a061010b366004611572565b6101c3565b61012361011e36600461166e565b6101db565b6040516100ae9190611797565b6100ca61013e366004611572565b6101ee565b610156610151366004611558565b61020a565b6040516100ae9291906117d3565b6000806101708361021f565b915091505b915091565b60006101888585858561060e565b95945050505050565b6000805a90506101a38686868661060e565b505a900395945050505050565b60006101bc83836107b7565b9392505050565b6000806101d084846108e7565b915091509250929050565b60006101e682610d18565b90505b919050565b6000805a90506101fe84846108e7565b50505a90039392505050565b60008061021683610e04565b93429350915050565b60008060008060008573ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561026d57600080fd5b505afa158015610281573d6000803e3d6000fd5b505050506040513d60e081101561029757600080fd5b50602081015160408201516060909201519094509092509050600161ffff82161161032357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f4e454f0000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60008060008873ffffffffffffffffffffffffffffffffffffffff1663252c09d7866040518263ffffffff1660e01b8152600401808261ffff16815260200191505060806040518083038186803b15801561037d57600080fd5b505afa158015610391573d6000803e3d6000fd5b505050506040513d60808110156103a757600080fd5b508051602082015160409092015190945090925090504263ffffffff9081169084161461045257858973ffffffffffffffffffffffffffffffffffffffff16631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b15801561041557600080fd5b505afa158015610429573d6000803e3d6000fd5b505050506040513d602081101561043f57600080fd5b5051909850965061017595505050505050565b60008461ffff1660018661ffff168861ffff1601038161046e57fe5b0690506000806000808d73ffffffffffffffffffffffffffffffffffffffff1663252c09d7866040518263ffffffff1660e01b81526004018082815260200191505060806040518083038186803b1580156104c857600080fd5b505afa1580156104dc573d6000803e3d6000fd5b505050506040513d60808110156104f257600080fd5b50805160208201516040830151606090930151919650945090925090508061057b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f4f4e490000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b83880363ffffffff811684890360060b8161059257fe5b059b50600077ffffffffffffffffffffffffffffffffffffffff0000000084890360201b1663ffffffff831673ffffffffffffffffffffffffffffffffffffffff0277ffffffffffffffffffffffffffffffffffffffffffffffff16816105f557fe5b9d9f50909c049c50505050505050505050505050915091565b60008061061a8661102f565b90506fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff8216116106e85773ffffffffffffffffffffffffffffffffffffffff808216800290848116908616106106aa576106a57801000000000000000000000000000000000000000000000000876fffffffffffffffffffffffffffffffff16836113c2565b6106e0565b6106e081876fffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000006113c2565b9250506107ae565b600061071473ffffffffffffffffffffffffffffffffffffffff831680680100000000000000006113c2565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161061077c57610777700100000000000000000000000000000000876fffffffffffffffffffffffffffffffff16836113c2565b6107aa565b6107aa81876fffffffffffffffffffffffffffffffff167001000000000000000000000000000000006113c2565b9250505b50949350505050565b6000815160018451031461082c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f444c000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60015b825181116108e05783818151811061084357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1684600183038151811061087057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16106108b7578260018203815181106108a257fe5b602002602001015160020b82039150816108d7565b8260018203815181106108c657fe5b602002602001015160020b82019150815b5060010161082f565b5092915050565b60008063ffffffff831661095c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f4250000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b604080516002808252606082018352600092602083019080368337019050509050838160008151811061098b57fe5b602002602001019063ffffffff16908163ffffffff16815250506000816001815181106109b457fe5b63ffffffff9092166020928302919091018201526040517f883bdbfd00000000000000000000000000000000000000000000000000000000815260048101828152835160248301528351600093849373ffffffffffffffffffffffffffffffffffffffff8b169363883bdbfd9388939192839260449091019185820191028083838b5b83811015610a4f578181015183820152602001610a37565b505050509050019250505060006040518083038186803b158015610a7257600080fd5b505afa158015610a86573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040908152811015610acd57600080fd5b8101908080516040519392919084640100000000821115610aed57600080fd5b908301906020820185811115610b0257600080fd5b8251866020820283011164010000000082111715610b1f57600080fd5b82525081516020918201928201910280838360005b83811015610b4c578181015183820152602001610b34565b5050505090500160405260200180516040519392919084640100000000821115610b7557600080fd5b908301906020820185811115610b8a57600080fd5b8251866020820283011164010000000082111715610ba757600080fd5b82525081516020918201928201910280838360005b83811015610bd4578181015183820152602001610bbc565b5050505090500160405250505091509150600082600081518110610bf457fe5b602002602001015183600181518110610c0957fe5b6020026020010151039050600082600081518110610c2357fe5b602002602001015183600181518110610c3857fe5b60200260200101510390508763ffffffff168260060b81610c5557fe5b05965060008260060b128015610c7f57508763ffffffff168260060b81610c7857fe5b0760060b15155b15610caa577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909601955b63ffffffff881673ffffffffffffffffffffffffffffffffffffffff0277ffffffffffffffffffffffffffffffffffffffff00000000602083901b1677ffffffffffffffffffffffffffffffffffffffffffffffff821681610d0857fe5b0496505050505050509250929050565b6000806000805b8451811015610dad57848181518110610d3457fe5b6020026020010151602001516fffffffffffffffffffffffffffffffff16858281518110610d5e57fe5b60200260200101516000015160020b0283019250848181518110610d7e57fe5b6020026020010151602001516fffffffffffffffffffffffffffffffff16820191508080600101915050610d1f565b50808281610db757fe5b059250600082128015610dd25750808281610dce57fe5b0715155b15610dfd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201915b5050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610e4f57600080fd5b505afa158015610e63573d6000803e3d6000fd5b505050506040513d60e0811015610e7957600080fd5b506040810151606090910151909250905061ffff8116610efa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f4e49000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1663252c09d78461ffff168660010161ffff1681610f2d57fe5b066040518263ffffffff1660e01b8152600401808261ffff16815260200191505060806040518083038186803b158015610f6657600080fd5b505afa158015610f7a573d6000803e3d6000fd5b505050506040513d6080811015610f9057600080fd5b508051606090910151909250905080611024578573ffffffffffffffffffffffffffffffffffffffff1663252c09d760006040518263ffffffff1660e01b81526004018082815260200191505060806040518083038186803b158015610ff557600080fd5b505afa158015611009573d6000803e3d6000fd5b505050506040513d608081101561101f57600080fd5b505191505b504203949350505050565b60008060008360020b12611046578260020b61104e565b8260020b6000035b9050620d89e88111156110c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f5400000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000600182166110e3577001000000000000000000000000000000006110f5565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611129576ffff97272373d413259a46990580e213a0260801c5b6004821615611148576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611167576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611186576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156111a5576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156111c4576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156111e3576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611203576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611223576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611243576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611263576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611283576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156112a3576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156112c3576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156112e3576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611304576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611324576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611343576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611360576b048a170391f7dc42444e8fa20260801c5b60008460020b131561139957807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8161139557fe5b0490505b6401000000008106156113ad5760016113b0565b60005b60ff16602082901c0192505050919050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870986860292508281109083900303905080611416576000841161140b57600080fd5b5082900490506101bc565b80841161142257600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101e957600080fd5b600082601f8301126114c3578081fd5b813560206114d86114d38361180e565b6117ea565b82815281810190858301838502870184018810156114f4578586fd5b855b858110156115195761150782611526565b845292840192908401906001016114f6565b5090979650505050505050565b8035600281900b81146101e957600080fd5b80356fffffffffffffffffffffffffffffffff811681146101e957600080fd5b600060208284031215611569578081fd5b6101bc8261148f565b60008060408385031215611584578081fd5b61158d8361148f565b9150602083013563ffffffff811681146115a5578182fd5b809150509250929050565b600080604083850312156115c2578182fd5b823567ffffffffffffffff808211156115d9578384fd5b818501915085601f8301126115ec578384fd5b813560206115fc6114d38361180e565b82815281810190858301838502870184018b1015611618578889fd5b8896505b848710156116415761162d8161148f565b83526001969096019591830191830161161c565b5096505086013592505080821115611657578283fd5b50611664858286016114b3565b9150509250929050565b60006020808385031215611680578182fd5b823567ffffffffffffffff80821115611697578384fd5b818501915085601f8301126116aa578384fd5b81356116b86114d38261180e565b818152848101908486016040808502870188018b10156116d6578889fd5b8896505b848710156117355780828c0312156116f0578889fd5b8051818101818110888211171561170357fe5b825261170e83611526565b815261171b898401611538565b818a015284526001969096019592870192908101906116da565b50909998505050505050505050565b60008060008060808587031215611759578182fd5b61176285611526565b935061177060208601611538565b925061177e6040860161148f565b915061178c6060860161148f565b905092959194509250565b60029190910b815260200190565b60029290920b82526fffffffffffffffffffffffffffffffff16602082015260400190565b90815260200190565b63ffffffff92831681529116602082015260400190565b60405181810167ffffffffffffffff8111828210171561180657fe5b604052919050565b600067ffffffffffffffff82111561182257fe5b506020908102019056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x82413489 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x82413489 EQ PUSH2 0xFD JUMPI DUP1 PUSH4 0xAB34B0FC EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0xBBE8F419 EQ PUSH2 0x130 JUMPI DUP1 PUSH4 0xE6C4FBE0 EQ PUSH2 0x143 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x333B19A8 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x43C57A27 EQ PUSH2 0xB7 JUMPI DUP1 PUSH4 0x6A816FF9 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x7059B38A EQ PUSH2 0xEA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x1558 JUMP JUMPDEST PUSH2 0x164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAE SWAP3 SWAP2 SWAP1 PUSH2 0x17A5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCA PUSH2 0xC5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1744 JUMP JUMPDEST PUSH2 0x17A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAE SWAP2 SWAP1 PUSH2 0x17CA JUMP JUMPDEST PUSH2 0xCA PUSH2 0xE5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1744 JUMP JUMPDEST PUSH2 0x191 JUMP JUMPDEST PUSH2 0xCA PUSH2 0xF8 CALLDATASIZE PUSH1 0x4 PUSH2 0x15B0 JUMP JUMPDEST PUSH2 0x1B0 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x10B CALLDATASIZE PUSH1 0x4 PUSH2 0x1572 JUMP JUMPDEST PUSH2 0x1C3 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x11E CALLDATASIZE PUSH1 0x4 PUSH2 0x166E JUMP JUMPDEST PUSH2 0x1DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAE SWAP2 SWAP1 PUSH2 0x1797 JUMP JUMPDEST PUSH2 0xCA PUSH2 0x13E CALLDATASIZE PUSH1 0x4 PUSH2 0x1572 JUMP JUMPDEST PUSH2 0x1EE JUMP JUMPDEST PUSH2 0x156 PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x1558 JUMP JUMPDEST PUSH2 0x20A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAE SWAP3 SWAP2 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x170 DUP4 PUSH2 0x21F JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x188 DUP6 DUP6 DUP6 DUP6 PUSH2 0x60E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x1A3 DUP7 DUP7 DUP7 DUP7 PUSH2 0x60E JUMP JUMPDEST POP GAS SWAP1 SUB SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BC DUP4 DUP4 PUSH2 0x7B7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D0 DUP5 DUP5 PUSH2 0x8E7 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E6 DUP3 PUSH2 0xD18 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x1FE DUP5 DUP5 PUSH2 0x8E7 JUMP JUMPDEST POP POP GAS SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x216 DUP4 PUSH2 0xE04 JUMP JUMPDEST SWAP4 TIMESTAMP SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x281 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x297 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH2 0xFFFF DUP3 AND GT PUSH2 0x323 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E454F0000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x252C09D7 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x391 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x3A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP TIMESTAMP PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x452 JUMPI DUP6 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1A686502 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x429 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 SWAP9 POP SWAP7 POP PUSH2 0x175 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0xFFFF AND PUSH1 0x1 DUP7 PUSH2 0xFFFF AND DUP9 PUSH2 0xFFFF AND ADD SUB DUP2 PUSH2 0x46E JUMPI INVALID JUMPDEST MOD SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x252C09D7 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x4F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP4 ADD MLOAD SWAP2 SWAP7 POP SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP DUP1 PUSH2 0x57B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F4E490000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 DUP9 SUB PUSH4 0xFFFFFFFF DUP2 AND DUP5 DUP10 SUB PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0x592 JUMPI INVALID JUMPDEST SDIV SWAP12 POP PUSH1 0x0 PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 DUP5 DUP10 SUB PUSH1 0x20 SHL AND PUSH4 0xFFFFFFFF DUP4 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH2 0x5F5 JUMPI INVALID JUMPDEST SWAP14 SWAP16 POP SWAP1 SWAP13 DIV SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x61A DUP7 PUSH2 0x102F JUMP JUMPDEST SWAP1 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND GT PUSH2 0x6E8 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP1 MUL SWAP1 DUP5 DUP2 AND SWAP1 DUP7 AND LT PUSH2 0x6AA JUMPI PUSH2 0x6A5 PUSH25 0x1000000000000000000000000000000000000000000000000 DUP8 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH2 0x13C2 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST PUSH2 0x6E0 DUP2 DUP8 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH25 0x1000000000000000000000000000000000000000000000000 PUSH2 0x13C2 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x7AE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x714 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP1 PUSH9 0x10000000000000000 PUSH2 0x13C2 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x77C JUMPI PUSH2 0x777 PUSH17 0x100000000000000000000000000000000 DUP8 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH2 0x13C2 JUMP JUMPDEST PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x7AA DUP2 DUP8 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH17 0x100000000000000000000000000000000 PUSH2 0x13C2 JUMP JUMPDEST SWAP3 POP POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 DUP5 MLOAD SUB EQ PUSH2 0x82C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x444C000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 JUMPDEST DUP3 MLOAD DUP2 GT PUSH2 0x8E0 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x843 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x1 DUP4 SUB DUP2 MLOAD DUP2 LT PUSH2 0x870 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x8B7 JUMPI DUP3 PUSH1 0x1 DUP3 SUB DUP2 MLOAD DUP2 LT PUSH2 0x8A2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP3 SUB SWAP2 POP DUP2 PUSH2 0x8D7 JUMP JUMPDEST DUP3 PUSH1 0x1 DUP3 SUB DUP2 MLOAD DUP2 LT PUSH2 0x8C6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP3 ADD SWAP2 POP DUP2 JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x82F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH4 0xFFFFFFFF DUP4 AND PUSH2 0x95C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4250000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE PUSH1 0x0 SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x98B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH4 0xFFFFFFFF AND SWAP1 DUP2 PUSH4 0xFFFFFFFF AND DUP2 MSTORE POP POP PUSH1 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x9B4 JUMPI INVALID JUMPDEST PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x883BDBFD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP4 ADD MSTORE DUP4 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP4 PUSH4 0x883BDBFD SWAP4 DUP9 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 DUP6 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 DUP12 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA4F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA37 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE DUP2 LT ISZERO PUSH2 0xACD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0xAED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0xB02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0xB1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB4C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xB34 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0xB75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0xB8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0xBA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBD4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBBC JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xBF4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xC09 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC23 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xC38 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB SWAP1 POP DUP8 PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0xC55 JUMPI INVALID JUMPDEST SDIV SWAP7 POP PUSH1 0x0 DUP3 PUSH1 0x6 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0xC7F JUMPI POP DUP8 PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0xC78 JUMPI INVALID JUMPDEST SMOD PUSH1 0x6 SIGNEXTEND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xCAA JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP7 ADD SWAP6 JUMPDEST PUSH4 0xFFFFFFFF DUP9 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x20 DUP4 SWAP1 SHL AND PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 PUSH2 0xD08 JUMPI INVALID JUMPDEST DIV SWAP7 POP POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xDAD JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xD34 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xD5E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x2 SIGNEXTEND MUL DUP4 ADD SWAP3 POP DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xD7E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 ADD SWAP2 POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0xD1F JUMP JUMPDEST POP DUP1 DUP3 DUP2 PUSH2 0xDB7 JUMPI INVALID JUMPDEST SDIV SWAP3 POP PUSH1 0x0 DUP3 SLT DUP1 ISZERO PUSH2 0xDD2 JUMPI POP DUP1 DUP3 DUP2 PUSH2 0xDCE JUMPI INVALID JUMPDEST SMOD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xDFD JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 ADD SWAP2 JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE63 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xE79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x60 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xFFFF DUP2 AND PUSH2 0xEFA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E49000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x252C09D7 DUP5 PUSH2 0xFFFF AND DUP7 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0xF2D JUMPI INVALID JUMPDEST MOD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xF90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x60 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP1 PUSH2 0x1024 JUMPI DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x252C09D7 PUSH1 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1009 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x101F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP JUMPDEST POP TIMESTAMP SUB SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x1046 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x104E JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x10C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x10E3 JUMPI PUSH17 0x100000000000000000000000000000000 PUSH2 0x10F5 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x1129 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x1148 JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x1167 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x1186 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x11A5 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x11C4 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x11E3 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x1203 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x1223 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x1243 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x1263 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x1283 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x12A3 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x12C3 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x12E3 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x1304 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x1324 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x1343 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x1360 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x1399 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 PUSH2 0x1395 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x13AD JUMPI PUSH1 0x1 PUSH2 0x13B0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x1416 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x140B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x1BC JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x1422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x14C3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x14D8 PUSH2 0x14D3 DUP4 PUSH2 0x180E JUMP JUMPDEST PUSH2 0x17EA JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD DUP4 DUP6 MUL DUP8 ADD DUP5 ADD DUP9 LT ISZERO PUSH2 0x14F4 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x1519 JUMPI PUSH2 0x1507 DUP3 PUSH2 0x1526 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x14F6 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1569 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1BC DUP3 PUSH2 0x148F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1584 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x158D DUP4 PUSH2 0x148F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x15A5 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x15C2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x15D9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x15EC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x15FC PUSH2 0x14D3 DUP4 PUSH2 0x180E JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD DUP4 DUP6 MUL DUP8 ADD DUP5 ADD DUP12 LT ISZERO PUSH2 0x1618 JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x1641 JUMPI PUSH2 0x162D DUP2 PUSH2 0x148F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x161C JUMP JUMPDEST POP SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x1657 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1664 DUP6 DUP3 DUP7 ADD PUSH2 0x14B3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1680 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1697 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x16AA JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x16B8 PUSH2 0x14D3 DUP3 PUSH2 0x180E JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 DUP2 ADD SWAP1 DUP5 DUP7 ADD PUSH1 0x40 DUP1 DUP6 MUL DUP8 ADD DUP9 ADD DUP12 LT ISZERO PUSH2 0x16D6 JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x1735 JUMPI DUP1 DUP3 DUP13 SUB SLT ISZERO PUSH2 0x16F0 JUMPI DUP9 DUP10 REVERT JUMPDEST DUP1 MLOAD DUP2 DUP2 ADD DUP2 DUP2 LT DUP9 DUP3 GT OR ISZERO PUSH2 0x1703 JUMPI INVALID JUMPDEST DUP3 MSTORE PUSH2 0x170E DUP4 PUSH2 0x1526 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x171B DUP10 DUP5 ADD PUSH2 0x1538 JUMP JUMPDEST DUP2 DUP11 ADD MSTORE DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP8 ADD SWAP3 SWAP1 DUP2 ADD SWAP1 PUSH2 0x16DA JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1759 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1762 DUP6 PUSH2 0x1526 JUMP JUMPDEST SWAP4 POP PUSH2 0x1770 PUSH1 0x20 DUP7 ADD PUSH2 0x1538 JUMP JUMPDEST SWAP3 POP PUSH2 0x177E PUSH1 0x40 DUP7 ADD PUSH2 0x148F JUMP JUMPDEST SWAP2 POP PUSH2 0x178C PUSH1 0x60 DUP7 ADD PUSH2 0x148F JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1806 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1822 JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"126:2002:100:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1519:169;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;371:275;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;904:338::-;;;;;;:::i;:::-;;:::i;1943:183::-;;;;;;:::i;:::-;;:::i;152:213::-;;;;;;:::i;:::-;;:::i;1694:243::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;681:217::-;;;;;;:::i;:::-;;:::i;1248:265::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1519:169::-;1596:5;1603:7;1629:52;1676:4;1629:46;:52::i;:::-;1622:59;;;;1519:169;;;;:::o;371:275::-;525:19;570:69;599:4;605:10;617:9;628:10;570:28;:69::i;:::-;556:83;371:275;-1:-1:-1;;;;;371:275:100:o;904:338::-;1070:7;1089:17;1109:9;1089:29;;1128:69;1157:4;1163:10;1175:9;1186:10;1128:28;:69::i;:::-;;1226:9;1214:21;;;904:338;-1:-1:-1;;;;;904:338:100:o;1943:183::-;2036:20;2075:44;2105:6;2113:5;2075:29;:44::i;:::-;2068:51;1943:183;-1:-1:-1;;;1943:183:100:o;152:213::-;245:24;271:29;319:39;341:4;347:10;319:21;:39::i;:::-;312:46;;;;152:213;;;;;:::o;1694:243::-;1822:32;1873:57;1917:12;1873:43;:57::i;:::-;1866:64;;1694:243;;;;:::o;681:217::-;760:7;779:17;799:9;779:29;;818:35;840:4;846:6;818:21;:35::i;:::-;;;882:9;870:21;;;681:217;-1:-1:-1;;;681:217:100:o;1248:265::-;1337:17;1356:23;1404:50;1449:4;1404:44;:50::i;:::-;1391:63;1490:15;;-1:-1:-1;1248:265:100;-1:-1:-1;;1248:265:100:o;5025:1749:86:-;5104:5;5111:7;5133:10;5145:23;5170:29;5222:4;5209:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5209:26:86;;;;;;;;;;;;;;;-1:-1:-1;5209:26:86;;-1:-1:-1;5209:26:86;-1:-1:-1;5362:1:86;5337:26;;;;5329:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5689:27;5718:20;5740:41;5813:4;5787:53;;;5841:16;5787:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5787:71:86;;;;;;;;;;;;;-1:-1:-1;5787:71:86;;-1:-1:-1;5787:71:86;-1:-1:-1;5903:15:86;5872:47;;;;;;;;5868:123;;5943:4;5962;5949:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5949:30:86;5935:45;;-1:-1:-1;5949:30:86;-1:-1:-1;5935:45:86;;-1:-1:-1;;;;;;5935:45:86;5868:123;6001:17;6080:22;6021:81;;6075:1;6050:22;6022:50;;6030:16;6022:25;;:50;:54;6021:81;;;;;;6001:101;;6126:31;6171:24;6209:45;6268:20;6314:4;6301:31;;;6333:9;6301:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6301:42:86;;;;;;;;;;;;;;;;;-1:-1:-1;6301:42:86;-1:-1:-1;6301:42:86;;-1:-1:-1;6301:42:86;-1:-1:-1;6301:42:86;6354:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6411:47;;;6481:45;;;6482:35;;;6481:45;;;;;;;;;-1:-1:-1;6537:17:86;6634:88;6642:73;;;6720:2;6634:88;;6579:14;;;6634:82;6579:34;6634:88;6578:145;6634:88;6578:145;;;;6751:4;;-1:-1:-1;6578:145:86;;;;-1:-1:-1;;;;;;;;;;;;;5025:1749:86;;;:::o;2782:955::-;2938:19;2969:20;2992:33;3020:4;2992:27;:33::i;:::-;2969:56;-1:-1:-1;3160:17:86;3144:33;;;;3140:591;;3213:36;;;;;;;3277:22;;;;;;;:156;;3385:48;3401:8;3411:10;3385:48;;3423:9;3385:15;:48::i;:::-;3277:156;;;3318:48;3334:9;3345:10;3318:48;;3357:8;3318:15;:48::i;:::-;3263:170;;3140:591;;;;3464:17;3484:52;;;;;3528:7;3484:15;:52::i;:::-;3464:72;;3576:10;3564:22;;:9;:22;;;:156;;3672:48;3688:8;3698:10;3672:48;;3710:9;3672:15;:48::i;:::-;3564:156;;;3605:48;3621:9;3632:10;3605:48;;3644:8;3605:15;:48::i;:::-;3550:170;;3140:591;;2782:955;;;;;;;:::o;8919:548::-;9036:20;9097:5;:12;9092:1;9076:6;:13;:17;:33;9068:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9143:1;9126:335;9151:5;:12;9146:1;:17;9126:335;;9377:6;9384:1;9377:9;;;;;;;;;;;;;;9361:25;;:6;9372:1;9368;:5;9361:13;;;;;;;;;;;;;;:25;;;:89;;9438:5;9448:1;9444;:5;9438:12;;;;;;;;;;;;;;9421:29;;;;;;;9361:89;;;9406:5;9416:1;9412;:5;9406:12;;;;;;;;;;;;;;9389:29;;;;;;;9361:89;-1:-1:-1;9165:3:86;;9126:335;;;;8919:548;;;;:::o;1058:1220::-;1153:24;;1228:15;;;1220:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1291:15;;;1304:1;1291:15;;;;;;;;1261:27;;1291:15;;;;;;;;;;-1:-1:-1;1291:15:86;1261:45;;1333:10;1316:11;1328:1;1316:14;;;;;;;;;;;;;:27;;;;;;;;;;;1370:1;1353:11;1365:1;1353:14;;;;;;;;:18;;;;:14;;;;;;;;;;:18;1470:52;;;;;;;;;;;;;;;;;;;1383:30;;;;1470:39;;;;;;1510:11;;1470:52;;;;;;;;;;;;;;;;;1383:30;1470:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1470:52:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1470:52:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1382:140;;;;1533:26;1583:15;1599:1;1583:18;;;;;;;;;;;;;;1562:15;1578:1;1562:18;;;;;;;;;;;;;;:39;1533:68;;1611:43;1709:34;1744:1;1709:37;;;;;;;;;;;;;;1657:34;1692:1;1657:37;;;;;;;;;;;;;;:89;1611:135;;1807:10;1784:33;;:20;:33;;;;;;;;1757:61;;1900:1;1877:20;:24;;;:68;;;;;1929:10;1906:33;;:20;:33;;;;;;;;:38;;;;1877:68;1873:94;;;1947:20;;;;;1873:94;2120:19;;;2142:17;2120:39;2219:50;2267:2;2219:50;;;;;2201:69;;2219:50;2201:69;;;;;2169:102;;1058:1220;;;;;;;;;;;:::o;7520:879::-;7640:32;7760:16;7833:19;7972:9;7967:204;7987:16;:23;7983:1;:27;7967:204;;;8078:16;8095:1;8078:19;;;;;;;;;;;;;;:26;;;8071:34;;8044:16;8061:1;8044:19;;;;;;;;;;;;;;:24;;;:61;;;8031:74;;;;8134:16;8151:1;8134:19;;;;;;;;;;;;;;:26;;;8119:41;;;;;;8012:3;;;;;;;7967:204;;;;8235:11;8216:9;:31;;;;;;8181:67;;8319:1;8307:9;:13;:55;;;;;8344:11;8325:9;:31;;;;;;:36;;8307:55;8303:89;;;8364:28;;;;;8303:89;7520:879;;;;;:::o;4014:784::-;4091:17;4125:23;4150:29;4202:4;4189:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4189:26:86;;;;;;;;;;;-1:-1:-1;4189:26:86;-1:-1:-1;4233:26:86;;;4225:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4278:27;4311:16;4344:4;4331:31;;;4401:22;4376:47;;4377:16;4396:1;4377:20;4376:47;;;;;;;;4331:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4331:102:86;;;;;;;;;-1:-1:-1;4331:102:86;-1:-1:-1;4331:102:86;4614:108;;4690:4;4677:31;;;4709:1;4677:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4677:34:86;;-1:-1:-1;4614:108:86;-1:-1:-1;4752:15:86;4745:46;;4014:784;-1:-1:-1;;;;4014:784:86:o;1362:2580:20:-;1425:20;1457:15;1482:1;1475:4;:8;;;:57;;1526:4;1519:12;;1475:57;;;1502:4;1495:12;;1494:13;;1475:57;1457:75;-1:-1:-1;644:9:20;1550:28;;;1542:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1595:13;1621:3;1611:13;;:93;;1669:35;1611:93;;;1632:34;1611:93;1595:109;;;-1:-1:-1;1728:3:20;1718:13;;:18;1714:83;;1755:34;1747:42;1794:3;1746:51;1714:83;1821:3;1811:13;;:18;1807:83;;1848:34;1840:42;1887:3;1839:51;1807:83;1914:3;1904:13;;:18;1900:83;;1941:34;1933:42;1980:3;1932:51;1900:83;2007:4;1997:14;;:19;1993:84;;2035:34;2027:42;2074:3;2026:51;1993:84;2101:4;2091:14;;:19;2087:84;;2129:34;2121:42;2168:3;2120:51;2087:84;2195:4;2185:14;;:19;2181:84;;2223:34;2215:42;2262:3;2214:51;2181:84;2289:4;2279:14;;:19;2275:84;;2317:34;2309:42;2356:3;2308:51;2275:84;2383:5;2373:15;;:20;2369:85;;2412:34;2404:42;2451:3;2403:51;2369:85;2478:5;2468:15;;:20;2464:85;;2507:34;2499:42;2546:3;2498:51;2464:85;2573:5;2563:15;;:20;2559:85;;2602:34;2594:42;2641:3;2593:51;2559:85;2668:5;2658:15;;:20;2654:85;;2697:34;2689:42;2736:3;2688:51;2654:85;2763:6;2753:16;;:21;2749:86;;2793:34;2785:42;2832:3;2784:51;2749:86;2859:6;2849:16;;:21;2845:86;;2889:34;2881:42;2928:3;2880:51;2845:86;2955:6;2945:16;;:21;2941:86;;2985:34;2977:42;3024:3;2976:51;2941:86;3051:6;3041:16;;:21;3037:86;;3081:34;3073:42;3120:3;3072:51;3037:86;3147:7;3137:17;;:22;3133:86;;3178:33;3170:41;3216:3;3169:50;3133:86;3243:7;3233:17;;:22;3229:85;;3274:32;3266:40;3311:3;3265:49;3229:85;3338:7;3328:17;;:22;3324:83;;3369:30;3361:38;3404:3;3360:47;3324:83;3431:7;3421:17;;:22;3417:78;;3462:25;3454:33;3492:3;3453:42;3417:78;3517:1;3510:4;:8;;;3506:47;;;3548:5;3528:17;:25;;;;;;3520:33;;3506:47;3912:7;3903:5;:17;:22;:30;;3932:1;3903:30;;;3928:1;3903:30;3886:48;;3896:2;3887:5;:11;;3886:48;3863:72;;1362:2580;;;;;:::o;749:3746:14:-;831:14;;;1341:6;1338:1;1335;1328:20;1370:9;;;;-1:-1:-1;1421:13:14;;;1405:14;;;;1401:34;;-1:-1:-1;1517:10:14;1513:179;;1565:1;1551:11;:15;1543:24;;;;;;-1:-1:-1;1618:23:14;;;;-1:-1:-1;1668:13:14;;1513:179;1819:5;1805:11;:19;1797:28;;;;;;2102:17;2178:11;2175:1;2172;2165:25;2530:12;2545;;;:26;;2665:22;;;;;3468:1;3449;:15;;3448:21;;3695:17;;;3691:21;;3684:28;3753:17;;;3749:21;;3742:28;3812:17;;;3808:21;;3801:28;3871:17;;;3867:21;;3860:28;3930:17;;;3926:21;;3919:28;3990:17;;;3986:21;;;3979:28;3037:12;;;;3033:23;;;3058:1;3029:31;2307:20;;;2296:32;;;3088:12;;;;2350:21;;;;2793:16;;;;3079:21;;;;4454:11;;;;;-1:-1:-1;;749:3746:14;;;;;:::o;14:198:115:-;84:20;;144:42;133:54;;123:65;;113:2;;202:1;199;192:12;217:709;;328:3;321:4;313:6;309:17;305:27;295:2;;350:5;343;336:20;295:2;390:6;377:20;416:4;440:65;455:49;501:2;455:49;:::i;:::-;440:65;:::i;:::-;539:15;;;570:12;;;;602:15;;;648:11;;;636:24;;632:33;;629:42;-1:-1:-1;626:2:115;;;688:5;681;674:20;626:2;714:5;728:169;742:2;739:1;736:9;728:169;;;799:23;818:3;799:23;:::i;:::-;787:36;;843:12;;;;875;;;;760:1;753:9;728:169;;;-1:-1:-1;915:5:115;;285:641;-1:-1:-1;;;;;;;285:641:115:o;931:162::-;999:20;;1059:1;1048:20;;;1038:31;;1028:2;;1083:1;1080;1073:12;1098:190;1168:20;;1228:34;1217:46;;1207:57;;1197:2;;1278:1;1275;1268:12;1293:198;;1405:2;1393:9;1384:7;1380:23;1376:32;1373:2;;;1426:6;1418;1411:22;1373:2;1454:31;1475:9;1454:31;:::i;1496:372::-;;;1624:2;1612:9;1603:7;1599:23;1595:32;1592:2;;;1645:6;1637;1630:22;1592:2;1673:31;1694:9;1673:31;:::i;:::-;1663:41;;1754:2;1743:9;1739:18;1726:32;1798:10;1791:5;1787:22;1780:5;1777:33;1767:2;;1829:6;1821;1814:22;1767:2;1857:5;1847:15;;;1582:286;;;;;:::o;1873:1222::-;;;2050:2;2038:9;2029:7;2025:23;2021:32;2018:2;;;2071:6;2063;2056:22;2018:2;2116:9;2103:23;2145:18;2186:2;2178:6;2175:14;2172:2;;;2207:6;2199;2192:22;2172:2;2250:6;2239:9;2235:22;2225:32;;2295:7;2288:4;2284:2;2280:13;2276:27;2266:2;;2322:6;2314;2307:22;2266:2;2363;2350:16;2385:4;2409:65;2424:49;2470:2;2424:49;:::i;2409:65::-;2508:15;;;2539:12;;;;2571:11;;;2609;;;2601:20;;2597:29;;2594:42;-1:-1:-1;2591:2:115;;;2654:6;2646;2639:22;2591:2;2681:6;2672:15;;2696:171;2710:2;2707:1;2704:9;2696:171;;;2767:25;2788:3;2767:25;:::i;:::-;2755:38;;2728:1;2721:9;;;;;2813:12;;;;2845;;2696:171;;;-1:-1:-1;2886:5:115;-1:-1:-1;;2929:18:115;;2916:32;;-1:-1:-1;;2960:16:115;;;2957:2;;;2994:6;2986;2979:22;2957:2;;3022:67;3081:7;3070:8;3059:9;3055:24;3022:67;:::i;:::-;3012:77;;;2008:1087;;;;;:::o;3100:1407::-;;3250:2;3293;3281:9;3272:7;3268:23;3264:32;3261:2;;;3314:6;3306;3299:22;3261:2;3359:9;3346:23;3388:18;3429:2;3421:6;3418:14;3415:2;;;3450:6;3442;3435:22;3415:2;3493:6;3482:9;3478:22;3468:32;;3538:7;3531:4;3527:2;3523:13;3519:27;3509:2;;3565:6;3557;3550:22;3509:2;3606;3593:16;3629:65;3644:49;3690:2;3644:49;:::i;3629:65::-;3728:15;;;3759:12;;;;3791:11;;;3821:4;3852:11;;;3844:20;;3840:29;;3837:42;-1:-1:-1;3834:2:115;;;3897:6;3889;3882:22;3834:2;3924:6;3915:15;;3939:538;3953:2;3950:1;3947:9;3939:538;;;4024:2;4018:3;4009:7;4005:17;4001:26;3998:2;;;4045:6;4037;4030:22;3998:2;4087;4081:9;4133:2;4125:6;4121:15;4190:6;4178:10;4175:22;4170:2;4158:10;4155:18;4152:46;4149:2;;;4201:9;4149:2;4225:22;;4275:23;4294:3;4275:23;:::i;:::-;4267:6;4260:39;4336:34;4366:2;4361:3;4357:12;4336:34;:::i;:::-;4319:15;;;4312:59;4384:19;;3971:1;3964:9;;;;;4423:12;;;;4455;;;;3939:538;;;-1:-1:-1;4496:5:115;;3230:1277;-1:-1:-1;;;;;;;;;3230:1277:115:o;4512:423::-;;;;;4673:3;4661:9;4652:7;4648:23;4644:33;4641:2;;;4695:6;4687;4680:22;4641:2;4723:29;4742:9;4723:29;:::i;:::-;4713:39;;4771:40;4807:2;4796:9;4792:18;4771:40;:::i;:::-;4761:50;;4830:40;4866:2;4855:9;4851:18;4830:40;:::i;:::-;4820:50;;4889:40;4925:2;4914:9;4910:18;4889:40;:::i;:::-;4879:50;;4631:304;;;;;;;:::o;4940:188::-;5111:1;5100:21;;;;5082:40;;5070:2;5055:18;;5037:91::o;5133:300::-;5332:1;5321:21;;;;5303:40;;5391:34;5379:47;5374:2;5359:18;;5352:75;5291:2;5276:18;;5258:175::o;5438:::-;5582:25;;;5570:2;5555:18;;5537:76::o;5800:291::-;5980:10;6017:15;;;5999:34;;6069:15;;6064:2;6049:18;;6042:43;5958:2;5943:18;;5925:166::o;6096:242::-;6166:2;6160:9;6196:17;;;6243:18;6228:34;;6264:22;;;6225:62;6222:2;;;6290:9;6222:2;6317;6310:22;6140:198;;-1:-1:-1;6140:198:115:o;6343:183::-;;6442:18;6434:6;6431:30;6428:2;;;6464:9;6428:2;-1:-1:-1;6515:4:115;6496:17;;;6492:28;;6418:108::o"},"methodIdentifiers":{"consult(address,uint32)":"82413489","getBlockStartingTickAndLiquidity(address)":"333b19a8","getChainedPrice(address[],int24[])":"7059b38a","getGasCostOfConsult(address,uint32)":"bbe8f419","getGasCostOfGetQuoteAtTick(int24,uint128,address,address)":"6a816ff9","getOldestObservationSecondsAgo(address)":"e6c4fbe0","getQuoteAtTick(int24,uint128,address,address)":"43c57a27","getWeightedArithmeticMeanTick((int24,uint128)[])":"ab34b0fc"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"secondsAgo\",\"type\":\"uint32\"}],\"name\":\"consult\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"arithmeticMeanTick\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"harmonicMeanLiquidity\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getBlockStartingTickAndLiquidity\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"int24[]\",\"name\":\"ticks\",\"type\":\"int24[]\"}],\"name\":\"getChainedPrice\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"syntheticTick\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"period\",\"type\":\"uint32\"}],\"name\":\"getGasCostOfConsult\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"baseAmount\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"quoteToken\",\"type\":\"address\"}],\"name\":\"getGasCostOfGetQuoteAtTick\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getOldestObservationSecondsAgo\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"secondsAgo\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"currentTimestamp\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"baseAmount\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"quoteToken\",\"type\":\"address\"}],\"name\":\"getQuoteAtTick\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"quoteAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"weight\",\"type\":\"uint128\"}],\"internalType\":\"struct OracleLibrary.WeightedTickData[]\",\"name\":\"observations\",\"type\":\"tuple[]\"}],\"name\":\"getWeightedArithmeticMeanTick\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"arithmeticMeanWeightedTick\",\"type\":\"int24\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/OracleTest.sol\":\"OracleTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"@airdao/astra-cl-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x5340256039418f5d03512a44173d3dcf1da277a73a461e06fb5668f49cfc46f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75dee99795d1125875233a7f1d356935099cc97b4085c0e451060d77db85d144\",\"dweb:/ipfs/QmTGqyrxVLQd8TBaarqSQDiYvq1QFutCdmTyXk6JpxzKTN\"]},\"@airdao/astra-cl-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0xe22d07f1ebf9c8468c81cb6905bfc8f8a54fa2f9b4a50742202a47cdbcb5af80\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d4773ca5008d2a2f496370695942c8ba3d6e1d487adbf5cda1149da12e3a6268\",\"dweb:/ipfs/QmcPYTLpEWfU8e3KAYBfHH7uYR4tGAkvnWrWS1CG8EkyLC\"]},\"contracts/libraries/OracleLibrary.sol\":{\"keccak256\":\"0xf9dab1f6ac5c82c1a19688e900ab355a266e85af4f76346db925789352081c31\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1ba91097b8fdd8a46d9b837e7a80f8e3ccdaeb3d49870c6558b88d5064abdfce\",\"dweb:/ipfs/QmaocoW3nkgMSZjTLXm15ERTPN2yFLMAWE114s1R99hgrS\"]},\"contracts/test/OracleTest.sol\":{\"keccak256\":\"0x636a19955190b311d1ac54df14b8c083ace252130a69f591455370caa198552c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f43161368f5f94181bd67f35ee3fcb95e216a3875cc8e8a0a4ee87ed7bbea5ee\",\"dweb:/ipfs/QmV2CA2vFhaynwXkDh2kjAZQaZrSpWwweePnrPXzciorQh\"]}},\"version\":1}"}},"contracts/test/PathTest.sol":{"PathTest":{"abi":[{"inputs":[{"internalType":"bytes","name":"path","type":"bytes"}],"name":"decodeFirstPool","outputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"path","type":"bytes"}],"name":"getFirstPool","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"path","type":"bytes"}],"name":"getGasCostOfDecodeFirstPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"path","type":"bytes"}],"name":"hasMultiplePools","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"path","type":"bytes"}],"name":"skipToken","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061093f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063bf8b627b11610050578063bf8b627b14610241578063d7c9ca0c146102e7578063eadc682a1461039f57610067565b80637db6e2461461006c5780639dc1c39114610187575b600080fd5b6101126004803603602081101561008257600080fd5b81019060208101813564010000000081111561009d57600080fd5b8201836020820111156100af57600080fd5b803590602001918460018302840111640100000000831117156100d157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610481945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014c578181015183820152602001610134565b50505050905090810190601f1680156101795780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61022d6004803603602081101561019d57600080fd5b8101906020810181356401000000008111156101b857600080fd5b8201836020820111156101ca57600080fd5b803590602001918460018302840111640100000000831117156101ec57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610492945050505050565b604080519115158252519081900360200190f35b6101126004803603602081101561025757600080fd5b81019060208101813564010000000081111561027257600080fd5b82018360208201111561028457600080fd5b803590602001918460018302840111640100000000831117156102a657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061049d945050505050565b61038d600480360360208110156102fd57600080fd5b81019060208101813564010000000081111561031857600080fd5b82018360208201111561032a57600080fd5b8035906020019184600183028401116401000000008311171561034c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506104a8945050505050565b60408051918252519081900360200190f35b610445600480360360208110156103b557600080fd5b8101906020810181356401000000008111156103d057600080fd5b8201836020820111156103e257600080fd5b8035906020019184600183028401116401000000008311171561040457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506104c3945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff168183015290519081900360600190f35b606061048c826104de565b92915050565b600061048c826104ed565b606061048c826104f5565b6000805a90506104b78361052a565b5050505a900392915050565b60008060006104d18461052a565b9250925092509193909250565b606061048c826000602b61055b565b516042111590565b805160609061048c9083906017907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe90161055b565b600080806105388482610742565b9250610545846014610842565b9050610552846017610742565b91509193909250565b60608182601f0110156105cf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b82828401101561064057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b818301845110156106b257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b6060821580156106d15760405191506000825260208201604052610739565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561070a5780518352602092830192016106f2565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000818260140110156107b657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b816014018351101561082957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b6000818260030110156108b657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b816003018351101561092957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b5001600301519056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93F DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBF8B627B GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xBF8B627B EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0xD7C9CA0C EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0xEADC682A EQ PUSH2 0x39F JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x7DB6E246 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x9DC1C391 EQ PUSH2 0x187 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x481 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x134 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x179 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x19D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x492 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x49D SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x38D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x318 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x4A8 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x445 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x4C3 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH3 0xFFFFFF AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH2 0x48C DUP3 PUSH2 0x4DE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48C DUP3 PUSH2 0x4ED JUMP JUMPDEST PUSH1 0x60 PUSH2 0x48C DUP3 PUSH2 0x4F5 JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x4B7 DUP4 PUSH2 0x52A JUMP JUMPDEST POP POP POP GAS SWAP1 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4D1 DUP5 PUSH2 0x52A JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x48C DUP3 PUSH1 0x0 PUSH1 0x2B PUSH2 0x55B JUMP JUMPDEST MLOAD PUSH1 0x42 GT ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x48C SWAP1 DUP4 SWAP1 PUSH1 0x17 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 ADD PUSH2 0x55B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x538 DUP5 DUP3 PUSH2 0x742 JUMP JUMPDEST SWAP3 POP PUSH2 0x545 DUP5 PUSH1 0x14 PUSH2 0x842 JUMP JUMPDEST SWAP1 POP PUSH2 0x552 DUP5 PUSH1 0x17 PUSH2 0x742 JUMP JUMPDEST SWAP2 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP3 PUSH1 0x1F ADD LT ISZERO PUSH2 0x5CF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F766572666C6F77000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 DUP5 ADD LT ISZERO PUSH2 0x640 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F766572666C6F77000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 ADD DUP5 MLOAD LT ISZERO PUSH2 0x6B2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F75744F66426F756E6473000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO DUP1 ISZERO PUSH2 0x6D1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x0 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x739 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F DUP5 AND DUP1 ISZERO PUSH1 0x20 MUL DUP2 DUP5 ADD ADD DUP6 DUP2 ADD DUP8 DUP4 ISZERO PUSH1 0x20 MUL DUP5 DUP12 ADD ADD ADD JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x70A JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x6F2 JUMP JUMPDEST POP POP DUP6 DUP5 MSTORE PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x40 MSTORE POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x14 ADD LT ISZERO PUSH2 0x7B6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F416464726573735F6F766572666C6F770000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x14 ADD DUP4 MLOAD LT ISZERO PUSH2 0x829 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F416464726573735F6F75744F66426F756E64730000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH13 0x1000000000000000000000000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x3 ADD LT ISZERO PUSH2 0x8B6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F55696E7432345F6F766572666C6F77000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 ADD DUP4 MLOAD LT ISZERO PUSH2 0x929 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F55696E7432345F6F75744F66426F756E6473000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x3 ADD MLOAD SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"97:795:101:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c8063bf8b627b11610050578063bf8b627b14610241578063d7c9ca0c146102e7578063eadc682a1461039f57610067565b80637db6e2461461006c5780639dc1c39114610187575b600080fd5b6101126004803603602081101561008257600080fd5b81019060208101813564010000000081111561009d57600080fd5b8201836020820111156100af57600080fd5b803590602001918460018302840111640100000000831117156100d157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610481945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014c578181015183820152602001610134565b50505050905090810190601f1680156101795780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61022d6004803603602081101561019d57600080fd5b8101906020810181356401000000008111156101b857600080fd5b8201836020820111156101ca57600080fd5b803590602001918460018302840111640100000000831117156101ec57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610492945050505050565b604080519115158252519081900360200190f35b6101126004803603602081101561025757600080fd5b81019060208101813564010000000081111561027257600080fd5b82018360208201111561028457600080fd5b803590602001918460018302840111640100000000831117156102a657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061049d945050505050565b61038d600480360360208110156102fd57600080fd5b81019060208101813564010000000081111561031857600080fd5b82018360208201111561032a57600080fd5b8035906020019184600183028401116401000000008311171561034c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506104a8945050505050565b60408051918252519081900360200190f35b610445600480360360208110156103b557600080fd5b8101906020810181356401000000008111156103d057600080fd5b8201836020820111156103e257600080fd5b8035906020019184600183028401116401000000008311171561040457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506104c3945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff168183015290519081900360600190f35b606061048c826104de565b92915050565b600061048c826104ed565b606061048c826104f5565b6000805a90506104b78361052a565b5050505a900392915050565b60008060006104d18461052a565b9250925092509193909250565b606061048c826000602b61055b565b516042111590565b805160609061048c9083906017907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe90161055b565b600080806105388482610742565b9250610545846014610842565b9050610552846017610742565b91509193909250565b60608182601f0110156105cf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b82828401101561064057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b818301845110156106b257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b6060821580156106d15760405191506000825260208201604052610739565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561070a5780518352602092830192016106f2565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000818260140110156107b657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b816014018351101561082957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b6000818260030110156108b657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b816003018351101561092957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b5001600301519056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBF8B627B GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xBF8B627B EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0xD7C9CA0C EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0xEADC682A EQ PUSH2 0x39F JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x7DB6E246 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x9DC1C391 EQ PUSH2 0x187 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x481 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x134 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x179 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x19D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x492 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x49D SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x38D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x318 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x4A8 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x445 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x4C3 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH3 0xFFFFFF AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH2 0x48C DUP3 PUSH2 0x4DE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48C DUP3 PUSH2 0x4ED JUMP JUMPDEST PUSH1 0x60 PUSH2 0x48C DUP3 PUSH2 0x4F5 JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x4B7 DUP4 PUSH2 0x52A JUMP JUMPDEST POP POP POP GAS SWAP1 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4D1 DUP5 PUSH2 0x52A JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x48C DUP3 PUSH1 0x0 PUSH1 0x2B PUSH2 0x55B JUMP JUMPDEST MLOAD PUSH1 0x42 GT ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x48C SWAP1 DUP4 SWAP1 PUSH1 0x17 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 ADD PUSH2 0x55B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x538 DUP5 DUP3 PUSH2 0x742 JUMP JUMPDEST SWAP3 POP PUSH2 0x545 DUP5 PUSH1 0x14 PUSH2 0x842 JUMP JUMPDEST SWAP1 POP PUSH2 0x552 DUP5 PUSH1 0x17 PUSH2 0x742 JUMP JUMPDEST SWAP2 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP3 PUSH1 0x1F ADD LT ISZERO PUSH2 0x5CF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F766572666C6F77000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP3 DUP5 ADD LT ISZERO PUSH2 0x640 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F766572666C6F77000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 ADD DUP5 MLOAD LT ISZERO PUSH2 0x6B2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6963655F6F75744F66426F756E6473000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO DUP1 ISZERO PUSH2 0x6D1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x0 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x739 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F DUP5 AND DUP1 ISZERO PUSH1 0x20 MUL DUP2 DUP5 ADD ADD DUP6 DUP2 ADD DUP8 DUP4 ISZERO PUSH1 0x20 MUL DUP5 DUP12 ADD ADD ADD JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x70A JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x6F2 JUMP JUMPDEST POP POP DUP6 DUP5 MSTORE PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x40 MSTORE POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x14 ADD LT ISZERO PUSH2 0x7B6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F416464726573735F6F766572666C6F770000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x14 ADD DUP4 MLOAD LT ISZERO PUSH2 0x829 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F416464726573735F6F75744F66426F756E64730000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH13 0x1000000000000000000000000 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP3 PUSH1 0x3 ADD LT ISZERO PUSH2 0x8B6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F55696E7432345F6F766572666C6F77000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 ADD DUP4 MLOAD LT ISZERO PUSH2 0x929 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F55696E7432345F6F75744F66426F756E6473000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x3 ADD MLOAD SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"97:795:101:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;415:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;415:123:101;;-1:-1:-1;415:123:101;;-1:-1:-1;;;;;415:123:101:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;121:123:101;;-1:-1:-1;121:123:101;;-1:-1:-1;;;;;121:123:101:i;:::-;;;;;;;;;;;;;;;;;;544:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;544:117:101;;-1:-1:-1;544:117:101;;-1:-1:-1;;;;;544:117:101:i;684:206::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;684:206:101;;-1:-1:-1;684:206:101;;-1:-1:-1;;;;;684:206:101:i;:::-;;;;;;;;;;;;;;;;250:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;250:159:101;;-1:-1:-1;250:159:101;;-1:-1:-1;;;;;250:159:101:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;415:123;477:12;508:23;526:4;508:17;:23::i;:::-;501:30;415:123;-1:-1:-1;;415:123:101:o;121:::-;187:4;210:27;232:4;210:21;:27::i;544:117::-;603:12;634:20;649:4;634:14;:20::i;684:206::-;761:7;780:17;800:9;780:29;;819:26;840:4;819:20;:26::i;:::-;;;;874:9;862:21;;;684:206;-1:-1:-1;;684:206:101:o;250:159::-;315:14;331;347:10;376:26;397:4;376:20;:26::i;:::-;369:33;;;;;;250:159;;;;;:::o;2245:127:87:-;2309:12;2340:25;:4;2351:1;618:23;2340:10;:25::i;992:138::-;1083:11;777:24;-1:-1:-1;1083:40:87;;992:138::o;2561:149::-;2677:11;;2622:12;;2653:50;;2677:4;;507:20;;2677:25;;2653:10;:50::i;1779:240::-;1846:14;;;1909:17;:4;1846:14;1909;:17::i;:::-;1900:26;-1:-1:-1;1942:24:87;:4;304:2;1942:13;:24::i;:::-;1936:30;-1:-1:-1;1985:27:87;:4;507:20;1985:14;:27::i;:::-;1976:36;;1779:240;;;;;:::o;399:2809:80:-;491:12;539:7;523;533:2;523:12;:23;;515:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;603:6;592:7;583:6;:16;:26;;575:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;672:7;663:6;:16;646:6;:13;:33;;638:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;712:22;775:15;;803:1967;;;;2911:4;2905:11;2892:24;;3097:1;3086:9;3079:20;3145:4;3134:9;3130:20;3124:4;3117:34;768:2397;;803:1967;985:4;979:11;966:24;;1644:2;1635:7;1631:16;2026:9;2019:17;2013:4;2009:28;1997:9;1986;1982:25;1978:60;2074:7;2070:2;2066:16;2326:6;2312:9;2305:17;2299:4;2295:28;2283:9;2275:6;2271:22;2267:57;2263:70;2100:425;2359:3;2355:2;2352:11;2100:425;;;2497:9;;2486:21;;2400:4;2392:13;;;;2432;2100:425;;;-1:-1:-1;;2543:26:80;;;2751:2;2734:11;2747:7;2730:25;2724:4;2717:39;-1:-1:-1;768:2397:80;-1:-1:-1;3192:9:80;399:2809;-1:-1:-1;;;;399:2809:80:o;3214:416::-;3293:7;3335:6;3320;3329:2;3320:11;:21;;3312:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3399:6;3408:2;3399:11;3382:6;:13;:28;;3374:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3524:30:80;3540:4;3524:30;3518:37;3557:27;3514:71;;;3214:416::o;3636:365::-;3714:6;3754;3740;3749:1;3740:10;:20;;3732:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3817:6;3826:1;3817:10;3800:6;:13;:27;;3792:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3929:29:80;3945:3;3929:29;3923:36;;3636:365::o"},"methodIdentifiers":{"decodeFirstPool(bytes)":"eadc682a","getFirstPool(bytes)":"7db6e246","getGasCostOfDecodeFirstPool(bytes)":"d7c9ca0c","hasMultiplePools(bytes)":"9dc1c391","skipToken(bytes)":"bf8b627b"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"}],\"name\":\"decodeFirstPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"}],\"name\":\"getFirstPool\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"}],\"name\":\"getGasCostOfDecodeFirstPool\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"}],\"name\":\"hasMultiplePools\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"}],\"name\":\"skipToken\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/PathTest.sol\":\"PathTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/libraries/BytesLib.sol\":{\"keccak256\":\"0xed1b8acd0184eb321d5f4b5c2576608d1c12f5db1bb72d950054438f7f1946a6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f55d6aca86dcf1f1ab6413f48964f821306a29914c2117c16f20446faa5d6d0a\",\"dweb:/ipfs/QmWKbbg6kA9kkPVrCh6hJMnPhK1NhuVoHEd9s3vmYWsvTa\"]},\"contracts/libraries/Path.sol\":{\"keccak256\":\"0x0a6928608f48763796089e22dfc02a462cce63bb7727663961b3ed8c4f3eb862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://73bb4f107faf873db8700ce8950d2c4c88d41e0e1716da599bb733ad884f95eb\",\"dweb:/ipfs/QmZXSaPVpgDXpkKqYRdByJ3UXaMV2ATkr7V72nRZij8wmB\"]},\"contracts/test/PathTest.sol\":{\"keccak256\":\"0x034d23310cdafef1b8797a891eb2eb2e81a6ce3b739aa769dbd4da77cddbc65d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://090814f3294dfca050b257b8aaf7ef744b971ce8ed17e75da101a4004f98a254\",\"dweb:/ipfs/QmXvaU1ZzNVuSFemnQ7BPhxaE6LiiGNisGZTN1VVngGHQJ\"]}},\"version\":1}"}},"contracts/test/PeripheryImmutableStateTest.sol":{"PeripheryImmutableStateTest":{"abi":[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_SAMB","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"SAMB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60c060405234801561001057600080fd5b5060405161013b38038061013b8339818101604052604081101561003357600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c60c161007a60003980606e5250806092525060c16000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806390793ea8146037578063c45a0155146066575b600080fd5b603d606c565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b603d6090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f00000000000000000000000000000000000000000000000000000000000000008156fea164736f6c6343000706000a","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x13B CODESIZE SUB DUP1 PUSH2 0x13B DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC1 PUSH2 0x7A PUSH1 0x0 CODECOPY DUP1 PUSH1 0x6E MSTORE POP DUP1 PUSH1 0x92 MSTORE POP PUSH1 0xC1 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90793EA8 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH1 0x66 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x6C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x3D PUSH1 0x90 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"117:160:102:-:0;;;187:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;187:88:102;;;;;;;-1:-1:-1;;;;;;520:18:50;;;;;;;;548:12;;;;;117:160:102;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{"8379":[{"length":32,"start":146}],"8383":[{"length":32,"start":110}]},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060325760003560e01c806390793ea8146037578063c45a0155146066575b600080fd5b603d606c565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b603d6090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f00000000000000000000000000000000000000000000000000000000000000008156fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90793EA8 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH1 0x66 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x6C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x3D PUSH1 0x90 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"117:160:102:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;420:38:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;328:41;;;:::i;420:38::-;;;:::o;328:41::-;;;:::o"},"methodIdentifiers":{"SAMB()":"90793ea8","factory()":"c45a0155"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_SAMB\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"SAMB\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/PeripheryImmutableStateTest.sol\":\"PeripheryImmutableStateTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/base/PeripheryImmutableState.sol\":{\"keccak256\":\"0x566b2f2f7bf89d107c66316e12b9cad9fade2f9cc2076bceb2090f54bada22da\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d13d485890a8eb6b2b6b38cf0b7fc39c7fc66462a9553159947ece2de55d9ba3\",\"dweb:/ipfs/QmaSEEBMjMvvrLqxmrskUmDwg86g7RHDa6SYiYiA77SJ1X\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/test/PeripheryImmutableStateTest.sol\":{\"keccak256\":\"0x9dfa94affb88ff6a8e6d788f7a6d76e62265256d3895d4836c128b3baec6b7bb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f0d2cfbab059c35f616b7095338e3a2dbfe5c1c31c7af1b24d8f83a23c76dd37\",\"dweb:/ipfs/QmfAhQP1oGyFUoXJVDqMq3Y4Az4RGwTHS8uvLmYhxQTZ4M\"]}},\"version\":1}"}},"contracts/test/PoolAddressTest.sol":{"PoolAddressTest":{"abi":[{"inputs":[],"name":"POOL_INIT_CODE_HASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"}],"name":"computeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"}],"name":"getGasCostOfComputeAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610356806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80638716c5ff14610046578063cce34ec6146100be578063dc6fd8ab1461011f575b600080fd5b6100956004803603608081101561005c57600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff908116916020810135821691604082013516906060013562ffffff16610127565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61010d600480360360808110156100d457600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff908116916020810135821691604082013516906060013562ffffff16610187565b60408051918252519081900360200190f35b61010d6101ef565b600061017e8560405180606001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018562ffffff16815250610213565b95945050505050565b6000805a90506101e28660405180606001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018662ffffff16815250610213565b505a900395945050505050565b7f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0490565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff161061025557600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0460d5808301919091528251808303909101815260f590910190915280519101209056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x356 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8716C5FF EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xCCE34EC6 EQ PUSH2 0xBE JUMPI DUP1 PUSH4 0xDC6FD8AB EQ PUSH2 0x11F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x127 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x187 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH2 0x1EF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17E DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH3 0xFFFFFF AND DUP2 MSTORE POP PUSH2 0x213 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x1E2 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH3 0xFFFFFF AND DUP2 MSTORE POP PUSH2 0x213 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 DUP6 ADD MSTORE SWAP4 SWAP1 SWAP2 AND DUP4 DUP6 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x80 DUP5 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 PUSH1 0xD5 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xF5 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"104:803:103:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c80638716c5ff14610046578063cce34ec6146100be578063dc6fd8ab1461011f575b600080fd5b6100956004803603608081101561005c57600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff908116916020810135821691604082013516906060013562ffffff16610127565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61010d600480360360808110156100d457600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff908116916020810135821691604082013516906060013562ffffff16610187565b60408051918252519081900360200190f35b61010d6101ef565b600061017e8560405180606001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018562ffffff16815250610213565b95945050505050565b6000805a90506101e28660405180606001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018662ffffff16815250610213565b505a900395945050505050565b7f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0490565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff161061025557600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0460d5808301919091528251808303909101815260f590910190915280519101209056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8716C5FF EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xCCE34EC6 EQ PUSH2 0xBE JUMPI DUP1 PUSH4 0xDC6FD8AB EQ PUSH2 0x11F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x127 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x187 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH2 0x1EF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17E DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH3 0xFFFFFF AND DUP2 MSTORE POP PUSH2 0x213 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x1E2 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH3 0xFFFFFF AND DUP2 MSTORE POP PUSH2 0x213 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 DUP6 ADD MSTORE SWAP4 SWAP1 SWAP2 AND DUP4 DUP6 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x80 DUP5 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 PUSH1 0xD5 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xF5 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"104:803:103:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;259:279;;;;;;;;;;;;;;;;-1:-1:-1;259:279:103;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;544:361;;;;;;;;;;;;;;;;-1:-1:-1;544:361:103;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;135:118;;;:::i;259:279::-;405:7;431:100;458:7;467:63;;;;;;;;496:6;467:63;;;;;;512:6;467:63;;;;;;525:3;467:63;;;;;431:26;:100::i;:::-;424:107;259:279;-1:-1:-1;;;;;259:279:103:o;544:361::-;702:7;721:17;741:9;721:29;;760:100;787:7;796:63;;;;;;;;825:6;796:63;;;;;;841:6;796:63;;;;;;854:3;796:63;;;;;760:26;:100::i;:::-;;889:9;877:21;;;544:361;-1:-1:-1;;;;;544:361:103:o;135:118::-;241:66:88;135:118:103;:::o;1276:512:88:-;1360:12;1405:3;:10;;;1392:23;;:3;:10;;;:23;;;1384:32;;;;;;-1:-1:-1;1639:10:88;;1651;;;;;1663:7;;;;;1628:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1618:54;;;;;;1510:229;;;;;;;;;;;;;;;;;;;;;241:66;1510:229;;;;;;;;;;;;;;;;;;;;;;;;;1479:278;;;;;;1276:512::o"},"methodIdentifiers":{"POOL_INIT_CODE_HASH()":"dc6fd8ab","computeAddress(address,address,address,uint24)":"8716c5ff","getGasCostOfComputeAddress(address,address,address,uint24)":"cce34ec6"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"POOL_INIT_CODE_HASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"computeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"getGasCostOfComputeAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/PoolAddressTest.sol\":\"PoolAddressTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xdd82100913bcb7c490e9e6912ab33994bd97d5a59e67209826ebf917bc8271c1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ecfc24c77d80aa718604d8a2c4d59460b76b5fd567d15206414e3838dd6698b7\",\"dweb:/ipfs/QmVtUC9dnade4RkzXaSqEFdAkiEftJ777jmT619LX2VLGv\"]},\"contracts/test/PoolAddressTest.sol\":{\"keccak256\":\"0x262c6a5ae2512ee88845eb370f3f90230693c6c0e0240f50156effb312973753\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c481151c8981e08ea1ac0933bed1feb7f600bad9018da0490c0426aa8ad0d53e\",\"dweb:/ipfs/QmPxs5a1CXuySNHSXgjdMaV82om2R2iNn7jjhMXPGchWA7\"]}},\"version\":1}"}},"contracts/test/PoolTicksCounterTest.sol":{"PoolTicksCounterTest":{"abi":[{"inputs":[{"internalType":"contract IAstraCLPool","name":"pool","type":"address"},{"internalType":"int24","name":"tickBefore","type":"int24"},{"internalType":"int24","name":"tickAfter","type":"int24"}],"name":"countInitializedTicksCrossed","outputs":[{"internalType":"uint32","name":"initializedTicksCrossed","type":"uint32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061075e806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80634c5b941c14610030575b600080fd5b6100766004803603606081101561004657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020810135600290810b9160400135900b61008f565b6040805163ffffffff9092168252519081900360200190f35b60006100b273ffffffffffffffffffffffffffffffffffffffff851684846100ba565b949350505050565b60008060008060008060008060088b73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561010e57600080fd5b505afa158015610122573d6000803e3d6000fd5b505050506040513d602081101561013857600080fd5b5051600290810b908c900b8161014a57fe5b0560020b901d905060006101008c73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561019d57600080fd5b505afa1580156101b1573d6000803e3d6000fd5b505050506040513d60208110156101c757600080fd5b5051600290810b908d900b816101d957fe5b0560020b816101e457fe5b079050600060088d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561023157600080fd5b505afa158015610245573d6000803e3d6000fd5b505050506040513d602081101561025b57600080fd5b5051600290810b908d900b8161026d57fe5b0560020b901d905060006101008e73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102c057600080fd5b505afa1580156102d4573d6000803e3d6000fd5b505050506040513d60208110156102ea57600080fd5b5051600290810b908e900b816102fc57fe5b0560020b8161030757fe5b07905060008160ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296856040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561036857600080fd5b505afa15801561037c573d6000803e3d6000fd5b505050506040513d602081101561039257600080fd5b50511611801561042557508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103e357600080fd5b505afa1580156103f7573d6000803e3d6000fd5b505050506040513d602081101561040d57600080fd5b5051600290810b908d900b8161041f57fe5b0760020b155b801561043657508b60020b8d60020b135b945060008360ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296876040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561049657600080fd5b505afa1580156104aa573d6000803e3d6000fd5b505050506040513d60208110156104c057600080fd5b50511611801561055357508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561051157600080fd5b505afa158015610525573d6000803e3d6000fd5b505050506040513d602081101561053b57600080fd5b5051600290810b908e900b8161054d57fe5b0760020b155b801561056457508b60020b8d60020b125b95508160010b8460010b128061059057508160010b8460010b14801561059057508060ff168360ff1611155b156105a6578399508297508198508096506105b3565b8199508097508398508296505b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff87161b9150505b8560010b8760010b136106ea578560010b8760010b1415610624577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff858103161c165b6000818c73ffffffffffffffffffffffffffffffffffffffff16635339c2968a6040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561067b57600080fd5b505afa15801561068f573d6000803e3d6000fd5b505050506040513d60208110156106a557600080fd5b50511690506106b381610712565b61ffff16989098019750506001909501947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6105df565b81156106f7576001880397505b8215610704576001880397505b505050505050509392505050565b6000805b821561074b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830190921691600101610716565b9291505056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x75E DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4C5B941C EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x76 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x40 ADD CALLDATALOAD SWAP1 SIGNEXTEND PUSH2 0x8F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0xB2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP5 DUP5 PUSH2 0xBA JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x8 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x122 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x138 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP13 SWAP1 SIGNEXTEND DUP2 PUSH2 0x14A JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND SWAP1 SAR SWAP1 POP PUSH1 0x0 PUSH2 0x100 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x1D9 JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x1E4 JUMPI INVALID JUMPDEST SMOD SWAP1 POP PUSH1 0x0 PUSH1 0x8 DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x245 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x26D JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND SWAP1 SAR SWAP1 POP PUSH1 0x0 PUSH2 0x100 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP15 SWAP1 SIGNEXTEND DUP2 PUSH2 0x2FC JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x307 JUMPI INVALID JUMPDEST SMOD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL DUP16 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5339C296 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x368 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x37C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x392 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND GT DUP1 ISZERO PUSH2 0x425 JUMPI POP DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x41F JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x436 JUMPI POP DUP12 PUSH1 0x2 SIGNEXTEND DUP14 PUSH1 0x2 SIGNEXTEND SGT JUMPDEST SWAP5 POP PUSH1 0x0 DUP4 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL DUP16 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5339C296 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND GT DUP1 ISZERO PUSH2 0x553 JUMPI POP DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x525 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x53B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP15 SWAP1 SIGNEXTEND DUP2 PUSH2 0x54D JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x564 JUMPI POP DUP12 PUSH1 0x2 SIGNEXTEND DUP14 PUSH1 0x2 SIGNEXTEND SLT JUMPDEST SWAP6 POP DUP2 PUSH1 0x1 SIGNEXTEND DUP5 PUSH1 0x1 SIGNEXTEND SLT DUP1 PUSH2 0x590 JUMPI POP DUP2 PUSH1 0x1 SIGNEXTEND DUP5 PUSH1 0x1 SIGNEXTEND EQ DUP1 ISZERO PUSH2 0x590 JUMPI POP DUP1 PUSH1 0xFF AND DUP4 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO PUSH2 0x5A6 JUMPI DUP4 SWAP10 POP DUP3 SWAP8 POP DUP2 SWAP9 POP DUP1 SWAP7 POP PUSH2 0x5B3 JUMP JUMPDEST DUP2 SWAP10 POP DUP1 SWAP8 POP DUP4 SWAP9 POP DUP3 SWAP7 POP JUMPDEST POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xFF DUP8 AND SHL SWAP2 POP POP JUMPDEST DUP6 PUSH1 0x1 SIGNEXTEND DUP8 PUSH1 0x1 SIGNEXTEND SGT PUSH2 0x6EA JUMPI DUP6 PUSH1 0x1 SIGNEXTEND DUP8 PUSH1 0x1 SIGNEXTEND EQ ISZERO PUSH2 0x624 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xFF DUP6 DUP2 SUB AND SHR AND JUMPDEST PUSH1 0x0 DUP2 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5339C296 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x67B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x68F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND SWAP1 POP PUSH2 0x6B3 DUP2 PUSH2 0x712 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP9 SWAP1 SWAP9 ADD SWAP8 POP POP PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x5DF JUMP JUMPDEST DUP2 ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x1 DUP9 SUB SWAP8 POP JUMPDEST DUP3 ISZERO PUSH2 0x704 JUMPI PUSH1 0x1 DUP9 SUB SWAP8 POP JUMPDEST POP POP POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 ISZERO PUSH2 0x74B JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD SWAP1 SWAP3 AND SWAP2 PUSH1 0x1 ADD PUSH2 0x716 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"240:341:104:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061002b5760003560e01c80634c5b941c14610030575b600080fd5b6100766004803603606081101561004657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020810135600290810b9160400135900b61008f565b6040805163ffffffff9092168252519081900360200190f35b60006100b273ffffffffffffffffffffffffffffffffffffffff851684846100ba565b949350505050565b60008060008060008060008060088b73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561010e57600080fd5b505afa158015610122573d6000803e3d6000fd5b505050506040513d602081101561013857600080fd5b5051600290810b908c900b8161014a57fe5b0560020b901d905060006101008c73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561019d57600080fd5b505afa1580156101b1573d6000803e3d6000fd5b505050506040513d60208110156101c757600080fd5b5051600290810b908d900b816101d957fe5b0560020b816101e457fe5b079050600060088d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561023157600080fd5b505afa158015610245573d6000803e3d6000fd5b505050506040513d602081101561025b57600080fd5b5051600290810b908d900b8161026d57fe5b0560020b901d905060006101008e73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102c057600080fd5b505afa1580156102d4573d6000803e3d6000fd5b505050506040513d60208110156102ea57600080fd5b5051600290810b908e900b816102fc57fe5b0560020b8161030757fe5b07905060008160ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296856040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561036857600080fd5b505afa15801561037c573d6000803e3d6000fd5b505050506040513d602081101561039257600080fd5b50511611801561042557508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103e357600080fd5b505afa1580156103f7573d6000803e3d6000fd5b505050506040513d602081101561040d57600080fd5b5051600290810b908d900b8161041f57fe5b0760020b155b801561043657508b60020b8d60020b135b945060008360ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296876040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561049657600080fd5b505afa1580156104aa573d6000803e3d6000fd5b505050506040513d60208110156104c057600080fd5b50511611801561055357508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561051157600080fd5b505afa158015610525573d6000803e3d6000fd5b505050506040513d602081101561053b57600080fd5b5051600290810b908e900b8161054d57fe5b0760020b155b801561056457508b60020b8d60020b125b95508160010b8460010b128061059057508160010b8460010b14801561059057508060ff168360ff1611155b156105a6578399508297508198508096506105b3565b8199508097508398508296505b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff87161b9150505b8560010b8760010b136106ea578560010b8760010b1415610624577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff858103161c165b6000818c73ffffffffffffffffffffffffffffffffffffffff16635339c2968a6040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561067b57600080fd5b505afa15801561068f573d6000803e3d6000fd5b505050506040513d60208110156106a557600080fd5b50511690506106b381610712565b61ffff16989098019750506001909501947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6105df565b81156106f7576001880397505b8215610704576001880397505b505050505050509392505050565b6000805b821561074b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830190921691600101610716565b9291505056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4C5B941C EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x76 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x40 ADD CALLDATALOAD SWAP1 SIGNEXTEND PUSH2 0x8F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0xB2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP5 DUP5 PUSH2 0xBA JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x8 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x122 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x138 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP13 SWAP1 SIGNEXTEND DUP2 PUSH2 0x14A JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND SWAP1 SAR SWAP1 POP PUSH1 0x0 PUSH2 0x100 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x1D9 JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x1E4 JUMPI INVALID JUMPDEST SMOD SWAP1 POP PUSH1 0x0 PUSH1 0x8 DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x245 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x26D JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND SWAP1 SAR SWAP1 POP PUSH1 0x0 PUSH2 0x100 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP15 SWAP1 SIGNEXTEND DUP2 PUSH2 0x2FC JUMPI INVALID JUMPDEST SDIV PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x307 JUMPI INVALID JUMPDEST SMOD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL DUP16 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5339C296 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x368 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x37C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x392 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND GT DUP1 ISZERO PUSH2 0x425 JUMPI POP DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP14 SWAP1 SIGNEXTEND DUP2 PUSH2 0x41F JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x436 JUMPI POP DUP12 PUSH1 0x2 SIGNEXTEND DUP14 PUSH1 0x2 SIGNEXTEND SGT JUMPDEST SWAP5 POP PUSH1 0x0 DUP4 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL DUP16 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5339C296 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND GT DUP1 ISZERO PUSH2 0x553 JUMPI POP DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x525 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x53B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP15 SWAP1 SIGNEXTEND DUP2 PUSH2 0x54D JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x564 JUMPI POP DUP12 PUSH1 0x2 SIGNEXTEND DUP14 PUSH1 0x2 SIGNEXTEND SLT JUMPDEST SWAP6 POP DUP2 PUSH1 0x1 SIGNEXTEND DUP5 PUSH1 0x1 SIGNEXTEND SLT DUP1 PUSH2 0x590 JUMPI POP DUP2 PUSH1 0x1 SIGNEXTEND DUP5 PUSH1 0x1 SIGNEXTEND EQ DUP1 ISZERO PUSH2 0x590 JUMPI POP DUP1 PUSH1 0xFF AND DUP4 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO PUSH2 0x5A6 JUMPI DUP4 SWAP10 POP DUP3 SWAP8 POP DUP2 SWAP9 POP DUP1 SWAP7 POP PUSH2 0x5B3 JUMP JUMPDEST DUP2 SWAP10 POP DUP1 SWAP8 POP DUP4 SWAP9 POP DUP3 SWAP7 POP JUMPDEST POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xFF DUP8 AND SHL SWAP2 POP POP JUMPDEST DUP6 PUSH1 0x1 SIGNEXTEND DUP8 PUSH1 0x1 SIGNEXTEND SGT PUSH2 0x6EA JUMPI DUP6 PUSH1 0x1 SIGNEXTEND DUP8 PUSH1 0x1 SIGNEXTEND EQ ISZERO PUSH2 0x624 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xFF DUP6 DUP2 SUB AND SHR AND JUMPDEST PUSH1 0x0 DUP2 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5339C296 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x67B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x68F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD AND SWAP1 POP PUSH2 0x6B3 DUP2 PUSH2 0x712 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP9 SWAP1 SWAP9 ADD SWAP8 POP POP PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x5DF JUMP JUMPDEST DUP2 ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x1 DUP9 SUB SWAP8 POP JUMPDEST DUP3 ISZERO PUSH2 0x704 JUMPI PUSH1 0x1 DUP9 SUB SWAP8 POP JUMPDEST POP POP POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 ISZERO PUSH2 0x74B JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD SWAP1 SWAP3 AND SWAP2 PUSH1 0x1 ADD PUSH2 0x716 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"240:341:104:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;322:257;;;;;;;;;;;;;;;;-1:-1:-1;322:257:104;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;467:30;516:56;:33;;;550:10;562:9;516:33;:56::i;:::-;509:63;322:257;-1:-1:-1;;;;322:257:104:o;693:3303:89:-;838:30;880:18;908:19;937:17;964:18;992:26;1028:25;1181:13;1240:1;1217:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1217:18:89;1204:31;;;;;;;;;;;;;;1203:38;;;;1181:61;;1256:12;1313:3;1291:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1291:18:89;1278:31;;;;;;;;;;;;;;1277:39;;;;;;;;1256:61;;1332:18;1395:1;1372:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1372:18:89;1360:30;;;;;;;;;;;;;;1359:37;;;;1332:65;;1411:17;1472:3;1450:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1450:18:89;1438:30;;;;;;;;;;;;;;1437:38;;;;;;;;1411:65;;1951:1;1935:11;1930:16;;:1;:16;;1897:4;:15;;;1913:12;1897:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1897:29:89;:50;1896:56;1895:117;;;;;1987:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1987:18:89;1975:30;;;;;;;;;;;;;;1974:37;;;1895:117;:161;;;;;2046:9;2033:22;;:10;:22;;;1895:161;1856:200;;2366:1;2355:6;2350:11;;:1;:11;;2322:4;:15;;;2338:7;2322:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2322:24:89;:40;2321:46;2320:108;;;;;2403:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2403:18:89;2390:31;;;;;;;;;;;;;;2389:38;;;2320:108;:152;;;;;2462:9;2449:22;;:10;:22;;;2320:152;2280:192;;2501:12;2491:22;;:7;:22;;;:76;;;;2529:12;2518:23;;:7;:23;;;:48;;;;;2555:11;2545:21;;:6;:21;;;;2518:48;2487:454;;;2602:7;2587:22;;2641:6;2627:20;;2681:12;2665:28;;2726:11;2711:26;;2487:454;;;2791:12;2776:27;;2835:11;2821:25;;2880:7;2864:23;;2920:6;2905:21;;2487:454;-1:-1:-1;;3155:17:89;:32;;;;;-1:-1:-1;;3197:573:89;3220:13;3204:29;;:12;:29;;;3197:573;;3383:13;3367:29;;:12;:29;;;3363:125;;;3431:17;3453:3;:18;;;3431:41;;3423:50;3363:125;3502:14;3551:4;3519;:15;;;3535:12;3519:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3519:29:89;:36;;-1:-1:-1;3596:20:89;3519:36;3596:12;:20::i;:::-;3569:47;;;;;;;-1:-1:-1;;3630:14:89;;;;;3742:17;3197:573;;;3784:20;3780:79;;;3847:1;3820:28;;;;3780:79;3873:21;3869:80;;;3937:1;3910:28;;;;3869:80;3959:30;;;;;;;693:3303;;;;;:::o;4002:197::-;4057:6;;4100:72;4107:6;;4100:72;;4155:5;;;4149:12;;;;4129:6;;4100:72;;;4188:4;4002:197;-1:-1:-1;;4002:197:89:o"},"methodIdentifiers":{"countInitializedTicksCrossed(address,int24,int24)":"4c5b941c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IAstraCLPool\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickBefore\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickAfter\",\"type\":\"int24\"}],\"name\":\"countInitializedTicksCrossed\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"initializedTicksCrossed\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/PoolTicksCounterTest.sol\":\"PoolTicksCounterTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"contracts/libraries/PoolTicksCounter.sol\":{\"keccak256\":\"0xcf0e9ed4ebdc3871261016f3c2fe5bd58f019a09f402e94f3796963bea0ecc3f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4251f98e344e12aa150d883c0c7e5f76790e26d783e683472f4a32df71dbe6c5\",\"dweb:/ipfs/QmNREWy9rHEYPeBuVXa6LWEDjr1K8hFah3ne4E25P1HanB\"]},\"contracts/test/PoolTicksCounterTest.sol\":{\"keccak256\":\"0x1dcecac1b1415f376ab6cd03caef5f4613aba5aab3055e1c10485ba2fb18c4f6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b199f28b5102b6d725fc1c26f8c3c21363a77259b393c79f2e98b053b2b4a362\",\"dweb:/ipfs/QmQBY4SGhfN1yAMVX1fmSuoDiGivowVdhG3pjaWvoewUVS\"]}},\"version\":1}"}},"contracts/test/PositionValueTest.sol":{"PositionValueTest":{"abi":[{"inputs":[{"internalType":"contract INonfungiblePositionManager","name":"nft","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"fees","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract INonfungiblePositionManager","name":"nft","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"feesGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract INonfungiblePositionManager","name":"nft","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint160","name":"sqrtRatioX96","type":"uint160"}],"name":"principal","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract INonfungiblePositionManager","name":"nft","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint160","name":"sqrtRatioX96","type":"uint160"}],"name":"principalGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract INonfungiblePositionManager","name":"nft","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint160","name":"sqrtRatioX96","type":"uint160"}],"name":"total","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract INonfungiblePositionManager","name":"nft","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint160","name":"sqrtRatioX96","type":"uint160"}],"name":"totalGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061120b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80635b6dc092116100505780635b6dc0921461015757806390594f911461019a578063ee4e9ba3146101dd57610072565b80632263539714610077578063263a5362146100d35780633803770c1461010c575b600080fd5b6100ba6004803603606081101561008d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359160409091013516610220565b6040805192835260208301919091528051918290030190f35b6100ba600480360360408110156100e957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561023a565b6101456004803603604081101561012257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610252565b60408051918252519081900360200190f35b6100ba6004803603606081101561016d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040909101351661026e565b610145600480360360608110156101b057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040909101351661027c565b610145600480360360608110156101f357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040909101351661029c565b60008061022e8585856102a9565b91509150935093915050565b6000806102478484610372565b915091509250929050565b6000805a90506102628484610372565b50505a90039392505050565b60008061022e858585610567565b6000805a905061028d858585610567565b50505a900390505b9392505050565b6000805a905061028d8585855b60008060008060008773ffffffffffffffffffffffffffffffffffffffff166399fbab88886040518263ffffffff1660e01b8152600401808281526020019150506101806040518083038186803b15801561030357600080fd5b505afa158015610317573d6000803e3d6000fd5b505050506040513d61018081101561032e57600080fd5b5060a081015160c082015160e0909201519094509092509050610363866103548561059a565b61035d8561059a565b8461092d565b94509450505050935093915050565b6000806000806000806000806000806000808d73ffffffffffffffffffffffffffffffffffffffff166399fbab888e6040518263ffffffff1660e01b8152600401808281526020019150506101806040518083038186803b1580156103d657600080fd5b505afa1580156103ea573d6000803e3d6000fd5b505050506040513d61018081101561040157600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050506fffffffffffffffffffffffffffffffff169b506fffffffffffffffffffffffffffffffff169b509b509b509b509b509b509b509b509b5050506105528e6040518061014001604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018b62ffffff1681526020018a60020b81526020018960020b8152602001886fffffffffffffffffffffffffffffffff16815260200187815260200186815260200185815260200184815250610a17565b9b509b50505050505050505050509250929050565b6000806000806105788787876102a9565b915091506000806105898989610372565b940195505050019050935093915050565b60008060008360020b126105b1578260020b6105b9565b8260020b6000035b9050620d89e881111561062d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f5400000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60006001821661064e57700100000000000000000000000000000000610660565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610694576ffff97272373d413259a46990580e213a0260801c5b60048216156106b3576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156106d2576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156106f1576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615610710576fff973b41fa98c081472e6896dfb254c00260801c5b604082161561072f576fff2ea16466c96a3843ec78b326b528610260801c5b608082161561074e576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561076e576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561078e576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156107ae576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156107ce576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156107ee576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561080e576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161561082e576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161561084e576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561086f576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561088f576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156108ae576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156108cb576b048a170391f7dc42444e8fa20260801c5b60008460020b131561090457807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8161090057fe5b0490505b64010000000081061561091857600161091b565b60005b60ff16602082901c0192505050919050565b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161115610968579293925b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16116109ad576109a6858585610b7b565b9150610a0e565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161015610a00576109ec868585610b7b565b91506109f9858785610c2e565b9050610a0e565b610a0b858585610c2e565b90505b94509492505050565b600080600080610aec610add8773ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6957600080fd5b505afa158015610a7d573d6000803e3d6000fd5b505050506040513d6020811015610a9357600080fd5b505160408051606081018252895173ffffffffffffffffffffffffffffffffffffffff908116825260208b810151909116908201528982015162ffffff1691810191909152610cb2565b86606001518760800151610de8565b91509150846101000151610b2e8660c0015184038760a001516fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000611131565b019350846101200151610b6f8660e0015183038760a001516fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000611131565b01925050509250929050565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610bb5579192915b8373ffffffffffffffffffffffffffffffffffffffff16610c1e606060ff16846fffffffffffffffffffffffffffffffff16901b86860373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16611131565b81610c2557fe5b04949350505050565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610c68579192915b610caa826fffffffffffffffffffffffffffffffff1685850373ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000611131565b949350505050565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610610cf457600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0460d5808301919091528251808303909101815260f5909101909152805191012090565b60008060008573ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610e3357600080fd5b505afa158015610e47573d6000803e3d6000fd5b505050506040513d60e0811015610e5d57600080fd5b5060200151604080517ff30dba93000000000000000000000000000000000000000000000000000000008152600288900b60048201529051919250600091829173ffffffffffffffffffffffffffffffffffffffff8a169163f30dba939160248082019261010092909190829003018186803b158015610edc57600080fd5b505afa158015610ef0573d6000803e3d6000fd5b505050506040513d610100811015610f0757600080fd5b5060408082015160609092015181517ff30dba9300000000000000000000000000000000000000000000000000000000815260028a900b600482015291519294509250600091829173ffffffffffffffffffffffffffffffffffffffff8c169163f30dba939160248082019261010092909190829003018186803b158015610f8e57600080fd5b505afa158015610fa2573d6000803e3d6000fd5b505050506040513d610100811015610fb957600080fd5b5060408101516060909101519092509050600289810b9086900b1215610fe85781840396508083039550611124565b8760020b8560020b12156111195760008a73ffffffffffffffffffffffffffffffffffffffff1663f30583996040518163ffffffff1660e01b815260040160206040518083038186803b15801561103e57600080fd5b505afa158015611052573d6000803e3d6000fd5b505050506040513d602081101561106857600080fd5b5051604080517f46141319000000000000000000000000000000000000000000000000000000008152905191925060009173ffffffffffffffffffffffffffffffffffffffff8e16916346141319916004808301926020929190829003018186803b1580156110d657600080fd5b505afa1580156110ea573d6000803e3d6000fd5b505050506040513d602081101561110057600080fd5b5051918690038490039850508390038190039550611124565b838203965082810395505b5050505050935093915050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870986860292508281109083900303905080611185576000841161117a57600080fd5b508290049050610295565b80841161119157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a0290910302918190038190046001018684119095039490940291909403929092049190911791909102915050939250505056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x120B DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5B6DC092 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x5B6DC092 EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0x90594F91 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0xEE4E9BA3 EQ PUSH2 0x1DD JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x22635397 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x263A5362 EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x3803770C EQ PUSH2 0x10C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x220 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0xBA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x23A JUMP JUMPDEST PUSH2 0x145 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x252 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xBA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x16D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x26E JUMP JUMPDEST PUSH2 0x145 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x27C JUMP JUMPDEST PUSH2 0x145 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x29C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x22E DUP6 DUP6 DUP6 PUSH2 0x2A9 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x247 DUP5 DUP5 PUSH2 0x372 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x262 DUP5 DUP5 PUSH2 0x372 JUMP JUMPDEST POP POP GAS SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x22E DUP6 DUP6 DUP6 PUSH2 0x567 JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x28D DUP6 DUP6 DUP6 PUSH2 0x567 JUMP JUMPDEST POP POP GAS SWAP1 SUB SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x28D DUP6 DUP6 DUP6 JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x99FBAB88 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x317 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH2 0x180 DUP2 LT ISZERO PUSH2 0x32E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0xE0 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x363 DUP7 PUSH2 0x354 DUP6 PUSH2 0x59A JUMP JUMPDEST PUSH2 0x35D DUP6 PUSH2 0x59A JUMP JUMPDEST DUP5 PUSH2 0x92D JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x99FBAB88 DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH2 0x180 DUP2 LT ISZERO PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP12 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP POP POP PUSH2 0x552 DUP15 PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE POP PUSH2 0xA17 JUMP JUMPDEST SWAP12 POP SWAP12 POP POP POP POP POP POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x578 DUP8 DUP8 DUP8 PUSH2 0x2A9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x589 DUP10 DUP10 PUSH2 0x372 JUMP JUMPDEST SWAP5 ADD SWAP6 POP POP POP ADD SWAP1 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x5B1 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x5B9 JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x62D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x64E JUMPI PUSH17 0x100000000000000000000000000000000 PUSH2 0x660 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x694 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x6B3 JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x6D2 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x6F1 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x710 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x72F JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x74E JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x76E JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x78E JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x7AE JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x7CE JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x7EE JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x80E JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x82E JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x84E JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x86F JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x88F JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x8AE JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x8CB JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x904 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 PUSH2 0x900 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x918 JUMPI PUSH1 0x1 PUSH2 0x91B JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x968 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT PUSH2 0x9AD JUMPI PUSH2 0x9A6 DUP6 DUP6 DUP6 PUSH2 0xB7B JUMP JUMPDEST SWAP2 POP PUSH2 0xA0E JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0xA00 JUMPI PUSH2 0x9EC DUP7 DUP6 DUP6 PUSH2 0xB7B JUMP JUMPDEST SWAP2 POP PUSH2 0x9F9 DUP6 DUP8 DUP6 PUSH2 0xC2E JUMP JUMPDEST SWAP1 POP PUSH2 0xA0E JUMP JUMPDEST PUSH2 0xA0B DUP6 DUP6 DUP6 PUSH2 0xC2E JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0xAEC PUSH2 0xADD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC45A0155 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA7D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP10 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP12 DUP2 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP3 ADD MSTORE DUP10 DUP3 ADD MLOAD PUSH3 0xFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0xCB2 JUMP JUMPDEST DUP7 PUSH1 0x60 ADD MLOAD DUP8 PUSH1 0x80 ADD MLOAD PUSH2 0xDE8 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP5 PUSH2 0x100 ADD MLOAD PUSH2 0xB2E DUP7 PUSH1 0xC0 ADD MLOAD DUP5 SUB DUP8 PUSH1 0xA0 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH17 0x100000000000000000000000000000000 PUSH2 0x1131 JUMP JUMPDEST ADD SWAP4 POP DUP5 PUSH2 0x120 ADD MLOAD PUSH2 0xB6F DUP7 PUSH1 0xE0 ADD MLOAD DUP4 SUB DUP8 PUSH1 0xA0 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH17 0x100000000000000000000000000000000 PUSH2 0x1131 JUMP JUMPDEST ADD SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0xBB5 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC1E PUSH1 0x60 PUSH1 0xFF AND DUP5 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SHL DUP7 DUP7 SUB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1131 JUMP JUMPDEST DUP2 PUSH2 0xC25 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0xC68 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0xCAA DUP3 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 SUB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH13 0x1000000000000000000000000 PUSH2 0x1131 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0xCF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 DUP6 ADD MSTORE SWAP4 SWAP1 SWAP2 AND DUP4 DUP6 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x80 DUP5 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 PUSH1 0xD5 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xF5 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE47 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xE5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xF30DBA9300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP9 SWAP1 SIGNEXTEND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND SWAP2 PUSH4 0xF30DBA93 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH2 0x100 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEF0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH2 0x100 DUP2 LT ISZERO PUSH2 0xF07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x60 SWAP1 SWAP3 ADD MLOAD DUP2 MLOAD PUSH32 0xF30DBA9300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP11 SWAP1 SIGNEXTEND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP2 PUSH4 0xF30DBA93 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH2 0x100 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH2 0x100 DUP2 LT ISZERO PUSH2 0xFB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x60 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 DUP7 SWAP1 SIGNEXTEND SLT ISZERO PUSH2 0xFE8 JUMPI DUP2 DUP5 SUB SWAP7 POP DUP1 DUP4 SUB SWAP6 POP PUSH2 0x1124 JUMP JUMPDEST DUP8 PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x1119 JUMPI PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF3058399 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x103E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1052 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1068 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x4614131900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP2 PUSH4 0x46141319 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 DUP7 SWAP1 SUB DUP5 SWAP1 SUB SWAP9 POP POP DUP4 SWAP1 SUB DUP2 SWAP1 SUB SWAP6 POP PUSH2 0x1124 JUMP JUMPDEST DUP4 DUP3 SUB SWAP7 POP DUP3 DUP2 SUB SWAP6 POP JUMPDEST POP POP POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x1185 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x117A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x295 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x1191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"162:1581:105:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c80635b6dc092116100505780635b6dc0921461015757806390594f911461019a578063ee4e9ba3146101dd57610072565b80632263539714610077578063263a5362146100d35780633803770c1461010c575b600080fd5b6100ba6004803603606081101561008d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359160409091013516610220565b6040805192835260208301919091528051918290030190f35b6100ba600480360360408110156100e957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561023a565b6101456004803603604081101561012257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610252565b60408051918252519081900360200190f35b6100ba6004803603606081101561016d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040909101351661026e565b610145600480360360608110156101b057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040909101351661027c565b610145600480360360608110156101f357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040909101351661029c565b60008061022e8585856102a9565b91509150935093915050565b6000806102478484610372565b915091509250929050565b6000805a90506102628484610372565b50505a90039392505050565b60008061022e858585610567565b6000805a905061028d858585610567565b50505a900390505b9392505050565b6000805a905061028d8585855b60008060008060008773ffffffffffffffffffffffffffffffffffffffff166399fbab88886040518263ffffffff1660e01b8152600401808281526020019150506101806040518083038186803b15801561030357600080fd5b505afa158015610317573d6000803e3d6000fd5b505050506040513d61018081101561032e57600080fd5b5060a081015160c082015160e0909201519094509092509050610363866103548561059a565b61035d8561059a565b8461092d565b94509450505050935093915050565b6000806000806000806000806000806000808d73ffffffffffffffffffffffffffffffffffffffff166399fbab888e6040518263ffffffff1660e01b8152600401808281526020019150506101806040518083038186803b1580156103d657600080fd5b505afa1580156103ea573d6000803e3d6000fd5b505050506040513d61018081101561040157600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050506fffffffffffffffffffffffffffffffff169b506fffffffffffffffffffffffffffffffff169b509b509b509b509b509b509b509b509b5050506105528e6040518061014001604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018b62ffffff1681526020018a60020b81526020018960020b8152602001886fffffffffffffffffffffffffffffffff16815260200187815260200186815260200185815260200184815250610a17565b9b509b50505050505050505050509250929050565b6000806000806105788787876102a9565b915091506000806105898989610372565b940195505050019050935093915050565b60008060008360020b126105b1578260020b6105b9565b8260020b6000035b9050620d89e881111561062d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f5400000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60006001821661064e57700100000000000000000000000000000000610660565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610694576ffff97272373d413259a46990580e213a0260801c5b60048216156106b3576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156106d2576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156106f1576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615610710576fff973b41fa98c081472e6896dfb254c00260801c5b604082161561072f576fff2ea16466c96a3843ec78b326b528610260801c5b608082161561074e576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561076e576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561078e576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156107ae576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156107ce576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156107ee576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561080e576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161561082e576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161561084e576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561086f576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561088f576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156108ae576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156108cb576b048a170391f7dc42444e8fa20260801c5b60008460020b131561090457807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8161090057fe5b0490505b64010000000081061561091857600161091b565b60005b60ff16602082901c0192505050919050565b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161115610968579293925b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16116109ad576109a6858585610b7b565b9150610a0e565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161015610a00576109ec868585610b7b565b91506109f9858785610c2e565b9050610a0e565b610a0b858585610c2e565b90505b94509492505050565b600080600080610aec610add8773ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6957600080fd5b505afa158015610a7d573d6000803e3d6000fd5b505050506040513d6020811015610a9357600080fd5b505160408051606081018252895173ffffffffffffffffffffffffffffffffffffffff908116825260208b810151909116908201528982015162ffffff1691810191909152610cb2565b86606001518760800151610de8565b91509150846101000151610b2e8660c0015184038760a001516fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000611131565b019350846101200151610b6f8660e0015183038760a001516fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000611131565b01925050509250929050565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610bb5579192915b8373ffffffffffffffffffffffffffffffffffffffff16610c1e606060ff16846fffffffffffffffffffffffffffffffff16901b86860373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16611131565b81610c2557fe5b04949350505050565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610c68579192915b610caa826fffffffffffffffffffffffffffffffff1685850373ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000611131565b949350505050565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610610cf457600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0460d5808301919091528251808303909101815260f5909101909152805191012090565b60008060008573ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610e3357600080fd5b505afa158015610e47573d6000803e3d6000fd5b505050506040513d60e0811015610e5d57600080fd5b5060200151604080517ff30dba93000000000000000000000000000000000000000000000000000000008152600288900b60048201529051919250600091829173ffffffffffffffffffffffffffffffffffffffff8a169163f30dba939160248082019261010092909190829003018186803b158015610edc57600080fd5b505afa158015610ef0573d6000803e3d6000fd5b505050506040513d610100811015610f0757600080fd5b5060408082015160609092015181517ff30dba9300000000000000000000000000000000000000000000000000000000815260028a900b600482015291519294509250600091829173ffffffffffffffffffffffffffffffffffffffff8c169163f30dba939160248082019261010092909190829003018186803b158015610f8e57600080fd5b505afa158015610fa2573d6000803e3d6000fd5b505050506040513d610100811015610fb957600080fd5b5060408101516060909101519092509050600289810b9086900b1215610fe85781840396508083039550611124565b8760020b8560020b12156111195760008a73ffffffffffffffffffffffffffffffffffffffff1663f30583996040518163ffffffff1660e01b815260040160206040518083038186803b15801561103e57600080fd5b505afa158015611052573d6000803e3d6000fd5b505050506040513d602081101561106857600080fd5b5051604080517f46141319000000000000000000000000000000000000000000000000000000008152905191925060009173ffffffffffffffffffffffffffffffffffffffff8e16916346141319916004808301926020929190829003018186803b1580156110d657600080fd5b505afa1580156110ea573d6000803e3d6000fd5b505050506040513d602081101561110057600080fd5b5051918690038490039850508390038190039550611124565b838203965082810395505b5050505050935093915050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870986860292508281109083900303905080611185576000841161117a57600080fd5b508290049050610295565b80841161119157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a0290910302918190038190046001018684119095039490940291909403929092049190911791909102915050939250505056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5B6DC092 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x5B6DC092 EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0x90594F91 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0xEE4E9BA3 EQ PUSH2 0x1DD JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x22635397 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x263A5362 EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x3803770C EQ PUSH2 0x10C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x220 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0xBA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x23A JUMP JUMPDEST PUSH2 0x145 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x252 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xBA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x16D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x26E JUMP JUMPDEST PUSH2 0x145 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x27C JUMP JUMPDEST PUSH2 0x145 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x29C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x22E DUP6 DUP6 DUP6 PUSH2 0x2A9 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x247 DUP5 DUP5 PUSH2 0x372 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x262 DUP5 DUP5 PUSH2 0x372 JUMP JUMPDEST POP POP GAS SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x22E DUP6 DUP6 DUP6 PUSH2 0x567 JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x28D DUP6 DUP6 DUP6 PUSH2 0x567 JUMP JUMPDEST POP POP GAS SWAP1 SUB SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x28D DUP6 DUP6 DUP6 JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x99FBAB88 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x317 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH2 0x180 DUP2 LT ISZERO PUSH2 0x32E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0xE0 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x363 DUP7 PUSH2 0x354 DUP6 PUSH2 0x59A JUMP JUMPDEST PUSH2 0x35D DUP6 PUSH2 0x59A JUMP JUMPDEST DUP5 PUSH2 0x92D JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x99FBAB88 DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH2 0x180 DUP2 LT ISZERO PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP12 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP SWAP12 POP POP POP PUSH2 0x552 DUP15 PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE POP PUSH2 0xA17 JUMP JUMPDEST SWAP12 POP SWAP12 POP POP POP POP POP POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x578 DUP8 DUP8 DUP8 PUSH2 0x2A9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x589 DUP10 DUP10 PUSH2 0x372 JUMP JUMPDEST SWAP5 ADD SWAP6 POP POP POP ADD SWAP1 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x5B1 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x5B9 JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x62D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x64E JUMPI PUSH17 0x100000000000000000000000000000000 PUSH2 0x660 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x694 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x6B3 JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x6D2 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x6F1 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x710 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x72F JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x74E JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x76E JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x78E JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x7AE JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x7CE JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x7EE JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x80E JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x82E JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x84E JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x86F JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x88F JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x8AE JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x8CB JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x904 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 PUSH2 0x900 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x918 JUMPI PUSH1 0x1 PUSH2 0x91B JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x968 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT PUSH2 0x9AD JUMPI PUSH2 0x9A6 DUP6 DUP6 DUP6 PUSH2 0xB7B JUMP JUMPDEST SWAP2 POP PUSH2 0xA0E JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0xA00 JUMPI PUSH2 0x9EC DUP7 DUP6 DUP6 PUSH2 0xB7B JUMP JUMPDEST SWAP2 POP PUSH2 0x9F9 DUP6 DUP8 DUP6 PUSH2 0xC2E JUMP JUMPDEST SWAP1 POP PUSH2 0xA0E JUMP JUMPDEST PUSH2 0xA0B DUP6 DUP6 DUP6 PUSH2 0xC2E JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0xAEC PUSH2 0xADD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC45A0155 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA7D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP10 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP12 DUP2 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP3 ADD MSTORE DUP10 DUP3 ADD MLOAD PUSH3 0xFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0xCB2 JUMP JUMPDEST DUP7 PUSH1 0x60 ADD MLOAD DUP8 PUSH1 0x80 ADD MLOAD PUSH2 0xDE8 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP5 PUSH2 0x100 ADD MLOAD PUSH2 0xB2E DUP7 PUSH1 0xC0 ADD MLOAD DUP5 SUB DUP8 PUSH1 0xA0 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH17 0x100000000000000000000000000000000 PUSH2 0x1131 JUMP JUMPDEST ADD SWAP4 POP DUP5 PUSH2 0x120 ADD MLOAD PUSH2 0xB6F DUP7 PUSH1 0xE0 ADD MLOAD DUP4 SUB DUP8 PUSH1 0xA0 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH17 0x100000000000000000000000000000000 PUSH2 0x1131 JUMP JUMPDEST ADD SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0xBB5 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC1E PUSH1 0x60 PUSH1 0xFF AND DUP5 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SHL DUP7 DUP7 SUB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1131 JUMP JUMPDEST DUP2 PUSH2 0xC25 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0xC68 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0xCAA DUP3 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 SUB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH13 0x1000000000000000000000000 PUSH2 0x1131 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0xCF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 DUP6 ADD MSTORE SWAP4 SWAP1 SWAP2 AND DUP4 DUP6 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x80 DUP5 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 PUSH1 0xD5 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xF5 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE47 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xE5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xF30DBA9300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP9 SWAP1 SIGNEXTEND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND SWAP2 PUSH4 0xF30DBA93 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH2 0x100 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEF0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH2 0x100 DUP2 LT ISZERO PUSH2 0xF07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0x60 SWAP1 SWAP3 ADD MLOAD DUP2 MLOAD PUSH32 0xF30DBA9300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP11 SWAP1 SIGNEXTEND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP2 PUSH4 0xF30DBA93 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH2 0x100 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH2 0x100 DUP2 LT ISZERO PUSH2 0xFB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x60 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 DUP7 SWAP1 SIGNEXTEND SLT ISZERO PUSH2 0xFE8 JUMPI DUP2 DUP5 SUB SWAP7 POP DUP1 DUP4 SUB SWAP6 POP PUSH2 0x1124 JUMP JUMPDEST DUP8 PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x1119 JUMPI PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF3058399 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x103E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1052 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1068 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x4614131900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP2 PUSH4 0x46141319 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 DUP7 SWAP1 SUB DUP5 SWAP1 SUB SWAP9 POP POP DUP4 SWAP1 SUB DUP2 SWAP1 SUB SWAP6 POP PUSH2 0x1124 JUMP JUMPDEST DUP4 DUP3 SUB SWAP7 POP DUP3 DUP2 SUB SWAP6 POP JUMPDEST POP POP POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x1185 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x117A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x295 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x1191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"162:1581:105:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;446:253;;;;;;;;;;;;;;;;-1:-1:-1;446:253:105;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;705:199;;;;;;;;;;;;;;;;-1:-1:-1;705:199:105;;;;;;;;;:::i;1516:225::-;;;;;;;;;;;;;;;;-1:-1:-1;1516:225:105;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;195:245;;;;;;;;;;;;;;;;-1:-1:-1;195:245:105;;;;;;;;;;;;;;;;;;:::i;910:293::-;;;;;;;;;;;;;;;;-1:-1:-1;910:293:105;;;;;;;;;;;;;;;;;;:::i;1209:301::-;;;;;;;;;;;;;;;;-1:-1:-1;1209:301:105;;;;;;;;;;;;;;;;;;:::i;446:253::-;590:15;607;641:51;665:3;670:7;679:12;641:23;:51::i;:::-;634:58;;;;446:253;;;;;;:::o;705:199::-;814:15;831;865:32;884:3;889:7;865:18;:32::i;:::-;858:39;;;;705:199;;;;;:::o;1516:225::-;1606:7;1625:17;1645:9;1625:29;;1664:32;1683:3;1688:7;1664:18;:32::i;:::-;;;1725:9;1713:21;;;1516:225;-1:-1:-1;;;1516:225:105:o;195:245::-;335:15;352;386:47;406:3;411:7;420:12;386:19;:47::i;910:293::-;1053:7;1072:17;1092:9;1072:29;;1111:47;1131:3;1136:7;1145:12;1111:19;:47::i;:::-;;;1187:9;1175:21;;;-1:-1:-1;910:293:105;;;;;;:::o;1209:301::-;1356:7;1375:17;1395:9;1375:29;;1414:51;1438:3;1443:7;1452:12;2381:567:91;2537:15;2554;2592;2609;2626:17;2655:15;:25;;;2681:7;2655:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2655:34:91;;;;;;;;;;;;;;;-1:-1:-1;2655:34:91;;-1:-1:-1;2655:34:91;-1:-1:-1;2719:222:91;2776:12;2806:38;2655:34;2806:27;:38::i;:::-;2862;2890:9;2862:27;:38::i;:::-;2918:9;2719:39;:222::i;:::-;2700:241;;;;;;;2381:567;;;;;;:::o;3628:1215::-;3749:15;3766;3835:14;3863;3891:10;3915:15;3944;3973:17;4004:40;4058;4112:19;4145;4177:15;:25;;;4203:7;4177:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3793:418;;;;;;;;;;;;;;;;;;;;;;;;;;4241:595;4264:15;4297:525;;;;;;;;4337:6;4297:525;;;;;;4373:6;4297:525;;;;;;4406:3;4297:525;;;;;;4442:9;4297:525;;;;;;4484:9;4297:525;;;;;;4526:9;4297:525;;;;;;4591:32;4297:525;;;;4679:32;4297:525;;;;4746:11;4297:525;;;;4792:11;4297:525;;;4241:5;:595::i;:::-;4222:614;;;;;;;;;;;;;;3628:1215;;;;;:::o;1387:469::-;1539:15;1556;1584:24;1610;1638:49;1648:15;1665:7;1674:12;1638:9;:49::i;:::-;1583:104;;;;1698:18;1718;1740:30;1745:15;1762:7;1740:4;:30::i;:::-;1788:29;;;-1:-1:-1;;;1819:29:91;;-1:-1:-1;1387:469:91;;;;;;:::o;1362:2580:20:-;1425:20;1457:15;1482:1;1475:4;:8;;;:57;;1526:4;1519:12;;1475:57;;;1502:4;1495:12;;1494:13;;1475:57;1457:75;-1:-1:-1;644:9:20;1550:28;;;1542:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1595:13;1621:3;1611:13;;:93;;1669:35;1611:93;;;1632:34;1611:93;1595:109;;;-1:-1:-1;1728:3:20;1718:13;;:18;1714:83;;1755:34;1747:42;1794:3;1746:51;1714:83;1821:3;1811:13;;:18;1807:83;;1848:34;1840:42;1887:3;1839:51;1807:83;1914:3;1904:13;;:18;1900:83;;1941:34;1933:42;1980:3;1932:51;1900:83;2007:4;1997:14;;:19;1993:84;;2035:34;2027:42;2074:3;2026:51;1993:84;2101:4;2091:14;;:19;2087:84;;2129:34;2121:42;2168:3;2120:51;2087:84;2195:4;2185:14;;:19;2181:84;;2223:34;2215:42;2262:3;2214:51;2181:84;2289:4;2279:14;;:19;2275:84;;2317:34;2309:42;2356:3;2308:51;2275:84;2383:5;2373:15;;:20;2369:85;;2412:34;2404:42;2451:3;2403:51;2369:85;2478:5;2468:15;;:20;2464:85;;2507:34;2499:42;2546:3;2498:51;2464:85;2573:5;2563:15;;:20;2559:85;;2602:34;2594:42;2641:3;2593:51;2559:85;2668:5;2658:15;;:20;2654:85;;2697:34;2689:42;2736:3;2688:51;2654:85;2763:6;2753:16;;:21;2749:86;;2793:34;2785:42;2832:3;2784:51;2749:86;2859:6;2849:16;;:21;2845:86;;2889:34;2881:42;2928:3;2880:51;2845:86;2955:6;2945:16;;:21;2941:86;;2985:34;2977:42;3024:3;2976:51;2941:86;3051:6;3041:16;;:21;3037:86;;3081:34;3073:42;3120:3;3072:51;3037:86;3147:7;3137:17;;:22;3133:86;;3178:33;3170:41;3216:3;3169:50;3133:86;3243:7;3233:17;;:22;3229:85;;3274:32;3266:40;3311:3;3265:49;3229:85;3338:7;3328:17;;:22;3324:83;;3369:30;3361:38;3404:3;3360:47;3324:83;3431:7;3421:17;;:22;3417:78;;3462:25;3454:33;3492:3;3453:42;3417:78;3517:1;3510:4;:8;;;3506:47;;;3548:5;3528:17;:25;;;;;;3520:33;;3506:47;3912:7;3903:5;:17;:22;:30;;3932:1;3903:30;;;3928:1;3903:30;3886:48;;3896:2;3887:5;:11;;3886:48;3863:72;;1362:2580;;;;;:::o;6129:799:84:-;6309:15;6326;6373:13;6357:29;;:13;:29;;;6353:98;;;6422:13;;6437;6353:98;6482:13;6466:29;;:12;:29;;;6462:460;;6521:63;6544:13;6559;6574:9;6521:22;:63::i;:::-;6511:73;;6462:460;;;6620:13;6605:28;;:12;:28;;;6601:321;;;6659:62;6682:12;6696:13;6711:9;6659:22;:62::i;:::-;6649:72;;6745:62;6768:13;6783:12;6797:9;6745:22;:62::i;:::-;6735:72;;6601:321;;;6848:63;6871:13;6886;6901:9;6848:22;:63::i;:::-;6838:73;;6601:321;6129:799;;;;;;;:::o;4849:1145:91:-;4981:15;4998;5026:36;5064;5104:359;5167:206;5215:15;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5215:25:91;5262:93;;;;;;;;5291:16;;5262:93;;;;;;5215:25;5317:16;;;;5262:93;;;;;;;5340:13;;;;5262:93;;;;;;;;;5167:26;:206::i;:::-;5401:9;:19;;;5434:9;:19;;;5104;:359::i;:::-;5025:438;;;;5704:9;:21;;;5496:193;5560:9;:42;;;5529:28;:73;5620:9;:19;;;5496:193;;272:35:12;5496:15:91;:193::i;:::-;:229;5474:251;;5966:9;:21;;;5758:193;5822:9;:42;;;5791:28;:73;5882:9;:19;;;5758:193;;272:35:12;5758:15:91;:193::i;:::-;:229;5736:251;;4849:1145;;;;;;;:::o;4357:498:84:-;4507:15;4554:13;4538:29;;:13;:29;;;4534:98;;;4603:13;;4618;4534:98;4835:13;4662:186;;:170;309:2:13;4695:45:84;;4703:9;4695:18;;:45;;4774:13;4758;:29;4662:170;;4805:13;4662:170;;:15;:170::i;:::-;:186;;;;;;;4357:498;-1:-1:-1;;;;4357:498:84:o;5213:375::-;5363:15;5410:13;5394:29;;:13;:29;;;5390:98;;;5459:13;;5474;5390:98;5506:75;5522:9;5506:75;;5549:13;5533;:29;5506:75;;349:27:13;5506:15:84;:75::i;:::-;5499:82;5213:375;-1:-1:-1;;;;5213:375:84:o;1276:512:88:-;1360:12;1405:3;:10;;;1392:23;;:3;:10;;;:23;;;1384:32;;;;;;-1:-1:-1;1639:10:88;;1651;;;;;1663:7;;;;;1628:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1618:54;;;;;;1510:229;;;;;;;;;;;;;;;;;;;;;241:66;1510:229;;;;;;;;;;;;;;;;;;;;;;;;;1479:278;;;;;;1276:512::o;6000:1348:91:-;6134:28;6164;6207:17;6238:4;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6238:12:91;;;;6347:21;;;;;;;;;;;;;;;6238:12;;-1:-1:-1;6265:34:91;;;;6347:10;;;;;;:21;;;;;;;;;;;;;;;:10;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6347:21:91;;;;;;;;;;6465;;;;;;;;;;;;;;;6347;;-1:-1:-1;6347:21:91;-1:-1:-1;6383:34:91;;;;6465:10;;;;;;:21;;;;;6347;;6465;;;;;;;;:10;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6465:21:91;;;;;;;;;;;-1:-1:-1;6465:21:91;-1:-1:-1;6501:23:91;;;;;;;;;6497:845;;;6592:26;6563;:55;6540:78;;6684:26;6655;:55;6632:78;;6497:845;;;6745:9;6731:23;;:11;:23;;;6727:615;;;6770:28;6801:4;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6801:27:91;6873;;;;;;;;6801;;-1:-1:-1;6842:28:91;;6873:25;;;;;;:27;;;;;6801;;6873;;;;;;;:25;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6873:27:91;6937:49;;;;:78;;;;-1:-1:-1;;7052:49:91;;;:78;;;;-1:-1:-1;6727:615:91;;;7213:26;7184;:55;7161:78;;7305:26;7276;:55;7253:78;;6727:615;6000:1348;;;;;;;;;;;:::o;749:3746:14:-;831:14;;;1341:6;1338:1;1335;1328:20;1370:9;;;;-1:-1:-1;1421:13:14;;;1405:14;;;;1401:34;;-1:-1:-1;1517:10:14;1513:179;;1565:1;1551:11;:15;1543:24;;;;;;-1:-1:-1;1618:23:14;;;;-1:-1:-1;1668:13:14;;1513:179;1819:5;1805:11;:19;1797:28;;;;;;2102:17;2178:11;2175:1;2172;2165:25;2530:12;2545;;;:26;;2665:22;;;;;3468:1;3449;:15;;3448:21;;3695:17;;;3691:21;;3684:28;3753:17;;;3749:21;;3742:28;3812:17;;;3808:21;;3801:28;3871:17;;;3867:21;;3860:28;3930:17;;;3926:21;;3919:28;3990:17;;;3986:21;;;3979:28;3037:12;;;;3033:23;;;3058:1;3029:31;2307:20;;;2296:32;;;3088:12;;;;2350:21;;;;2793:16;;;;3079:21;;;;4454:11;;;;;-1:-1:-1;;749:3746:14;;;;;:::o"},"methodIdentifiers":{"fees(address,uint256)":"263a5362","feesGas(address,uint256)":"3803770c","principal(address,uint256,uint160)":"22635397","principalGas(address,uint256,uint160)":"ee4e9ba3","total(address,uint256,uint160)":"5b6dc092","totalGas(address,uint256,uint160)":"90594f91"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract INonfungiblePositionManager\",\"name\":\"nft\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"fees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract INonfungiblePositionManager\",\"name\":\"nft\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"feesGas\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract INonfungiblePositionManager\",\"name\":\"nft\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtRatioX96\",\"type\":\"uint160\"}],\"name\":\"principal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract INonfungiblePositionManager\",\"name\":\"nft\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtRatioX96\",\"type\":\"uint160\"}],\"name\":\"principalGas\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract INonfungiblePositionManager\",\"name\":\"nft\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtRatioX96\",\"type\":\"uint160\"}],\"name\":\"total\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract INonfungiblePositionManager\",\"name\":\"nft\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtRatioX96\",\"type\":\"uint160\"}],\"name\":\"totalGas\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/PositionValueTest.sol\":\"PositionValueTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"@airdao/astra-cl-core/contracts/libraries/FixedPoint128.sol\":{\"keccak256\":\"0x2d1f4f73ae0d8f0a210b8d30084659b57c56ac8f2f96011fca36f00a6d417178\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2ba88933f16cd2df398e19c6ad227268f83c03081b70d243c97116d2ed9bc241\",\"dweb:/ipfs/QmTUGxdh8snzEM9VrTSS47StCg9VVWvvLJtJeNnMTFY4xb\"]},\"@airdao/astra-cl-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"@airdao/astra-cl-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x5340256039418f5d03512a44173d3dcf1da277a73a461e06fb5668f49cfc46f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75dee99795d1125875233a7f1d356935099cc97b4085c0e451060d77db85d144\",\"dweb:/ipfs/QmTGqyrxVLQd8TBaarqSQDiYvq1QFutCdmTyXk6JpxzKTN\"]},\"@airdao/astra-cl-core/contracts/libraries/LiquidityMath.sol\":{\"keccak256\":\"0xd53041349718d5bce4a89e87cd911879d41ba42ba3fab0614e5e8b742f352b88\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ea7529b99ab4fc1d3e6c5a31990fb688f0a2d6cc302c0419e0cf5a2d6c563781\",\"dweb:/ipfs/QmVaphRSNpfChHZKzutQ9WprwCo2WE1euvThRfHcwsnHhj\"]},\"@airdao/astra-cl-core/contracts/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0x86715eb960f18e01ac94e3bba4614ed51a887fa3c5bd1c43bf80aa98e019cf2d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfc1d5d58e59015086b0e65a6c3a2ddad312e2350480510f6c0c8167f3d71a37\",\"dweb:/ipfs/QmQndULYjFsHKHjMAKLMfc12vWbVB5FawtioHtvwcWRJZp\"]},\"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0xd4c1c1b67f946b077d7c52a158113763a89a210fc2927b8491055a962ecd18c0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5344400c74320ca8dbe19241db7ff49babbd6c875c1b561c79d6e4315a9fb5f9\",\"dweb:/ipfs/QmRKCNTbkovxK1WvejXZr3iAHhGN97ZT1yWGsWCJFkrT5X\"]},\"@airdao/astra-cl-core/contracts/libraries/Tick.sol\":{\"keccak256\":\"0x473bf9fd987161de1ecf215190db4c94b50eb12ea9ebafecbc7acef1bcd79dee\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e3e948f35862db5adeaffdb1f7072b51bc570041920e6593da61262eb0ac4817\",\"dweb:/ipfs/QmUDYpKSzSaFyDiC8AQx3RTzex3bu1W1g53itPyEJZkC1L\"]},\"@airdao/astra-cl-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0xe22d07f1ebf9c8468c81cb6905bfc8f8a54fa2f9b4a50742202a47cdbcb5af80\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d4773ca5008d2a2f496370695942c8ba3d6e1d487adbf5cda1149da12e3a6268\",\"dweb:/ipfs/QmcPYTLpEWfU8e3KAYBfHH7uYR4tGAkvnWrWS1CG8EkyLC\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xd2f30fad5b24c4120f96dbac83aacdb7993ee610a9092bc23c44463da292bf8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3d4e72409e392c7694b6405a0136cf073d8da016df33ef8f9ad195f724ebfea\",\"dweb:/ipfs/QmPGcddKq6CgsiKnxUUif2q76wRqP3dmdQ6bKuHCLmb8Wa\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xb11597841d47f7a773bca63ca323c76f804cb5d944788de0327db5526319dc82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://930d2da1934886a1098753be4173dd89c45ca0b306a1930accd37e00b1af4aaf\",\"dweb:/ipfs/QmVSXnvEV41d43k8cfpANHoTYMKgBDBL8iCbxkLfEtQZBe\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x2789dfea2d73182683d637db5729201f6730dae6113030a94c828f8688f38f2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36374eaa68c0737bf7e1ae13d55327b4868fb0825e971ee729f4b8d355ededb4\",\"dweb:/ipfs/QmYN9yuzz4P5SumiT6rgYgTEY8MhnPQapMwx2LHxRKju7r\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xc82c7d1d732081d9bd23f1555ebdf8f3bc1738bc42c2bfc4b9aa7564d9fa3573\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cb07e4ff3352161510a0d1536fe93f3c62526358e073a8bab2a8abbb27d0da1\",\"dweb:/ipfs/QmX7K1JjnWKT1JzZT92Qx5zNJQYbssE533TLFHP88hj2fb\"]},\"contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x383d39a13ce10019d4ebd27a694d085c03a1498a1cc31ec1511fac91b5296342\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3d22d9cc7a33829bd31da42d96bd75401a675ef32c8eb4d9e3074c21ec1241b6\",\"dweb:/ipfs/QmNrvD2T3k3wH5kWz6Kss9mSjxdJhXAA6NTH1Evj8j3k6A\"]},\"contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x920448f826d2d8e40aae06ce855644abac394c085a769605399d80cb36bde27f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6b299cd039cf1fb92c9c58f666dfbb2753431f3904bed659ddd653ad9a503045\",\"dweb:/ipfs/QmZWb11WyJgGCW35e2opF3Ncstu59krJCDPAZpHWU9rqix\"]},\"contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x928bd8905080dc786dfeac23c31ac4b6654c5f9a1a998a7d09af315e12d3c0b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4c71c4cbc831a3d58ea6b41fe8d5454a5776bbb82b28a67ae1ac7d95e86ec02a\",\"dweb:/ipfs/QmSHz3FzBisdCaMfey1cBuAF5rC93b5571zkfBRFVrambU\"]},\"contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0x57bd5b069f6e66edd42a9b41e5864bfcd2aa7d404337d6c57a083fb589fc59bd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4efa92b18c295755437180f93a19179ef15dfe24a6db10ae876c41247fd4a907\",\"dweb:/ipfs/QmYJTRqE5BEjqyNoZqoctVFgxZF336cK9ba1RSd2LbgFkG\"]},\"contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x5d9b76c0eed9d836f8ab1d65a37921c56c46a69802f28c312f239ce159634473\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ab60ec035cd2f600d7e89828bcf1427a674defdcb4c511679144aae42273ba2d\",\"dweb:/ipfs/QmYWy2dAG2Mq4BUwybjVCbGtXYRG8Lz1jRfK6L924YuwRa\"]},\"contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0x0845f1c8b6a30b2c243a0d285a30ec5653442aec2bc88cd27c83215c6e0f577f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e6303005c2e69c3315875ace1d618459cd8edf4ea499a0f167a83680bd835ae5\",\"dweb:/ipfs/QmcMpVTkGZh6SJoFAbN29w2ABD25zACxRouuqAtCBHATyd\"]},\"contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xdd82100913bcb7c490e9e6912ab33994bd97d5a59e67209826ebf917bc8271c1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ecfc24c77d80aa718604d8a2c4d59460b76b5fd567d15206414e3838dd6698b7\",\"dweb:/ipfs/QmVtUC9dnade4RkzXaSqEFdAkiEftJ777jmT619LX2VLGv\"]},\"contracts/libraries/PositionKey.sol\":{\"keccak256\":\"0xd72d0eeec86263f20e0f09a5997df27da1d0e1da31c3fd4874d6b67038066a9b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1aa47fde0fcab8f874815218f74005d5d569ec73b181a49014159f635a57b61b\",\"dweb:/ipfs/QmZGYC5na1nGcenPAHRJM8QfqQhrw7WYKFPHbE3MpQYP1s\"]},\"contracts/libraries/PositionValue.sol\":{\"keccak256\":\"0xe6c9e1d4fc0a113326d21ee1d836a965cc09f8fb5938ac695e3e0d6a73414c55\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://32c1212078d662e38fa8cea561464ff1ef9e33a730b484b1283278e614483477\",\"dweb:/ipfs/Qmf2yCzH6vXBiaZoASwjVFAAQeZEu6VB1w1LZcbkGrzhMZ\"]},\"contracts/test/PositionValueTest.sol\":{\"keccak256\":\"0x9fc6fc6c064f7e1b10eeb16e727dfeb5823b4247f895c8ca7c3787e431d00acb\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6bedeb86fb0f70629969cf91a08977ae1fec24880533d4d1a6e84335539de69f\",\"dweb:/ipfs/QmRRcNK5iQDYkhJVLuxuppBndQSyHUPsNCUHsTRTcRrV9e\"]}},\"version\":1}"}},"contracts/test/SelfPermitTest.sol":{"SelfPermitTest":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowed","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowedIfNecessary","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitIfNecessary","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610489806100206000396000f3fe60806040526004361061003f5760003560e01c80634659a49414610044578063a4a78f0c1461009a578063c2e3140a146100ee578063f3995c6714610142575b600080fd5b610098600480360360c081101561005a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359060ff6060820135169060808101359060a00135610196565b005b610098600480360360c08110156100b057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359060ff6060820135169060808101359060a00135610256565b610098600480360360c081101561010457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359060ff6060820135169060808101359060a00135610333565b610098600480360360c081101561015857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359060ff6060820135169060808101359060a001356103e4565b604080517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e48101839052905173ffffffffffffffffffffffffffffffffffffffff881691638fcbaf0c9161010480830192600092919082900301818387803b15801561023657600080fd5b505af115801561024a573d6000803e3d6000fd5b50505050505050505050565b604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b1580156102eb57600080fd5b505afa1580156102ff573d6000803e3d6000fd5b505050506040513d602081101561031557600080fd5b5051101561032b5761032b868686868686610196565b505050505050565b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051869173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b1580156103a857600080fd5b505afa1580156103bc573d6000803e3d6000fd5b505050506040513d60208110156103d257600080fd5b5051101561032b5761032b8686868686865b604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c48101839052905173ffffffffffffffffffffffffffffffffffffffff88169163d505accf9160e480830192600092919082900301818387803b15801561023657600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x489 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4659A494 EQ PUSH2 0x44 JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x142 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x98 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x196 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x98 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x256 JUMP JUMPDEST PUSH2 0x98 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x333 JUMP JUMPDEST PUSH2 0x98 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x158 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x3E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x8FCBAF0C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xFF DUP6 AND PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xC4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xE4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0x8FCBAF0C SWAP2 PUSH2 0x104 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2FF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x315 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x32B JUMPI PUSH2 0x32B DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x196 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x32B JUMPI PUSH2 0x32B DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xFF DUP6 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"143:40:106:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361061003f5760003560e01c80634659a49414610044578063a4a78f0c1461009a578063c2e3140a146100ee578063f3995c6714610142575b600080fd5b610098600480360360c081101561005a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359060ff6060820135169060808101359060a00135610196565b005b610098600480360360c08110156100b057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359060ff6060820135169060808101359060a00135610256565b610098600480360360c081101561010457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359060ff6060820135169060808101359060a00135610333565b610098600480360360c081101561015857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359060ff6060820135169060808101359060a001356103e4565b604080517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e48101839052905173ffffffffffffffffffffffffffffffffffffffff881691638fcbaf0c9161010480830192600092919082900301818387803b15801561023657600080fd5b505af115801561024a573d6000803e3d6000fd5b50505050505050505050565b604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b1580156102eb57600080fd5b505afa1580156102ff573d6000803e3d6000fd5b505050506040513d602081101561031557600080fd5b5051101561032b5761032b868686868686610196565b505050505050565b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051869173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b1580156103a857600080fd5b505afa1580156103bc573d6000803e3d6000fd5b505050506040513d60208110156103d257600080fd5b5051101561032b5761032b8686868686865b604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c48101839052905173ffffffffffffffffffffffffffffffffffffffff88169163d505accf9160e480830192600092919082900301818387803b15801561023657600080fdfea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4659A494 EQ PUSH2 0x44 JUMPI DUP1 PUSH4 0xA4A78F0C EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0xC2E3140A EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0xF3995C67 EQ PUSH2 0x142 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x98 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x196 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x98 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x256 JUMP JUMPDEST PUSH2 0x98 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x333 JUMP JUMPDEST PUSH2 0x98 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x158 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x3E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x8FCBAF0C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xFF DUP6 AND PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xC4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xE4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0x8FCBAF0C SWAP2 PUSH2 0x104 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2FF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x315 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x32B JUMPI PUSH2 0x32B DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x196 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD DUP7 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x32B JUMPI PUSH2 0x32B DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xFF DUP6 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"143:40:106:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1325:289:55;;;;;;;;;;;;;;;;-1:-1:-1;1325:289:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1652:348;;;;;;;;;;;;;;;;-1:-1:-1;1652:348:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;973:314::-;;;;;;;;;;;;;;;;-1:-1:-1;973:314:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;662:273::-;;;;;;;;;;;;;;;;-1:-1:-1;662:273:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1325:289::-;1517:90;;;;;;1551:10;1517:90;;;;1571:4;1517:90;;;;;;;;;;;;;;;;1593:4;1517:90;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;;;:90;;;;;-1:-1:-1;;1517:90:55;;;;;;;-1:-1:-1;1517:33:55;:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1325:289;;;;;;:::o;1652:348::-;1861:50;;;;;;1885:10;1861:50;;;;1905:4;1861:50;;;;;;1914:17;;1861:23;;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1861:50:55;:70;1857:136;;;1945:48;1963:5;1970;1977:6;1985:1;1988;1991;1945:17;:48::i;:::-;1652:348;;;;;;:::o;973:314::-;1177:50;;;;;;1201:10;1177:50;;;;1221:4;1177:50;;;;;;1230:5;;1177:23;;;;;;:50;;;;;;;;;;;;;;;:23;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1177:50:55;:58;1173:107;;;1237:43;1248:5;1255;1262:8;1272:1;1275;1278;662:273;849:79;;;;;;876:10;849:79;;;;896:4;849:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;;;:79;;;;;-1:-1:-1;;849:79:55;;;;;;;-1:-1:-1;849:26:55;:79;;;;;;;;;"},"methodIdentifiers":{"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)":"f3995c67","selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)":"4659a494","selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"a4a78f0c","selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)":"c2e3140a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowed\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitAllowedIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"selfPermitIfNecessary\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Same as SelfPermit but not abstract\",\"kind\":\"dev\",\"methods\":{\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this).\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this)\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this) Can be used instead of #selfPermitAllowed to prevent calls from failing due to a frontrun of a call to #selfPermitAllowed.\",\"params\":{\"expiry\":\"The timestamp at which the permit is no longer valid\",\"nonce\":\"The current nonce of the owner\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"The `owner` is always msg.sender and the `spender` is always address(this). Can be used instead of #selfPermit to prevent calls from failing due to a frontrun of a call to #selfPermit\",\"params\":{\"deadline\":\"A timestamp, the current blocktime must be less than or equal to this timestamp\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"token\":\"The address of the token spent\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\",\"value\":\"The amount that can be spent of token\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"selfPermit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"},\"selfPermitAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitAllowedIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter\"},\"selfPermitIfNecessary(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Permits this contract to spend a given token from `msg.sender`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/SelfPermitTest.sol\":\"SelfPermitTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"contracts/base/SelfPermit.sol\":{\"keccak256\":\"0xe75aedfc1eff6c84adac82b2bc41d197127a74530f0c344a7a122a6c8ec186be\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://05150ae691e10f2c9c82ad46de86c8b6683d8eba995e6f9ff82eaefc064902e9\",\"dweb:/ipfs/QmdKxxmxCPxV7qe11MbRhpaQXDAnnKWH1BoTMmEXYPAA7g\"]},\"contracts/interfaces/ISelfPermit.sol\":{\"keccak256\":\"0x402d04301ffd41853f4949a574b8853c46d076910ed734f5e4478bf64369a3ed\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6a5536d179ff3777920ff8ed60cfc457f7a4dda1373c8f0394b2a8e0fe537525\",\"dweb:/ipfs/QmdaYGikTmmi2vbECnoomZ8vS8PBiD4Bq8BoFCYqFZmKgR\"]},\"contracts/interfaces/external/IERC20PermitAllowed.sol\":{\"keccak256\":\"0x8c4c1b8e724e0a78cb691d703dd37cd91b8bd6600537fb227807a194025a792d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://783be851155842a02cdb0483c3a69ecc0e7ae8545f65cec1d4aeb355b2026a7d\",\"dweb:/ipfs/QmZNBQosTjpGNKB3Eo2K6Zzye7FYiLVoEki5iPB2Y69jz2\"]},\"contracts/test/SelfPermitTest.sol\":{\"keccak256\":\"0xcfead16af00726febf9e22218fabd9ae4b4faad674a99a1980a93a4247816764\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3eac783b3c97e644bba75ea8172518108ecd7529027bf459d93b4b1dd95b8467\",\"dweb:/ipfs/Qmd4AfrdPAsw148hpRWfXwV8ZedBvkRRoz8r6hxUU99ZYy\"]}},\"version\":1}"}},"contracts/test/TestCallbackValidation.sol":{"TestCallbackValidation":{"abi":[{"inputs":[{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"}],"name":"verifyCallback","outputs":[{"internalType":"contract IAstraCLPool","name":"pool","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506102eb806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80638bdb192514610030575b600080fd5b61007f6004803603608081101561004657600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff908116916020810135821691604082013516906060013562ffffff166100a8565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b60006100b6858585856100bf565b95945050505050565b60006100b6856100d08686866100d5565b610152565b6100dd6102be565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610115579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b600061015e8383610188565b90503373ffffffffffffffffffffffffffffffffffffffff82161461018257600080fd5b92915050565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16106101ca57600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0460d5808301919091528251808303909101815260f5909101909152805191012090565b60408051606081018252600080825260208201819052918101919091529056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EB DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8BDB1925 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0xA8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0xB6 DUP6 DUP6 DUP6 DUP6 PUSH2 0xBF JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB6 DUP6 PUSH2 0xD0 DUP7 DUP7 DUP7 PUSH2 0xD5 JUMP JUMPDEST PUSH2 0x152 JUMP JUMPDEST PUSH2 0xDD PUSH2 0x2BE JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x115 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH3 0xFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15E DUP4 DUP4 PUSH2 0x188 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 DUP6 ADD MSTORE SWAP4 SWAP1 SWAP2 AND DUP4 DUP6 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x80 DUP5 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 PUSH1 0xD5 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xF5 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"111:292:107:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061002b5760003560e01c80638bdb192514610030575b600080fd5b61007f6004803603608081101561004657600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff908116916020810135821691604082013516906060013562ffffff166100a8565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b60006100b6858585856100bf565b95945050505050565b60006100b6856100d08686866100d5565b610152565b6100dd6102be565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610115579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b600061015e8383610188565b90503373ffffffffffffffffffffffffffffffffffffffff82161461018257600080fd5b92915050565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16106101ca57600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527f203c8ec649b23b7faf9b73ccadfb1a67af52a097119c82801f4947ec5deb6c0460d5808301919091528251808303909101815260f5909101909152805191012090565b60408051606081018252600080825260208201819052918101919091529056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8BDB1925 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0xA8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0xB6 DUP6 DUP6 DUP6 DUP6 PUSH2 0xBF JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB6 DUP6 PUSH2 0xD0 DUP7 DUP7 DUP7 PUSH2 0xD5 JUMP JUMPDEST PUSH2 0x152 JUMP JUMPDEST PUSH2 0xDD PUSH2 0x2BE JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x115 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH3 0xFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15E DUP4 DUP4 PUSH2 0x188 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 DUP6 ADD MSTORE SWAP4 SWAP1 SWAP2 AND DUP4 DUP6 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x80 DUP5 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP6 ADD MSTORE SWAP5 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0xA1 DUP4 ADD MSTORE PUSH1 0xB5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH32 0x203C8EC649B23B7FAF9B73CCADFB1A67AF52A097119C82801F4947EC5DEB6C04 PUSH1 0xD5 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xF5 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"111:292:107:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;149:252;;;;;;;;;;;;;;;;-1:-1:-1;149:252:107;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;295:17;331:63;365:7;374:6;382;390:3;331:33;:63::i;:::-;324:70;149:252;-1:-1:-1;;;;;149:252:107:o;742:257:81:-;888:17;924:68;939:7;948:43;971:6;979;987:3;948:22;:43::i;:::-;924:14;:68::i;784:244:88:-;871:14;;:::i;:::-;910:6;901:15;;:6;:15;;;897:56;;;938:6;;946;897:56;-1:-1:-1;970:51:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;784:244::o;1248:269:81:-;1370:17;1419:44;1446:7;1455;1419:26;:44::i;:::-;1399:65;-1:-1:-1;1482:10:81;:27;;;;1474:36;;;;;;1248:269;;;;:::o;1276:512:88:-;1360:12;1405:3;:10;;;1392:23;;:3;:10;;;:23;;;1384:32;;;;;;-1:-1:-1;1639:10:88;;1651;;;;;1663:7;;;;;1628:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1618:54;;;;;;1510:229;;;;;;;;;;;;;;;;;;;;;241:66;1510:229;;;;;;;;;;;;;;;;;;;;;;;;;1479:278;;;;;;1276:512::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o"},"methodIdentifiers":{"verifyCallback(address,address,address,uint24)":"8bdb1925"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"verifyCallback\",\"outputs\":[{\"internalType\":\"contract IAstraCLPool\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TestCallbackValidation.sol\":\"TestCallbackValidation\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"contracts/libraries/CallbackValidation.sol\":{\"keccak256\":\"0xf21a3d7e2bc14386ce7b072b124b580df53441a32591770845860e8947f942d0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6941e21d9bc52bddc65079c5e7bc9d6ffd6553f6ed7f3d3b340996a55115b46f\",\"dweb:/ipfs/QmaDJ9uafahho77WP5izBCRL4W3mVM7NFL5q5QR5YvAC3A\"]},\"contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xdd82100913bcb7c490e9e6912ab33994bd97d5a59e67209826ebf917bc8271c1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ecfc24c77d80aa718604d8a2c4d59460b76b5fd567d15206414e3838dd6698b7\",\"dweb:/ipfs/QmVtUC9dnade4RkzXaSqEFdAkiEftJ777jmT619LX2VLGv\"]},\"contracts/test/TestCallbackValidation.sol\":{\"keccak256\":\"0x17cc3bc68f1ea7053cfbf9fa4bb8c616dd45b65f104d7ffd2577866c1c5e3151\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://71f7e639ea12729f2fe936f37ee056c9e75fbdf6bc6e6daaf5e488a76e4f27ff\",\"dweb:/ipfs/QmTuLgu32DSUYPVVJAHFJ1X8CNJERs5ngCe7TR7cQugxyG\"]}},\"version\":1}"}},"contracts/test/TestERC20.sol":{"TestERC20":{"abi":[{"inputs":[{"internalType":"uint256","name":"amountToMint","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"6101406040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610120523480156200003757600080fd5b506040516200174738038062001747833981810160405260208110156200005d57600080fd5b5051604080518082018252600a808252690546573742045524332360b41b60208381018290528451808601865260018152603160f81b818301528551808701875293845283820192835285518087019096526004865263151154d560e21b918601919091528251939485949193929091620000db916003916200035a565b508051620000f19060049060208401906200035a565b50506005805460ff1916601217905550815160208084019190912082519183019190912060c082905260e08190527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6200014a6200017c565b60a0526200015a81848462000180565b608052610100525062000175935033925084915050620001e4565b5062000406565b4690565b60008383836200018f6200017c565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b03168152602001955050505050506040516020818303038152906040528051906020012090509392505050565b6001600160a01b03821662000240576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6200024e60008383620002f3565b6200026a81600254620002f860201b620009b11790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200029d918390620009b1620002f8821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b505050565b60008282018381101562000353576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620003925760008555620003dd565b82601f10620003ad57805160ff1916838001178555620003dd565b82800160010185558215620003dd579182015b82811115620003dd578251825591602001919060010190620003c0565b50620003eb929150620003ef565b5090565b5b80821115620003eb5760008155600101620003f0565b60805160a05160c05160e05161010051610120516112f762000450600039806107d6525080610e55525080610e97525080610e76525080610dfc525080610e2c52506112f76000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a457c2d711610066578063a457c2d7146102e3578063a9059cbb1461031c578063d505accf14610355578063dd62ed3e146103b5576100ea565b806370a08231146102755780637ecebe00146102a857806395d89b41146102db576100ea565b806323b872dd116100c857806323b872dd146101d3578063313ce567146102165780633644e51514610234578063395093511461023c576100ea565b806306fdde03146100ef578063095ea7b31461016c57806318160ddd146101b9575b600080fd5b6100f76103f0565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a56004803603604081101561018257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104a5565b604080519115158252519081900360200190f35b6101c16104c2565b60408051918252519081900360200190f35b6101a5600480360360608110156101e957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104c8565b61021e610569565b6040805160ff9092168252519081900360200190f35b6101c1610572565b6101a56004803603604081101561025257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610581565b6101c16004803603602081101561028b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105dc565b6101c1600480360360208110156102be57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610604565b6100f7610638565b6101a5600480360360408110156102f957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106b7565b6101a56004803603604081101561033257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561072c565b6103b3600480360360e081101561036b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610740565b005b6101c1600480360360408110156103cb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610979565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561049a5780601f1061046f5761010080835404028352916020019161049a565b820191906000526020600020905b81548152906001019060200180831161047d57829003601f168201915b505050505090505b90565b60006104b96104b2610a2c565b8484610a30565b50600192915050565b60025490565b60006104d5848484610b77565b61055f846104e1610a2c565b61055a856040518060600160405280602881526020016112556028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061052c610a2c565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610d47565b610a30565b5060019392505050565b60055460ff1690565b600061057c610df8565b905090565b60006104b961058e610a2c565b8461055a856001600061059f610a2c565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c1681529252902054906109b1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260066020526040812061063290610ec2565b92915050565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561049a5780601f1061046f5761010080835404028352916020019161049a565b60006104b96106c4610a2c565b8461055a856040518060600160405280602581526020016112c660259139600160006106ee610a2c565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610d47565b60006104b9610739610a2c565b8484610b77565b834211156107af57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff871660009081526006602052604081207f00000000000000000000000000000000000000000000000000000000000000009089908990899061080590610ec2565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050600061088882610ec6565b9050600061089882878787610f2d565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461093457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8a16600090815260066020526040902061096290611124565b61096d8a8a8a610a30565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b600082820183811015610a2557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610a9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a26024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610b08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806111c96022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610be3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127d6025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610c4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111a66023913960400191505060405180910390fd5b610c5a83838361112d565b610ca4816040518060600160405280602681526020016111eb6026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610d47565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610ce090826109b1565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610df0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610db5578181015183820152602001610d9d565b50505050905090810190601f168015610de25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60007f0000000000000000000000000000000000000000000000000000000000000000610e23611132565b1415610e5057507f00000000000000000000000000000000000000000000000000000000000000006104a2565b610ebb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611136565b90506104a2565b5490565b6000610ed0610df8565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610fa8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806112116022913960400191505060405180910390fd5b8360ff16601b1480610fbd57508360ff16601c145b611012576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806112336022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561106e573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661111b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b95945050505050565b80546001019055565b505050565b4690565b6000838383611143611132565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001209050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c756545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a","opcodes":"PUSH2 0x140 PUSH1 0x40 MSTORE PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 PUSH2 0x120 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1747 CODESIZE SUB DUP1 PUSH3 0x1747 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xA DUP1 DUP3 MSTORE PUSH10 0x5465737420455243323 PUSH1 0xB4 SHL PUSH1 0x20 DUP4 DUP2 ADD DUP3 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP7 ADD DUP7 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL DUP2 DUP4 ADD MSTORE DUP6 MLOAD DUP1 DUP8 ADD DUP8 MSTORE SWAP4 DUP5 MSTORE DUP4 DUP3 ADD SWAP3 DUP4 MSTORE DUP6 MLOAD DUP1 DUP8 ADD SWAP1 SWAP7 MSTORE PUSH1 0x4 DUP7 MSTORE PUSH4 0x151154D5 PUSH1 0xE2 SHL SWAP2 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD SWAP4 SWAP5 DUP6 SWAP5 SWAP2 SWAP4 SWAP3 SWAP1 SWAP2 PUSH3 0xDB SWAP2 PUSH1 0x3 SWAP2 PUSH3 0x35A JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0xF1 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x35A JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP DUP2 MLOAD PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 KECCAK256 DUP3 MLOAD SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0xC0 DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 SWAP1 MSTORE PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH3 0x14A PUSH3 0x17C JUMP JUMPDEST PUSH1 0xA0 MSTORE PUSH3 0x15A DUP2 DUP5 DUP5 PUSH3 0x180 JUMP JUMPDEST PUSH1 0x80 MSTORE PUSH2 0x100 MSTORE POP PUSH3 0x175 SWAP4 POP CALLER SWAP3 POP DUP5 SWAP2 POP POP PUSH3 0x1E4 JUMP JUMPDEST POP PUSH3 0x406 JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 PUSH3 0x18F PUSH3 0x17C JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x240 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0x24E PUSH1 0x0 DUP4 DUP4 PUSH3 0x2F3 JUMP JUMPDEST PUSH3 0x26A DUP2 PUSH1 0x2 SLOAD PUSH3 0x2F8 PUSH1 0x20 SHL PUSH3 0x9B1 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH3 0x29D SWAP2 DUP4 SWAP1 PUSH3 0x9B1 PUSH3 0x2F8 DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH3 0x353 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x392 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x3DD JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x3AD JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x3DD JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x3DD JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x3DD JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x3C0 JUMP JUMPDEST POP PUSH3 0x3EB SWAP3 SWAP2 POP PUSH3 0x3EF JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x3EB JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x3F0 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x12F7 PUSH3 0x450 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x7D6 MSTORE POP DUP1 PUSH2 0xE55 MSTORE POP DUP1 PUSH2 0xE97 MSTORE POP DUP1 PUSH2 0xE76 MSTORE POP DUP1 PUSH2 0xDFC MSTORE POP DUP1 PUSH2 0xE2C MSTORE POP PUSH2 0x12F7 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2E3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x31C JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x3B5 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x275 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2DB JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x234 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x23C JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1B9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x131 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4A5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH2 0x4C2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4C8 JUMP JUMPDEST PUSH2 0x21E PUSH2 0x569 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH2 0x572 JUMP JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x581 JUMP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5DC JUMP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x604 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x638 JUMP JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6B7 JUMP JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x332 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x72C JUMP JUMPDEST PUSH2 0x3B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x36B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x740 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x979 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x49A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x46F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x49A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x47D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B9 PUSH2 0x4B2 PUSH2 0xA2C JUMP JUMPDEST DUP5 DUP5 PUSH2 0xA30 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D5 DUP5 DUP5 DUP5 PUSH2 0xB77 JUMP JUMPDEST PUSH2 0x55F DUP5 PUSH2 0x4E1 PUSH2 0xA2C JUMP JUMPDEST PUSH2 0x55A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1255 PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x52C PUSH2 0xA2C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xD47 JUMP JUMPDEST PUSH2 0xA30 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x57C PUSH2 0xDF8 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B9 PUSH2 0x58E PUSH2 0xA2C JUMP JUMPDEST DUP5 PUSH2 0x55A DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x59F PUSH2 0xA2C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x9B1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x632 SWAP1 PUSH2 0xEC2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x49A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x46F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x49A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B9 PUSH2 0x6C4 PUSH2 0xA2C JUMP JUMPDEST DUP5 PUSH2 0x55A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12C6 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x6EE PUSH2 0xA2C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xD47 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B9 PUSH2 0x739 PUSH2 0xA2C JUMP JUMPDEST DUP5 DUP5 PUSH2 0xB77 JUMP JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x7AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332305065726D69743A206578706972656420646561646C696E65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH32 0x0 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH2 0x805 SWAP1 PUSH2 0xEC2 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x888 DUP3 PUSH2 0xEC6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x898 DUP3 DUP8 DUP8 DUP8 PUSH2 0xF2D JUMP JUMPDEST SWAP1 POP DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x934 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332305065726D69743A20696E76616C6964207369676E61747572650000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x962 SWAP1 PUSH2 0x1124 JUMP JUMPDEST PUSH2 0x96D DUP11 DUP11 DUP11 PUSH2 0xA30 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xA25 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0xA9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12A2 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xB08 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x11C9 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0xBE3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x127D PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xC4F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x11A6 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC5A DUP4 DUP4 DUP4 PUSH2 0x112D JUMP JUMPDEST PUSH2 0xCA4 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11EB PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xD47 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xCE0 SWAP1 DUP3 PUSH2 0x9B1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xDF0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDB5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD9D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDE2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH2 0xE23 PUSH2 0x1132 JUMP JUMPDEST EQ ISZERO PUSH2 0xE50 JUMPI POP PUSH32 0x0 PUSH2 0x4A2 JUMP JUMPDEST PUSH2 0xEBB PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x1136 JUMP JUMPDEST SWAP1 POP PUSH2 0x4A2 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xED0 PUSH2 0xDF8 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP3 GT ISZERO PUSH2 0xFA8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1211 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0xFF AND PUSH1 0x1B EQ DUP1 PUSH2 0xFBD JUMPI POP DUP4 PUSH1 0xFF AND PUSH1 0x1C EQ JUMPDEST PUSH2 0x1012 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1233 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x106E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x111B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 PUSH2 0x1143 PUSH2 0x1132 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545434453 COINBASE GASPRICE KECCAK256 PUSH10 0x6E76616C696420736967 PUSH15 0x6174757265202773272076616C7565 GASLIMIT NUMBER DIFFICULTY MSTORE8 COINBASE GASPRICE KECCAK256 PUSH10 0x6E76616C696420736967 PUSH15 0x6174757265202776272076616C7565 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA164736F PUSH13 0x6343000706000A000000000000 ","sourceMap":"122:178:108:-:0;;;1006:95:24;961:140;;162:136:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;162:136:108;1333:57:24;;;;;;;;;;;;-1:-1:-1;;;162:136:108;1333:57:24;;;;;;2324:542:23;;;;;;;;;;-1:-1:-1;;;2324:542:23;;;;1950:138:30;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1950:138:30;;;;;;;2017:13;;1333:57:24;;;;2324:542:23;;1950:138:30;;;2017:13;;:5;;:13;:::i;:::-;-1:-1:-1;2040:17:30;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2067:9:30;:14;;-1:-1:-1;;2067:14:30;2079:2;2067:14;;;-1:-1:-1;2410:22:23;;;;;;;;;;2466:25;;;;;;;;;2625;;;;2660:31;;;;2520:95;2720:13;:11;:13::i;:::-;2701:32;;2770:58;2792:8;2802:10;2814:13;2770:21;:58::i;:::-;2743:85;;2838:21;;-1:-1:-1;260:31:108::2;::::0;-1:-1:-1;266:10:108::2;::::0;-1:-1:-1;278:12:108;;-1:-1:-1;;260:5:108::2;:31::i;:::-;162:136:::0;122:178;;4382:320:23;4677:9;;4652:44::o;3241:327::-;3343:7;3420:8;3446:4;3468:7;3493:13;:11;:13::i;:::-;3532:4;3392:159;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3392:159:23;;;;;;;;;;;;;;;;;;;;;;;;3369:192;;;;;;3362:199;;3241:327;;;;;:::o;7817:370:30:-;-1:-1:-1;;;;;7900:21:30;;7892:65;;;;;-1:-1:-1;;;7892:65:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;7968:49;7997:1;8001:7;8010:6;7968:20;:49::i;:::-;8043:24;8060:6;8043:12;;:16;;;;;;:24;;;;:::i;:::-;8028:12;:39;-1:-1:-1;;;;;8098:18:30;;:9;:18;;;;;;;;;;;;:30;;8121:6;;8098:22;;;;;:30;;:::i;:::-;-1:-1:-1;;;;;8077:18:30;;:9;:18;;;;;;;;;;;:51;;;;8143:37;;;;;;;8077:18;;:9;;8143:37;;;;;;;;;;7817:370;;:::o;10686:92::-;;;;:::o;2682:175:28:-;2740:7;2771:5;;;2794:6;;;;2786:46;;;;;-1:-1:-1;;;2786:46:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;2849:1;2682:175;-1:-1:-1;;;2682:175:28:o;122:178:108:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;122:178:108;;;-1:-1:-1;122:178:108;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{"2673":[{"length":32,"start":3628}],"2675":[{"length":32,"start":3580}],"2677":[{"length":32,"start":3702}],"2679":[{"length":32,"start":3735}],"2681":[{"length":32,"start":3669}],"2843":[{"length":32,"start":2006}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a457c2d711610066578063a457c2d7146102e3578063a9059cbb1461031c578063d505accf14610355578063dd62ed3e146103b5576100ea565b806370a08231146102755780637ecebe00146102a857806395d89b41146102db576100ea565b806323b872dd116100c857806323b872dd146101d3578063313ce567146102165780633644e51514610234578063395093511461023c576100ea565b806306fdde03146100ef578063095ea7b31461016c57806318160ddd146101b9575b600080fd5b6100f76103f0565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a56004803603604081101561018257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104a5565b604080519115158252519081900360200190f35b6101c16104c2565b60408051918252519081900360200190f35b6101a5600480360360608110156101e957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104c8565b61021e610569565b6040805160ff9092168252519081900360200190f35b6101c1610572565b6101a56004803603604081101561025257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610581565b6101c16004803603602081101561028b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105dc565b6101c1600480360360208110156102be57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610604565b6100f7610638565b6101a5600480360360408110156102f957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106b7565b6101a56004803603604081101561033257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561072c565b6103b3600480360360e081101561036b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610740565b005b6101c1600480360360408110156103cb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610979565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561049a5780601f1061046f5761010080835404028352916020019161049a565b820191906000526020600020905b81548152906001019060200180831161047d57829003601f168201915b505050505090505b90565b60006104b96104b2610a2c565b8484610a30565b50600192915050565b60025490565b60006104d5848484610b77565b61055f846104e1610a2c565b61055a856040518060600160405280602881526020016112556028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061052c610a2c565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610d47565b610a30565b5060019392505050565b60055460ff1690565b600061057c610df8565b905090565b60006104b961058e610a2c565b8461055a856001600061059f610a2c565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c1681529252902054906109b1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260066020526040812061063290610ec2565b92915050565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561049a5780601f1061046f5761010080835404028352916020019161049a565b60006104b96106c4610a2c565b8461055a856040518060600160405280602581526020016112c660259139600160006106ee610a2c565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610d47565b60006104b9610739610a2c565b8484610b77565b834211156107af57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff871660009081526006602052604081207f00000000000000000000000000000000000000000000000000000000000000009089908990899061080590610ec2565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050600061088882610ec6565b9050600061089882878787610f2d565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461093457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8a16600090815260066020526040902061096290611124565b61096d8a8a8a610a30565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b600082820183811015610a2557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610a9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a26024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610b08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806111c96022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610be3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127d6025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610c4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111a66023913960400191505060405180910390fd5b610c5a83838361112d565b610ca4816040518060600160405280602681526020016111eb6026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610d47565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610ce090826109b1565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610df0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610db5578181015183820152602001610d9d565b50505050905090810190601f168015610de25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60007f0000000000000000000000000000000000000000000000000000000000000000610e23611132565b1415610e5057507f00000000000000000000000000000000000000000000000000000000000000006104a2565b610ebb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611136565b90506104a2565b5490565b6000610ed0610df8565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610fa8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806112116022913960400191505060405180910390fd5b8360ff16601b1480610fbd57508360ff16601c145b611012576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806112336022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561106e573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661111b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b95945050505050565b80546001019055565b505050565b4690565b6000838383611143611132565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001209050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c756545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2E3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x31C JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x3B5 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x275 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2DB JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x234 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x23C JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1B9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x131 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4A5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH2 0x4C2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4C8 JUMP JUMPDEST PUSH2 0x21E PUSH2 0x569 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH2 0x572 JUMP JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x581 JUMP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5DC JUMP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x604 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x638 JUMP JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6B7 JUMP JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x332 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x72C JUMP JUMPDEST PUSH2 0x3B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x36B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x740 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x979 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x49A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x46F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x49A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x47D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B9 PUSH2 0x4B2 PUSH2 0xA2C JUMP JUMPDEST DUP5 DUP5 PUSH2 0xA30 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D5 DUP5 DUP5 DUP5 PUSH2 0xB77 JUMP JUMPDEST PUSH2 0x55F DUP5 PUSH2 0x4E1 PUSH2 0xA2C JUMP JUMPDEST PUSH2 0x55A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1255 PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x52C PUSH2 0xA2C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xD47 JUMP JUMPDEST PUSH2 0xA30 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x57C PUSH2 0xDF8 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B9 PUSH2 0x58E PUSH2 0xA2C JUMP JUMPDEST DUP5 PUSH2 0x55A DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x59F PUSH2 0xA2C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x9B1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x632 SWAP1 PUSH2 0xEC2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x49A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x46F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x49A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B9 PUSH2 0x6C4 PUSH2 0xA2C JUMP JUMPDEST DUP5 PUSH2 0x55A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12C6 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x6EE PUSH2 0xA2C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xD47 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B9 PUSH2 0x739 PUSH2 0xA2C JUMP JUMPDEST DUP5 DUP5 PUSH2 0xB77 JUMP JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x7AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332305065726D69743A206578706972656420646561646C696E65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH32 0x0 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH2 0x805 SWAP1 PUSH2 0xEC2 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x888 DUP3 PUSH2 0xEC6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x898 DUP3 DUP8 DUP8 DUP8 PUSH2 0xF2D JUMP JUMPDEST SWAP1 POP DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x934 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332305065726D69743A20696E76616C6964207369676E61747572650000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x962 SWAP1 PUSH2 0x1124 JUMP JUMPDEST PUSH2 0x96D DUP11 DUP11 DUP11 PUSH2 0xA30 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xA25 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0xA9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12A2 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xB08 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x11C9 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0xBE3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x127D PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xC4F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x11A6 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC5A DUP4 DUP4 DUP4 PUSH2 0x112D JUMP JUMPDEST PUSH2 0xCA4 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11EB PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xD47 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xCE0 SWAP1 DUP3 PUSH2 0x9B1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xDF0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDB5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD9D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDE2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH2 0xE23 PUSH2 0x1132 JUMP JUMPDEST EQ ISZERO PUSH2 0xE50 JUMPI POP PUSH32 0x0 PUSH2 0x4A2 JUMP JUMPDEST PUSH2 0xEBB PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x1136 JUMP JUMPDEST SWAP1 POP PUSH2 0x4A2 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xED0 PUSH2 0xDF8 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP3 GT ISZERO PUSH2 0xFA8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1211 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0xFF AND PUSH1 0x1B EQ DUP1 PUSH2 0xFBD JUMPI POP DUP4 PUSH1 0xFF AND PUSH1 0x1C EQ JUMPDEST PUSH2 0x1012 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1233 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x106E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x111B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 PUSH2 0x1143 PUSH2 0x1132 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545434453 COINBASE GASPRICE KECCAK256 PUSH10 0x6E76616C696420736967 PUSH15 0x6174757265202773272076616C7565 GASLIMIT NUMBER DIFFICULTY MSTORE8 COINBASE GASPRICE KECCAK256 PUSH10 0x6E76616C696420736967 PUSH15 0x6174757265202776272076616C7565 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA164736F PUSH13 0x6343000706000A000000000000 ","sourceMap":"122:178:108:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2153:89:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4229:166;;;;;;;;;;;;;;;;-1:-1:-1;4229:166:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3220:106;;;:::i;:::-;;;;;;;;;;;;;;;;4862:317;;;;;;;;;;;;;;;;-1:-1:-1;4862:317:30;;;;;;;;;;;;;;;;;;:::i;3071:89::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2548:113:24;;;:::i;5574:215:30:-;;;;;;;;;;;;;;;;-1:-1:-1;5574:215:30;;;;;;;;;:::i;3384:125::-;;;;;;;;;;;;;;;;-1:-1:-1;3384:125:30;;;;:::i;2306:118:24:-;;;;;;;;;;;;;;;;-1:-1:-1;2306:118:24;;;;:::i;2355:93:30:-;;;:::i;6276:266::-;;;;;;;;;;;;;;;;-1:-1:-1;6276:266:30;;;;;;;;;:::i;3712:172::-;;;;;;;;;;;;;;;;-1:-1:-1;3712:172:30;;;;;;;;;:::i;1451:794:24:-;;;;;;;;;;;;;;;;-1:-1:-1;1451:794:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3942:149:30;;;;;;;;;;;;;;;;-1:-1:-1;3942:149:30;;;;;;;;;;;:::i;2153:89::-;2230:5;2223:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2198:13;;2223:12;;2230:5;;2223:12;;2230:5;2223:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2153:89;;:::o;4229:166::-;4312:4;4328:39;4337:12;:10;:12::i;:::-;4351:7;4360:6;4328:8;:39::i;:::-;-1:-1:-1;4384:4:30;4229:166;;;;:::o;3220:106::-;3307:12;;3220:106;:::o;4862:317::-;4968:4;4984:36;4994:6;5002:9;5013:6;4984:9;:36::i;:::-;5030:121;5039:6;5047:12;:10;:12::i;:::-;5061:89;5099:6;5061:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;5081:12;:10;:12::i;:::-;5061:33;;;;;;;;;;;;;-1:-1:-1;5061:33:30;;;:89;:37;:89::i;:::-;5030:8;:121::i;:::-;-1:-1:-1;5168:4:30;4862:317;;;;;:::o;3071:89::-;3144:9;;;;3071:89;:::o;2548:113:24:-;2608:7;2634:20;:18;:20::i;:::-;2627:27;;2548:113;:::o;5574:215:30:-;5662:4;5678:83;5687:12;:10;:12::i;:::-;5701:7;5710:50;5749:10;5710:11;:25;5722:12;:10;:12::i;:::-;5710:25;;;;;;;;;;;;;;;;;;-1:-1:-1;5710:25:30;;;:34;;;;;;;;;;;:38;:50::i;3384:125::-;3484:18;;3458:7;3484:18;;;;;;;;;;;;3384:125::o;2306:118:24:-;2393:14;;;2367:7;2393:14;;;:7;:14;;;;;:24;;:22;:24::i;:::-;2386:31;2306:118;-1:-1:-1;;2306:118:24:o;2355:93:30:-;2434:7;2427:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2402:13;;2427:14;;2434:7;;2427:14;;2434:7;2427:14;;;;;;;;;;;;;;;;;;;;;;;;6276:266;6369:4;6385:129;6394:12;:10;:12::i;:::-;6408:7;6417:96;6456:15;6417:96;;;;;;;;;;;;;;;;;:11;:25;6429:12;:10;:12::i;:::-;6417:25;;;;;;;;;;;;;;;;;;-1:-1:-1;6417:25:30;;;:34;;;;;;;;;;;:96;:38;:96::i;3712:172::-;3798:4;3814:42;3824:12;:10;:12::i;:::-;3838:9;3849:6;3814:9;:42::i;1451:794:24:-;1678:8;1659:15;:27;;1651:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1908:14;;;1731:18;1908:14;;;:7;:14;;;;;1803:16;;1837:5;;1860:7;;1885:5;;1908:24;;:22;:24::i;:::-;1950:8;1775:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1752:230;;;;;;1731:251;;1993:12;2008:28;2025:10;2008:16;:28::i;:::-;1993:43;;2047:14;2064:28;2078:4;2084:1;2087;2090;2064:13;:28::i;:::-;2047:45;;2120:5;2110:15;;:6;:15;;;2102:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2171:14;;;;;;;:7;:14;;;;;:26;;:24;:26::i;:::-;2207:31;2216:5;2223:7;2232:5;2207:8;:31::i;:::-;1451:794;;;;;;;;;;:::o;3942:149:30:-;4057:18;;;;4031:7;4057:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3942:149::o;2682:175:28:-;2740:7;2771:5;;;2794:6;;;;2786:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2849:1;2682:175;-1:-1:-1;;;2682:175:28:o;598:104:38:-;685:10;598:104;:::o;9340:340:30:-;9441:19;;;9433:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9519:21;;;9511:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9590:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9641:32;;;;;;;;;;;;;;;;;9340:340;;;:::o;7016:530::-;7121:20;;;7113:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7201:23;;;7193:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7275:47;7296:6;7304:9;7315:6;7275:20;:47::i;:::-;7353:71;7375:6;7353:71;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;7333:17;;;;:9;:17;;;;;;;;;;;:91;;;;7457:20;;;;;;;:32;;7482:6;7457:24;:32::i;:::-;7434:20;;;;:9;:20;;;;;;;;;;;;:55;;;;7504:35;;;;;;;7434:20;;7504:35;;;;;;;;;;;;;7016:530;;;:::o;5424:163:28:-;5510:7;5545:12;5537:6;;;;5529:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5575:5:28;;;5424:163::o;2952:283:23:-;3013:7;3053:16;3036:13;:11;:13::i;:::-;:33;3032:197;;;-1:-1:-1;3092:24:23;3085:31;;3032:197;3154:64;3176:10;3188:12;3202:15;3154:21;:64::i;:::-;3147:71;;;;1098:112:39;1189:14;;1098:112::o;4193:183:23:-;4270:7;4335:20;:18;:20::i;:::-;4357:10;4306:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4296:73;;;;;;4289:80;;4193:183;;;:::o;1952:1414:22:-;2037:7;2952:66;2938:80;;;2930:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3075:1;:7;;3080:2;3075:7;:18;;;;3086:1;:7;;3091:2;3086:7;3075:18;3067:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3227:14;3244:24;3254:4;3260:1;3263;3266;3244:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3244:24:22;;;;;;-1:-1:-1;;3286:20:22;;;3278:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3353:6;1952:1414;-1:-1:-1;;;;;1952:1414:22:o;1216:178:39:-;1368:19;;1386:1;1368:19;;;1216:178::o;10686:92:30:-;;;;:::o;4382:320:23:-;4677:9;;4652:44::o;3241:327::-;3343:7;3420:8;3446:4;3468:7;3493:13;:11;:13::i;:::-;3532:4;3392:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3369:192;;;;;;3362:199;;3241:327;;;;;:::o"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToMint\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TestERC20.sol\":\"TestERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/cryptography/ECDSA.sol\":{\"keccak256\":\"0xc80ce3fcc5e444a2c5bdb902fe4d4f4ecba04e9b416425697d00ae95c1955f82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a84a791d3dfe88a0dcc5b3b825e8375d0ed60c96067b5beb9e2f7dabb0afb0e6\",\"dweb:/ipfs/QmPWUkNDWJkNgEZp1WuAMKkd2XvkuZBcx8HTTTauaj837Y\"]},\"@openzeppelin/contracts/drafts/EIP712.sol\":{\"keccak256\":\"0xe4bc5cda2bfee483ff10334881c9ea5cc4df7faa7b18a5a4b8f02fc51cf8adca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f0314cb3b722c5d221eeef6f5c050d4fd339bf7f2bf41c9304a62ff95bf33a\",\"dweb:/ipfs/QmVSBgT22SEY2mAkd8qNjsqTq8tciugToxbRzwPSSADPuJ\"]},\"@openzeppelin/contracts/drafts/ERC20Permit.sol\":{\"keccak256\":\"0x680c4b732f003b048d6a3cf227398d2f7f620eca779ab379662430adb6b19dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb8490d82756117d1ace222668f78756a1982deef7f4483d070fc37a1aeeb85c\",\"dweb:/ipfs/QmWv8kZ4y2joQ8iSe7Xc6ceULqns8TemtvW2j2KRsdryzD\"]},\"@openzeppelin/contracts/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x36b5ca4eabe888b39b10973621ca0dcc9b1508f8d06db9ddf045d7aa7c867d4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccbd79e8d556aa7011babb0e5d1e55a966add74853e7ba0274ff184bd96ef002\",\"dweb:/ipfs/QmV28ozNRUFDiDUMvCwcFmLTQPG6nfvgeKr4cmbHWoegtH\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0x2424442932373c51391b31409f9620d1e1396c37f41ab9d82c51d69bebdd1ab5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dcdf37ee59c10644338fbdfb3b7692125ff42003b34990eff8b04beedd89846f\",\"dweb:/ipfs/QmTMAvXQ4DoZbUSS3oBkNr2SddRPCTrE7DZNXrFArHnk8x\"]},\"contracts/test/TestERC20.sol\":{\"keccak256\":\"0x949018b853ff82728babf2bcfdc2c218081c5a826eb1bb3a2caac94b9b78b822\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7018299440a66d9048d94b80e867f255f531911254e086a4eff4a8aa7c1c530e\",\"dweb:/ipfs/QmbWUgTqbj7VdJZwFvreocWQnPJmrfD91wKsyKGDFrrdTM\"]}},\"version\":1}"}},"contracts/test/TestERC20Metadata.sol":{"TestERC20Metadata":{"abi":[{"inputs":[{"internalType":"uint256","name":"amountToMint","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"6101406040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610120523480156200003757600080fd5b506040516200187038038062001870833981810160405260608110156200005d57600080fd5b8151602083018051604051929492938301929190846401000000008211156200008557600080fd5b9083019060208201858111156200009b57600080fd5b8251640100000000811182820188101715620000b657600080fd5b82525081516020918201929091019080838360005b83811015620000e5578181015183820152602001620000cb565b50505050905090810190601f168015620001135780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200013757600080fd5b9083019060208201858111156200014d57600080fd5b82516401000000008111828201881017156200016857600080fd5b82525081516020918201929091019080838360005b83811015620001975781810151838201526020016200017d565b50505050905090810190601f168015620001c55780820380516001836020036101000a031916815260200191505b506040525050508180604051806040016040528060018152602001603160f81b815250848481600390805190602001906200020292919062000483565b5080516200021890600490602084019062000483565b50506005805460ff1916601217905550815160208084019190912082519183019190912060c082905260e08190527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f62000271620002a5565b60a05262000281818484620002a9565b60805261010052506200029c9350339250869150506200030d565b5050506200052f565b4690565b6000838383620002b8620002a5565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b03168152602001955050505050506040516020818303038152906040528051906020012090509392505050565b6001600160a01b03821662000369576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b62000377600083836200041c565b62000393816002546200042160201b620009b11790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620003c6918390620009b162000421821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b505050565b6000828201838110156200047c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620004bb576000855562000506565b82601f10620004d657805160ff191683800117855562000506565b8280016001018555821562000506579182015b8281111562000506578251825591602001919060010190620004e9565b506200051492915062000518565b5090565b5b8082111562000514576000815560010162000519565b60805160a05160c05160e05161010051610120516112f762000579600039806107d6525080610e55525080610e97525080610e76525080610dfc525080610e2c52506112f76000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a457c2d711610066578063a457c2d7146102e3578063a9059cbb1461031c578063d505accf14610355578063dd62ed3e146103b5576100ea565b806370a08231146102755780637ecebe00146102a857806395d89b41146102db576100ea565b806323b872dd116100c857806323b872dd146101d3578063313ce567146102165780633644e51514610234578063395093511461023c576100ea565b806306fdde03146100ef578063095ea7b31461016c57806318160ddd146101b9575b600080fd5b6100f76103f0565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a56004803603604081101561018257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104a5565b604080519115158252519081900360200190f35b6101c16104c2565b60408051918252519081900360200190f35b6101a5600480360360608110156101e957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104c8565b61021e610569565b6040805160ff9092168252519081900360200190f35b6101c1610572565b6101a56004803603604081101561025257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610581565b6101c16004803603602081101561028b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105dc565b6101c1600480360360208110156102be57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610604565b6100f7610638565b6101a5600480360360408110156102f957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106b7565b6101a56004803603604081101561033257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561072c565b6103b3600480360360e081101561036b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610740565b005b6101c1600480360360408110156103cb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610979565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561049a5780601f1061046f5761010080835404028352916020019161049a565b820191906000526020600020905b81548152906001019060200180831161047d57829003601f168201915b505050505090505b90565b60006104b96104b2610a2c565b8484610a30565b50600192915050565b60025490565b60006104d5848484610b77565b61055f846104e1610a2c565b61055a856040518060600160405280602881526020016112556028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061052c610a2c565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610d47565b610a30565b5060019392505050565b60055460ff1690565b600061057c610df8565b905090565b60006104b961058e610a2c565b8461055a856001600061059f610a2c565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c1681529252902054906109b1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260066020526040812061063290610ec2565b92915050565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561049a5780601f1061046f5761010080835404028352916020019161049a565b60006104b96106c4610a2c565b8461055a856040518060600160405280602581526020016112c660259139600160006106ee610a2c565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610d47565b60006104b9610739610a2c565b8484610b77565b834211156107af57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff871660009081526006602052604081207f00000000000000000000000000000000000000000000000000000000000000009089908990899061080590610ec2565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050600061088882610ec6565b9050600061089882878787610f2d565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461093457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8a16600090815260066020526040902061096290611124565b61096d8a8a8a610a30565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b600082820183811015610a2557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610a9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a26024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610b08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806111c96022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610be3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127d6025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610c4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111a66023913960400191505060405180910390fd5b610c5a83838361112d565b610ca4816040518060600160405280602681526020016111eb6026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610d47565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610ce090826109b1565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610df0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610db5578181015183820152602001610d9d565b50505050905090810190601f168015610de25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60007f0000000000000000000000000000000000000000000000000000000000000000610e23611132565b1415610e5057507f00000000000000000000000000000000000000000000000000000000000000006104a2565b610ebb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611136565b90506104a2565b5490565b6000610ed0610df8565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610fa8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806112116022913960400191505060405180910390fd5b8360ff16601b1480610fbd57508360ff16601c145b611012576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806112336022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561106e573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661111b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b95945050505050565b80546001019055565b505050565b4690565b6000838383611143611132565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001209050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c756545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a","opcodes":"PUSH2 0x140 PUSH1 0x40 MSTORE PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 PUSH2 0x120 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1870 CODESIZE SUB DUP1 PUSH3 0x1870 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP3 SWAP5 SWAP3 SWAP4 DUP4 ADD SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0xB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xE5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xCB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x113 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x14D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x197 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x17D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x1C5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP POP DUP2 DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP5 DUP5 DUP2 PUSH1 0x3 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x202 SWAP3 SWAP2 SWAP1 PUSH3 0x483 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x218 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x483 JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP DUP2 MLOAD PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 KECCAK256 DUP3 MLOAD SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0xC0 DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 SWAP1 MSTORE PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH3 0x271 PUSH3 0x2A5 JUMP JUMPDEST PUSH1 0xA0 MSTORE PUSH3 0x281 DUP2 DUP5 DUP5 PUSH3 0x2A9 JUMP JUMPDEST PUSH1 0x80 MSTORE PUSH2 0x100 MSTORE POP PUSH3 0x29C SWAP4 POP CALLER SWAP3 POP DUP7 SWAP2 POP POP PUSH3 0x30D JUMP JUMPDEST POP POP POP PUSH3 0x52F JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 PUSH3 0x2B8 PUSH3 0x2A5 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x369 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0x377 PUSH1 0x0 DUP4 DUP4 PUSH3 0x41C JUMP JUMPDEST PUSH3 0x393 DUP2 PUSH1 0x2 SLOAD PUSH3 0x421 PUSH1 0x20 SHL PUSH3 0x9B1 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH3 0x3C6 SWAP2 DUP4 SWAP1 PUSH3 0x9B1 PUSH3 0x421 DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH3 0x47C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x4BB JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x506 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x4D6 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x506 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x506 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x506 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x4E9 JUMP JUMPDEST POP PUSH3 0x514 SWAP3 SWAP2 POP PUSH3 0x518 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x514 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x519 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x12F7 PUSH3 0x579 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x7D6 MSTORE POP DUP1 PUSH2 0xE55 MSTORE POP DUP1 PUSH2 0xE97 MSTORE POP DUP1 PUSH2 0xE76 MSTORE POP DUP1 PUSH2 0xDFC MSTORE POP DUP1 PUSH2 0xE2C MSTORE POP PUSH2 0x12F7 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2E3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x31C JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x3B5 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x275 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2DB JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x234 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x23C JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1B9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x131 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4A5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH2 0x4C2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4C8 JUMP JUMPDEST PUSH2 0x21E PUSH2 0x569 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH2 0x572 JUMP JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x581 JUMP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5DC JUMP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x604 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x638 JUMP JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6B7 JUMP JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x332 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x72C JUMP JUMPDEST PUSH2 0x3B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x36B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x740 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x979 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x49A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x46F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x49A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x47D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B9 PUSH2 0x4B2 PUSH2 0xA2C JUMP JUMPDEST DUP5 DUP5 PUSH2 0xA30 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D5 DUP5 DUP5 DUP5 PUSH2 0xB77 JUMP JUMPDEST PUSH2 0x55F DUP5 PUSH2 0x4E1 PUSH2 0xA2C JUMP JUMPDEST PUSH2 0x55A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1255 PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x52C PUSH2 0xA2C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xD47 JUMP JUMPDEST PUSH2 0xA30 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x57C PUSH2 0xDF8 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B9 PUSH2 0x58E PUSH2 0xA2C JUMP JUMPDEST DUP5 PUSH2 0x55A DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x59F PUSH2 0xA2C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x9B1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x632 SWAP1 PUSH2 0xEC2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x49A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x46F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x49A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B9 PUSH2 0x6C4 PUSH2 0xA2C JUMP JUMPDEST DUP5 PUSH2 0x55A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12C6 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x6EE PUSH2 0xA2C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xD47 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B9 PUSH2 0x739 PUSH2 0xA2C JUMP JUMPDEST DUP5 DUP5 PUSH2 0xB77 JUMP JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x7AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332305065726D69743A206578706972656420646561646C696E65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH32 0x0 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH2 0x805 SWAP1 PUSH2 0xEC2 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x888 DUP3 PUSH2 0xEC6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x898 DUP3 DUP8 DUP8 DUP8 PUSH2 0xF2D JUMP JUMPDEST SWAP1 POP DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x934 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332305065726D69743A20696E76616C6964207369676E61747572650000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x962 SWAP1 PUSH2 0x1124 JUMP JUMPDEST PUSH2 0x96D DUP11 DUP11 DUP11 PUSH2 0xA30 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xA25 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0xA9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12A2 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xB08 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x11C9 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0xBE3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x127D PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xC4F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x11A6 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC5A DUP4 DUP4 DUP4 PUSH2 0x112D JUMP JUMPDEST PUSH2 0xCA4 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11EB PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xD47 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xCE0 SWAP1 DUP3 PUSH2 0x9B1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xDF0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDB5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD9D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDE2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH2 0xE23 PUSH2 0x1132 JUMP JUMPDEST EQ ISZERO PUSH2 0xE50 JUMPI POP PUSH32 0x0 PUSH2 0x4A2 JUMP JUMPDEST PUSH2 0xEBB PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x1136 JUMP JUMPDEST SWAP1 POP PUSH2 0x4A2 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xED0 PUSH2 0xDF8 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP3 GT ISZERO PUSH2 0xFA8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1211 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0xFF AND PUSH1 0x1B EQ DUP1 PUSH2 0xFBD JUMPI POP DUP4 PUSH1 0xFF AND PUSH1 0x1C EQ JUMPDEST PUSH2 0x1012 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1233 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x106E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x111B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 PUSH2 0x1143 PUSH2 0x1132 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545434453 COINBASE GASPRICE KECCAK256 PUSH10 0x6E76616C696420736967 PUSH15 0x6174757265202773272076616C7565 GASLIMIT NUMBER DIFFICULTY MSTORE8 COINBASE GASPRICE KECCAK256 PUSH10 0x6E76616C696420736967 PUSH15 0x6174757265202776272076616C7565 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA164736F PUSH13 0x6343000706000A000000000000 ","sourceMap":"122:212:109:-:0;;;1006:95:24;961:140;;170:162:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;170:162:109;;;;;;;;;;-1:-1:-1;170:162:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;170:162:109;;;;;;;;;;-1:-1:-1;170:162:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;278:4;1372::24;2324:542:23;;;;;;;;;;;;;-1:-1:-1;;;2324:542:23;;;252:4:109;258:6;2025:5:30;2017;:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2040:17:30;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2067:9:30;:14;;-1:-1:-1;;2067:14:30;2079:2;2067:14;;;-1:-1:-1;2410:22:23;;;;;;;;;;2466:25;;;;;;;;;2625;;;;2660:31;;;;2520:95;2720:13;:11;:13::i;:::-;2701:32;;2770:58;2792:8;2802:10;2814:13;2770:21;:58::i;:::-;2743:85;;2838:21;;-1:-1:-1;294:31:109::2;::::0;-1:-1:-1;300:10:109::2;::::0;-1:-1:-1;312:12:109;;-1:-1:-1;;294:5:109::2;:31::i;:::-;170:162:::0;;;122:212;;4382:320:23;4677:9;;4652:44::o;3241:327::-;3343:7;3420:8;3446:4;3468:7;3493:13;:11;:13::i;:::-;3532:4;3392:159;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3392:159:23;;;;;;;;;;;;;;;;;;;;;;;;3369:192;;;;;;3362:199;;3241:327;;;;;:::o;7817:370:30:-;-1:-1:-1;;;;;7900:21:30;;7892:65;;;;;-1:-1:-1;;;7892:65:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;7968:49;7997:1;8001:7;8010:6;7968:20;:49::i;:::-;8043:24;8060:6;8043:12;;:16;;;;;;:24;;;;:::i;:::-;8028:12;:39;-1:-1:-1;;;;;8098:18:30;;:9;:18;;;;;;;;;;;;:30;;8121:6;;8098:22;;;;;:30;;:::i;:::-;-1:-1:-1;;;;;8077:18:30;;:9;:18;;;;;;;;;;;:51;;;;8143:37;;;;;;;8077:18;;:9;;8143:37;;;;;;;;;;7817:370;;:::o;10686:92::-;;;;:::o;2682:175:28:-;2740:7;2771:5;;;2794:6;;;;2786:46;;;;;-1:-1:-1;;;2786:46:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;2849:1;2682:175;-1:-1:-1;;;2682:175:28:o;122:212:109:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;122:212:109;;;-1:-1:-1;122:212:109;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{"2673":[{"length":32,"start":3628}],"2675":[{"length":32,"start":3580}],"2677":[{"length":32,"start":3702}],"2679":[{"length":32,"start":3735}],"2681":[{"length":32,"start":3669}],"2843":[{"length":32,"start":2006}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a457c2d711610066578063a457c2d7146102e3578063a9059cbb1461031c578063d505accf14610355578063dd62ed3e146103b5576100ea565b806370a08231146102755780637ecebe00146102a857806395d89b41146102db576100ea565b806323b872dd116100c857806323b872dd146101d3578063313ce567146102165780633644e51514610234578063395093511461023c576100ea565b806306fdde03146100ef578063095ea7b31461016c57806318160ddd146101b9575b600080fd5b6100f76103f0565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a56004803603604081101561018257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104a5565b604080519115158252519081900360200190f35b6101c16104c2565b60408051918252519081900360200190f35b6101a5600480360360608110156101e957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104c8565b61021e610569565b6040805160ff9092168252519081900360200190f35b6101c1610572565b6101a56004803603604081101561025257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610581565b6101c16004803603602081101561028b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105dc565b6101c1600480360360208110156102be57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610604565b6100f7610638565b6101a5600480360360408110156102f957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106b7565b6101a56004803603604081101561033257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561072c565b6103b3600480360360e081101561036b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610740565b005b6101c1600480360360408110156103cb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610979565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561049a5780601f1061046f5761010080835404028352916020019161049a565b820191906000526020600020905b81548152906001019060200180831161047d57829003601f168201915b505050505090505b90565b60006104b96104b2610a2c565b8484610a30565b50600192915050565b60025490565b60006104d5848484610b77565b61055f846104e1610a2c565b61055a856040518060600160405280602881526020016112556028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061052c610a2c565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610d47565b610a30565b5060019392505050565b60055460ff1690565b600061057c610df8565b905090565b60006104b961058e610a2c565b8461055a856001600061059f610a2c565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c1681529252902054906109b1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260066020526040812061063290610ec2565b92915050565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561049a5780601f1061046f5761010080835404028352916020019161049a565b60006104b96106c4610a2c565b8461055a856040518060600160405280602581526020016112c660259139600160006106ee610a2c565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610d47565b60006104b9610739610a2c565b8484610b77565b834211156107af57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff871660009081526006602052604081207f00000000000000000000000000000000000000000000000000000000000000009089908990899061080590610ec2565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050600061088882610ec6565b9050600061089882878787610f2d565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461093457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8a16600090815260066020526040902061096290611124565b61096d8a8a8a610a30565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b600082820183811015610a2557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610a9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a26024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610b08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806111c96022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610be3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127d6025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610c4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111a66023913960400191505060405180910390fd5b610c5a83838361112d565b610ca4816040518060600160405280602681526020016111eb6026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610d47565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610ce090826109b1565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610df0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610db5578181015183820152602001610d9d565b50505050905090810190601f168015610de25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60007f0000000000000000000000000000000000000000000000000000000000000000610e23611132565b1415610e5057507f00000000000000000000000000000000000000000000000000000000000000006104a2565b610ebb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611136565b90506104a2565b5490565b6000610ed0610df8565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610fa8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806112116022913960400191505060405180910390fd5b8360ff16601b1480610fbd57508360ff16601c145b611012576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806112336022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561106e573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661111b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b95945050505050565b80546001019055565b505050565b4690565b6000838383611143611132565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001209050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c756545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2E3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x31C JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x3B5 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x275 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2DB JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x234 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x23C JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1B9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x131 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4A5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH2 0x4C2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4C8 JUMP JUMPDEST PUSH2 0x21E PUSH2 0x569 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH2 0x572 JUMP JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x581 JUMP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5DC JUMP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x604 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x638 JUMP JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6B7 JUMP JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x332 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x72C JUMP JUMPDEST PUSH2 0x3B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x36B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x740 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x979 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x49A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x46F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x49A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x47D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B9 PUSH2 0x4B2 PUSH2 0xA2C JUMP JUMPDEST DUP5 DUP5 PUSH2 0xA30 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D5 DUP5 DUP5 DUP5 PUSH2 0xB77 JUMP JUMPDEST PUSH2 0x55F DUP5 PUSH2 0x4E1 PUSH2 0xA2C JUMP JUMPDEST PUSH2 0x55A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1255 PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x52C PUSH2 0xA2C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xD47 JUMP JUMPDEST PUSH2 0xA30 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x57C PUSH2 0xDF8 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B9 PUSH2 0x58E PUSH2 0xA2C JUMP JUMPDEST DUP5 PUSH2 0x55A DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x59F PUSH2 0xA2C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x9B1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x632 SWAP1 PUSH2 0xEC2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x49A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x46F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x49A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B9 PUSH2 0x6C4 PUSH2 0xA2C JUMP JUMPDEST DUP5 PUSH2 0x55A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12C6 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x6EE PUSH2 0xA2C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xD47 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B9 PUSH2 0x739 PUSH2 0xA2C JUMP JUMPDEST DUP5 DUP5 PUSH2 0xB77 JUMP JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x7AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332305065726D69743A206578706972656420646561646C696E65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH32 0x0 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH2 0x805 SWAP1 PUSH2 0xEC2 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x888 DUP3 PUSH2 0xEC6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x898 DUP3 DUP8 DUP8 DUP8 PUSH2 0xF2D JUMP JUMPDEST SWAP1 POP DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x934 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332305065726D69743A20696E76616C6964207369676E61747572650000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x962 SWAP1 PUSH2 0x1124 JUMP JUMPDEST PUSH2 0x96D DUP11 DUP11 DUP11 PUSH2 0xA30 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xA25 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0xA9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12A2 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xB08 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x11C9 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0xBE3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x127D PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xC4F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x11A6 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC5A DUP4 DUP4 DUP4 PUSH2 0x112D JUMP JUMPDEST PUSH2 0xCA4 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11EB PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xD47 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xCE0 SWAP1 DUP3 PUSH2 0x9B1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xDF0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDB5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD9D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDE2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH2 0xE23 PUSH2 0x1132 JUMP JUMPDEST EQ ISZERO PUSH2 0xE50 JUMPI POP PUSH32 0x0 PUSH2 0x4A2 JUMP JUMPDEST PUSH2 0xEBB PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x1136 JUMP JUMPDEST SWAP1 POP PUSH2 0x4A2 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xED0 PUSH2 0xDF8 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP3 GT ISZERO PUSH2 0xFA8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1211 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0xFF AND PUSH1 0x1B EQ DUP1 PUSH2 0xFBD JUMPI POP DUP4 PUSH1 0xFF AND PUSH1 0x1C EQ JUMPDEST PUSH2 0x1012 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1233 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x106E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x111B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 PUSH2 0x1143 PUSH2 0x1132 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545434453 COINBASE GASPRICE KECCAK256 PUSH10 0x6E76616C696420736967 PUSH15 0x6174757265202773272076616C7565 GASLIMIT NUMBER DIFFICULTY MSTORE8 COINBASE GASPRICE KECCAK256 PUSH10 0x6E76616C696420736967 PUSH15 0x6174757265202776272076616C7565 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA164736F PUSH13 0x6343000706000A000000000000 ","sourceMap":"122:212:109:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2153:89:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4229:166;;;;;;;;;;;;;;;;-1:-1:-1;4229:166:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3220:106;;;:::i;:::-;;;;;;;;;;;;;;;;4862:317;;;;;;;;;;;;;;;;-1:-1:-1;4862:317:30;;;;;;;;;;;;;;;;;;:::i;3071:89::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2548:113:24;;;:::i;5574:215:30:-;;;;;;;;;;;;;;;;-1:-1:-1;5574:215:30;;;;;;;;;:::i;3384:125::-;;;;;;;;;;;;;;;;-1:-1:-1;3384:125:30;;;;:::i;2306:118:24:-;;;;;;;;;;;;;;;;-1:-1:-1;2306:118:24;;;;:::i;2355:93:30:-;;;:::i;6276:266::-;;;;;;;;;;;;;;;;-1:-1:-1;6276:266:30;;;;;;;;;:::i;3712:172::-;;;;;;;;;;;;;;;;-1:-1:-1;3712:172:30;;;;;;;;;:::i;1451:794:24:-;;;;;;;;;;;;;;;;-1:-1:-1;1451:794:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3942:149:30;;;;;;;;;;;;;;;;-1:-1:-1;3942:149:30;;;;;;;;;;;:::i;2153:89::-;2230:5;2223:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2198:13;;2223:12;;2230:5;;2223:12;;2230:5;2223:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2153:89;;:::o;4229:166::-;4312:4;4328:39;4337:12;:10;:12::i;:::-;4351:7;4360:6;4328:8;:39::i;:::-;-1:-1:-1;4384:4:30;4229:166;;;;:::o;3220:106::-;3307:12;;3220:106;:::o;4862:317::-;4968:4;4984:36;4994:6;5002:9;5013:6;4984:9;:36::i;:::-;5030:121;5039:6;5047:12;:10;:12::i;:::-;5061:89;5099:6;5061:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;5081:12;:10;:12::i;:::-;5061:33;;;;;;;;;;;;;-1:-1:-1;5061:33:30;;;:89;:37;:89::i;:::-;5030:8;:121::i;:::-;-1:-1:-1;5168:4:30;4862:317;;;;;:::o;3071:89::-;3144:9;;;;3071:89;:::o;2548:113:24:-;2608:7;2634:20;:18;:20::i;:::-;2627:27;;2548:113;:::o;5574:215:30:-;5662:4;5678:83;5687:12;:10;:12::i;:::-;5701:7;5710:50;5749:10;5710:11;:25;5722:12;:10;:12::i;:::-;5710:25;;;;;;;;;;;;;;;;;;-1:-1:-1;5710:25:30;;;:34;;;;;;;;;;;:38;:50::i;3384:125::-;3484:18;;3458:7;3484:18;;;;;;;;;;;;3384:125::o;2306:118:24:-;2393:14;;;2367:7;2393:14;;;:7;:14;;;;;:24;;:22;:24::i;:::-;2386:31;2306:118;-1:-1:-1;;2306:118:24:o;2355:93:30:-;2434:7;2427:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2402:13;;2427:14;;2434:7;;2427:14;;2434:7;2427:14;;;;;;;;;;;;;;;;;;;;;;;;6276:266;6369:4;6385:129;6394:12;:10;:12::i;:::-;6408:7;6417:96;6456:15;6417:96;;;;;;;;;;;;;;;;;:11;:25;6429:12;:10;:12::i;:::-;6417:25;;;;;;;;;;;;;;;;;;-1:-1:-1;6417:25:30;;;:34;;;;;;;;;;;:96;:38;:96::i;3712:172::-;3798:4;3814:42;3824:12;:10;:12::i;:::-;3838:9;3849:6;3814:9;:42::i;1451:794:24:-;1678:8;1659:15;:27;;1651:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1908:14;;;1731:18;1908:14;;;:7;:14;;;;;1803:16;;1837:5;;1860:7;;1885:5;;1908:24;;:22;:24::i;:::-;1950:8;1775:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1752:230;;;;;;1731:251;;1993:12;2008:28;2025:10;2008:16;:28::i;:::-;1993:43;;2047:14;2064:28;2078:4;2084:1;2087;2090;2064:13;:28::i;:::-;2047:45;;2120:5;2110:15;;:6;:15;;;2102:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2171:14;;;;;;;:7;:14;;;;;:26;;:24;:26::i;:::-;2207:31;2216:5;2223:7;2232:5;2207:8;:31::i;:::-;1451:794;;;;;;;;;;:::o;3942:149:30:-;4057:18;;;;4031:7;4057:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3942:149::o;2682:175:28:-;2740:7;2771:5;;;2794:6;;;;2786:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2849:1;2682:175;-1:-1:-1;;;2682:175:28:o;598:104:38:-;685:10;598:104;:::o;9340:340:30:-;9441:19;;;9433:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9519:21;;;9511:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9590:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9641:32;;;;;;;;;;;;;;;;;9340:340;;;:::o;7016:530::-;7121:20;;;7113:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7201:23;;;7193:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7275:47;7296:6;7304:9;7315:6;7275:20;:47::i;:::-;7353:71;7375:6;7353:71;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;7333:17;;;;:9;:17;;;;;;;;;;;:91;;;;7457:20;;;;;;;:32;;7482:6;7457:24;:32::i;:::-;7434:20;;;;:9;:20;;;;;;;;;;;;:55;;;;7504:35;;;;;;;7434:20;;7504:35;;;;;;;;;;;;;7016:530;;;:::o;5424:163:28:-;5510:7;5545:12;5537:6;;;;5529:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5575:5:28;;;5424:163::o;2952:283:23:-;3013:7;3053:16;3036:13;:11;:13::i;:::-;:33;3032:197;;;-1:-1:-1;3092:24:23;3085:31;;3032:197;3154:64;3176:10;3188:12;3202:15;3154:21;:64::i;:::-;3147:71;;;;1098:112:39;1189:14;;1098:112::o;4193:183:23:-;4270:7;4335:20;:18;:20::i;:::-;4357:10;4306:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4296:73;;;;;;4289:80;;4193:183;;;:::o;1952:1414:22:-;2037:7;2952:66;2938:80;;;2930:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3075:1;:7;;3080:2;3075:7;:18;;;;3086:1;:7;;3091:2;3086:7;3075:18;3067:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3227:14;3244:24;3254:4;3260:1;3263;3266;3244:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3244:24:22;;;;;;-1:-1:-1;;3286:20:22;;;3278:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3353:6;1952:1414;-1:-1:-1;;;;;1952:1414:22:o;1216:178:39:-;1368:19;;1386:1;1368:19;;;1216:178::o;10686:92:30:-;;;;:::o;4382:320:23:-;4677:9;;4652:44::o;3241:327::-;3343:7;3420:8;3446:4;3468:7;3493:13;:11;:13::i;:::-;3532:4;3392:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3369:192;;;;;;3362:199;;3241:327;;;;;:::o"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToMint\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TestERC20Metadata.sol\":\"TestERC20Metadata\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/cryptography/ECDSA.sol\":{\"keccak256\":\"0xc80ce3fcc5e444a2c5bdb902fe4d4f4ecba04e9b416425697d00ae95c1955f82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a84a791d3dfe88a0dcc5b3b825e8375d0ed60c96067b5beb9e2f7dabb0afb0e6\",\"dweb:/ipfs/QmPWUkNDWJkNgEZp1WuAMKkd2XvkuZBcx8HTTTauaj837Y\"]},\"@openzeppelin/contracts/drafts/EIP712.sol\":{\"keccak256\":\"0xe4bc5cda2bfee483ff10334881c9ea5cc4df7faa7b18a5a4b8f02fc51cf8adca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f0314cb3b722c5d221eeef6f5c050d4fd339bf7f2bf41c9304a62ff95bf33a\",\"dweb:/ipfs/QmVSBgT22SEY2mAkd8qNjsqTq8tciugToxbRzwPSSADPuJ\"]},\"@openzeppelin/contracts/drafts/ERC20Permit.sol\":{\"keccak256\":\"0x680c4b732f003b048d6a3cf227398d2f7f620eca779ab379662430adb6b19dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb8490d82756117d1ace222668f78756a1982deef7f4483d070fc37a1aeeb85c\",\"dweb:/ipfs/QmWv8kZ4y2joQ8iSe7Xc6ceULqns8TemtvW2j2KRsdryzD\"]},\"@openzeppelin/contracts/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x36b5ca4eabe888b39b10973621ca0dcc9b1508f8d06db9ddf045d7aa7c867d4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccbd79e8d556aa7011babb0e5d1e55a966add74853e7ba0274ff184bd96ef002\",\"dweb:/ipfs/QmV28ozNRUFDiDUMvCwcFmLTQPG6nfvgeKr4cmbHWoegtH\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0x2424442932373c51391b31409f9620d1e1396c37f41ab9d82c51d69bebdd1ab5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dcdf37ee59c10644338fbdfb3b7692125ff42003b34990eff8b04beedd89846f\",\"dweb:/ipfs/QmTMAvXQ4DoZbUSS3oBkNr2SddRPCTrE7DZNXrFArHnk8x\"]},\"contracts/test/TestERC20Metadata.sol\":{\"keccak256\":\"0x817f7bf570a33783b5a050ef9a983f3efaf244e4d925ea89f80d81bcc7089df3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://38791cd476b6621bf578bd041a59ffa5643d4cc716eb996101beb58e733f8292\",\"dweb:/ipfs/QmXfspAQkpUpBmYM9KCQSxuDPkLdebqvikRxhTyqqjKoTC\"]}},\"version\":1}"}},"contracts/test/TestERC20PermitAllowed.sol":{"TestERC20PermitAllowed":{"abi":[{"inputs":[{"internalType":"uint256","name":"amountToMint","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"6101406040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610120523480156200003757600080fd5b506040516200191438038062001914833981810160405260208110156200005d57600080fd5b5051604080518082018252600a808252690546573742045524332360b41b60208381018290528451808601865260018152603160f81b818301528551808701875293845283820192835285518087019096526004865263151154d560e21b9186019190915282518695859492939091620000da916003916200035a565b508051620000f09060049060208401906200035a565b50506005805460ff1916601217905550815160208084019190912082519183019190912060c082905260e08190527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001496200017c565b60a0526200015981848462000180565b608052610100525062000174935033925084915050620001e4565b505062000406565b4690565b60008383836200018f6200017c565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b03168152602001955050505050506040516020818303038152906040528051906020012090509392505050565b6001600160a01b03821662000240576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6200024e60008383620002f3565b6200026a81600254620002f860201b62000b531790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200029d91839062000b53620002f8821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b505050565b60008282018381101562000353576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620003925760008555620003dd565b82601f10620003ad57805160ff1916838001178555620003dd565b82800160010185558215620003dd579182015b82811115620003dd578251825591602001919060010190620003c0565b50620003eb929150620003ef565b5090565b5b80821115620003eb5760008155600101620003f0565b60805160a05160c05160e05161010051610120516114c46200045060003980610978525080610ff7525080611039525080611018525080610f9e525080610fce52506114c46000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d714610357578063a9059cbb14610390578063d505accf146103c9578063dd62ed3e14610427576100f5565b806370a08231146102805780637ecebe00146102b35780638fcbaf0c146102e657806395d89b411461034f576100f5565b806323b872dd116100d357806323b872dd146101de578063313ce567146102215780633644e5151461023f5780633950935114610247576100f5565b806306fdde03146100fa578063095ea7b31461017757806318160ddd146101c4575b600080fd5b610102610462565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561013c578181015183820152602001610124565b50505050905090810190601f1680156101695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b06004803603604081101561018d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610517565b604080519115158252519081900360200190f35b6101cc610534565b60408051918252519081900360200190f35b6101b0600480360360608110156101f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561053a565b6102296105db565b6040805160ff9092168252519081900360200190f35b6101cc6105e4565b6101b06004803603604081101561025d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105f3565b6101cc6004803603602081101561029657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661064e565b6101cc600480360360208110156102c957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610676565b61034d60048036036101008110156102fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604081013590606081013590608081013515159060ff60a0820135169060c08101359060e001356106aa565b005b6101026107da565b6101b06004803603604081101561036d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610859565b6101b0600480360360408110156103a657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108ce565b61034d600480360360e08110156103df57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356108e2565b6101cc6004803603604081101561043d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610b1b565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561050c5780601f106104e15761010080835404028352916020019161050c565b820191906000526020600020905b8154815290600101906020018083116104ef57829003601f168201915b505050505090505b90565b600061052b610524610bce565b8484610bd2565b50600192915050565b60025490565b6000610547848484610d19565b6105d184610553610bce565b6105cc856040518060600160405280602881526020016114226028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061059e610bce565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610ee9565b610bd2565b5060019392505050565b60055460ff1690565b60006105ee610f9a565b905090565b600061052b610600610bce565b846105cc8560016000610611610bce565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610b53565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b73ffffffffffffffffffffffffffffffffffffffff811660009081526006602052604081206106a490611064565b92915050565b853073ffffffffffffffffffffffffffffffffffffffff16637ecebe008a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561071257600080fd5b505afa158015610726573d6000803e3d6000fd5b505050506040513d602081101561073c57600080fd5b505114610794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061136b602b913960400191505060405180910390fd5b6107d08888866107a55760006107c7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b888787876108e2565b5050505050505050565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561050c5780601f106104e15761010080835404028352916020019161050c565b600061052b610866610bce565b846105cc856040518060600160405280602581526020016114936025913960016000610890610bce565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610ee9565b600061052b6108db610bce565b8484610d19565b8342111561095157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff871660009081526006602052604081207f0000000000000000000000000000000000000000000000000000000000000000908990899089906109a790611064565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012090506000610a2a82611068565b90506000610a3a828787876110cf565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ad657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8a166000908152600660205260409020610b04906112c6565b610b0f8a8a8a610bd2565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b600082820183811015610bc757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610c3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061146f6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610caa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806113966022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061144a6025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610df1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806113486023913960400191505060405180910390fd5b610dfc8383836112cf565b610e46816040518060600160405280602681526020016113b86026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610ee9565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610e829082610b53565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610f92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f57578181015183820152602001610f3f565b50505050905090810190601f168015610f845780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60007f0000000000000000000000000000000000000000000000000000000000000000610fc56112d4565b1415610ff257507f0000000000000000000000000000000000000000000000000000000000000000610514565b61105d7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006112d8565b9050610514565b5490565b6000611072610f9a565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a082111561114a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806113de6022913960400191505060405180910390fd5b8360ff16601b148061115f57508360ff16601c145b6111b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806114006022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611210573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166112bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b95945050505050565b80546001019055565b505050565b4690565b60008383836112e56112d4565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001209050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573735465737445524332305065726d6974416c6c6f7765643a3a7065726d69743a2077726f6e67206e6f6e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c756545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a","opcodes":"PUSH2 0x140 PUSH1 0x40 MSTORE PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 PUSH2 0x120 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1914 CODESIZE SUB DUP1 PUSH3 0x1914 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xA DUP1 DUP3 MSTORE PUSH10 0x5465737420455243323 PUSH1 0xB4 SHL PUSH1 0x20 DUP4 DUP2 ADD DUP3 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP7 ADD DUP7 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL DUP2 DUP4 ADD MSTORE DUP6 MLOAD DUP1 DUP8 ADD DUP8 MSTORE SWAP4 DUP5 MSTORE DUP4 DUP3 ADD SWAP3 DUP4 MSTORE DUP6 MLOAD DUP1 DUP8 ADD SWAP1 SWAP7 MSTORE PUSH1 0x4 DUP7 MSTORE PUSH4 0x151154D5 PUSH1 0xE2 SHL SWAP2 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP7 SWAP6 DUP6 SWAP5 SWAP3 SWAP4 SWAP1 SWAP2 PUSH3 0xDA SWAP2 PUSH1 0x3 SWAP2 PUSH3 0x35A JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0xF0 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x35A JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP DUP2 MLOAD PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 KECCAK256 DUP3 MLOAD SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0xC0 DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 SWAP1 MSTORE PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH3 0x149 PUSH3 0x17C JUMP JUMPDEST PUSH1 0xA0 MSTORE PUSH3 0x159 DUP2 DUP5 DUP5 PUSH3 0x180 JUMP JUMPDEST PUSH1 0x80 MSTORE PUSH2 0x100 MSTORE POP PUSH3 0x174 SWAP4 POP CALLER SWAP3 POP DUP5 SWAP2 POP POP PUSH3 0x1E4 JUMP JUMPDEST POP POP PUSH3 0x406 JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 PUSH3 0x18F PUSH3 0x17C JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x240 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0x24E PUSH1 0x0 DUP4 DUP4 PUSH3 0x2F3 JUMP JUMPDEST PUSH3 0x26A DUP2 PUSH1 0x2 SLOAD PUSH3 0x2F8 PUSH1 0x20 SHL PUSH3 0xB53 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH3 0x29D SWAP2 DUP4 SWAP1 PUSH3 0xB53 PUSH3 0x2F8 DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH3 0x353 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x392 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x3DD JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x3AD JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x3DD JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x3DD JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x3DD JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x3C0 JUMP JUMPDEST POP PUSH3 0x3EB SWAP3 SWAP2 POP PUSH3 0x3EF JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x3EB JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x3F0 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x14C4 PUSH3 0x450 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x978 MSTORE POP DUP1 PUSH2 0xFF7 MSTORE POP DUP1 PUSH2 0x1039 MSTORE POP DUP1 PUSH2 0x1018 MSTORE POP DUP1 PUSH2 0xF9E MSTORE POP DUP1 PUSH2 0xFCE MSTORE POP PUSH2 0x14C4 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x357 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x3C9 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x427 JUMPI PUSH2 0xF5 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x2B3 JUMPI DUP1 PUSH4 0x8FCBAF0C EQ PUSH2 0x2E6 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x34F JUMPI PUSH2 0xF5 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x221 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x247 JUMPI PUSH2 0xF5 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xFA JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1C4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0x462 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x169 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x517 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1CC PUSH2 0x534 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x53A JUMP JUMPDEST PUSH2 0x229 PUSH2 0x5DB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1CC PUSH2 0x5E4 JUMP JUMPDEST PUSH2 0x1B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5F3 JUMP JUMPDEST PUSH2 0x1CC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x64E JUMP JUMPDEST PUSH2 0x1CC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x676 JUMP JUMPDEST PUSH2 0x34D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x2FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xA0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x6AA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x102 PUSH2 0x7DA JUMP JUMPDEST PUSH2 0x1B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x36D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x859 JUMP JUMPDEST PUSH2 0x1B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8CE JUMP JUMPDEST PUSH2 0x34D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x3DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x8E2 JUMP JUMPDEST PUSH2 0x1CC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xB1B JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x50C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4E1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x50C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4EF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52B PUSH2 0x524 PUSH2 0xBCE JUMP JUMPDEST DUP5 DUP5 PUSH2 0xBD2 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x547 DUP5 DUP5 DUP5 PUSH2 0xD19 JUMP JUMPDEST PUSH2 0x5D1 DUP5 PUSH2 0x553 PUSH2 0xBCE JUMP JUMPDEST PUSH2 0x5CC DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1422 PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x59E PUSH2 0xBCE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xEE9 JUMP JUMPDEST PUSH2 0xBD2 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5EE PUSH2 0xF9A JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52B PUSH2 0x600 PUSH2 0xBCE JUMP JUMPDEST DUP5 PUSH2 0x5CC DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x611 PUSH2 0xBCE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0xB53 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x6A4 SWAP1 PUSH2 0x1064 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP6 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x7ECEBE00 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x712 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x726 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x73C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x794 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x136B PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7D0 DUP9 DUP9 DUP7 PUSH2 0x7A5 JUMPI PUSH1 0x0 PUSH2 0x7C7 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH2 0x8E2 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x50C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4E1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x50C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52B PUSH2 0x866 PUSH2 0xBCE JUMP JUMPDEST DUP5 PUSH2 0x5CC DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1493 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x890 PUSH2 0xBCE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xEE9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52B PUSH2 0x8DB PUSH2 0xBCE JUMP JUMPDEST DUP5 DUP5 PUSH2 0xD19 JUMP JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x951 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332305065726D69743A206578706972656420646561646C696E65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH32 0x0 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH2 0x9A7 SWAP1 PUSH2 0x1064 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0xA2A DUP3 PUSH2 0x1068 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xA3A DUP3 DUP8 DUP8 DUP8 PUSH2 0x10CF JUMP JUMPDEST SWAP1 POP DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xAD6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332305065726D69743A20696E76616C6964207369676E61747572650000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xB04 SWAP1 PUSH2 0x12C6 JUMP JUMPDEST PUSH2 0xB0F DUP11 DUP11 DUP11 PUSH2 0xBD2 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xBC7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0xC3E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x146F PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xCAA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1396 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0xD85 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x144A PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xDF1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1348 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xDFC DUP4 DUP4 DUP4 PUSH2 0x12CF JUMP JUMPDEST PUSH2 0xE46 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x13B8 PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xEE9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xE82 SWAP1 DUP3 PUSH2 0xB53 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xF92 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF57 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF3F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF84 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH2 0xFC5 PUSH2 0x12D4 JUMP JUMPDEST EQ ISZERO PUSH2 0xFF2 JUMPI POP PUSH32 0x0 PUSH2 0x514 JUMP JUMPDEST PUSH2 0x105D PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x12D8 JUMP JUMPDEST SWAP1 POP PUSH2 0x514 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1072 PUSH2 0xF9A JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP3 GT ISZERO PUSH2 0x114A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13DE PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0xFF AND PUSH1 0x1B EQ DUP1 PUSH2 0x115F JUMPI POP DUP4 PUSH1 0xFF AND PUSH1 0x1C EQ JUMPDEST PUSH2 0x11B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1400 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1210 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x12BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 PUSH2 0x12E5 PUSH2 0x12D4 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 SLOAD PUSH6 0x737445524332 ADDRESS POP PUSH6 0x726D6974416C PUSH13 0x6F7765643A3A7065726D69743A KECCAK256 PUSH24 0x726F6E67206E6F6E636545524332303A20617070726F7665 KECCAK256 PUSH21 0x6F20746865207A65726F2061646472657373455243 ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x2062616C616E636545434453413A20696E76616C PUSH10 0x64207369676E61747572 PUSH6 0x202773272076 PUSH2 0x6C75 PUSH6 0x45434453413A KECCAK256 PUSH10 0x6E76616C696420736967 PUSH15 0x6174757265202776272076616C7565 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA164736F PUSH13 0x6343000706000A000000000000 ","sourceMap":"231:537:110:-:0;;;1006:95:24;961:140;;303:60:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;303:60:110;1333:57:24;;;;;;;;;;;;-1:-1:-1;;;303:60:110;1333:57:24;;;;;;2324:542:23;;;;;;;;;;-1:-1:-1;;;2324:542:23;;;;1950:138:30;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1950:138:30;;;;;;;2017:13;;303:60:110;;1333:57:24;;2324:542:23;;1950:138:30;;2017:13;;:5;;:13;:::i;:::-;-1:-1:-1;2040:17:30;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2067:9:30;:14;;-1:-1:-1;;2067:14:30;2079:2;2067:14;;;-1:-1:-1;2410:22:23;;;;;;;;;;2466:25;;;;;;;;;2625;;;;2660:31;;;;2520:95;2720:13;:11;:13::i;:::-;2701:32;;2770:58;2792:8;2802:10;2814:13;2770:21;:58::i;:::-;2743:85;;2838:21;;-1:-1:-1;260:31:108::2;::::0;-1:-1:-1;266:10:108::2;::::0;-1:-1:-1;278:12:108;;-1:-1:-1;;260:5:108::2;:31::i;:::-;162:136:::0;303:60:110;231:537;;4382:320:23;4677:9;;4652:44::o;3241:327::-;3343:7;3420:8;3446:4;3468:7;3493:13;:11;:13::i;:::-;3532:4;3392:159;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3392:159:23;;;;;;;;;;;;;;;;;;;;;;;;3369:192;;;;;;3362:199;;3241:327;;;;;:::o;7817:370:30:-;-1:-1:-1;;;;;7900:21:30;;7892:65;;;;;-1:-1:-1;;;7892:65:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;7968:49;7997:1;8001:7;8010:6;7968:20;:49::i;:::-;8043:24;8060:6;8043:12;;:16;;;;;;:24;;;;:::i;:::-;8028:12;:39;-1:-1:-1;;;;;8098:18:30;;:9;:18;;;;;;;;;;;;:30;;8121:6;;8098:22;;;;;:30;;:::i;:::-;-1:-1:-1;;;;;8077:18:30;;:9;:18;;;;;;;;;;;:51;;;;8143:37;;;;;;;8077:18;;:9;;8143:37;;;;;;;;;;7817:370;;:::o;10686:92::-;;;;:::o;2682:175:28:-;2740:7;2771:5;;;2794:6;;;;2786:46;;;;;-1:-1:-1;;;2786:46:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;2849:1;2682:175;-1:-1:-1;;;2682:175:28:o;231:537:110:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;231:537:110;;;-1:-1:-1;231:537:110;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{"2673":[{"length":32,"start":4046}],"2675":[{"length":32,"start":3998}],"2677":[{"length":32,"start":4120}],"2679":[{"length":32,"start":4153}],"2681":[{"length":32,"start":4087}],"2843":[{"length":32,"start":2424}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d714610357578063a9059cbb14610390578063d505accf146103c9578063dd62ed3e14610427576100f5565b806370a08231146102805780637ecebe00146102b35780638fcbaf0c146102e657806395d89b411461034f576100f5565b806323b872dd116100d357806323b872dd146101de578063313ce567146102215780633644e5151461023f5780633950935114610247576100f5565b806306fdde03146100fa578063095ea7b31461017757806318160ddd146101c4575b600080fd5b610102610462565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561013c578181015183820152602001610124565b50505050905090810190601f1680156101695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b06004803603604081101561018d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610517565b604080519115158252519081900360200190f35b6101cc610534565b60408051918252519081900360200190f35b6101b0600480360360608110156101f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561053a565b6102296105db565b6040805160ff9092168252519081900360200190f35b6101cc6105e4565b6101b06004803603604081101561025d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105f3565b6101cc6004803603602081101561029657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661064e565b6101cc600480360360208110156102c957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610676565b61034d60048036036101008110156102fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604081013590606081013590608081013515159060ff60a0820135169060c08101359060e001356106aa565b005b6101026107da565b6101b06004803603604081101561036d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610859565b6101b0600480360360408110156103a657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108ce565b61034d600480360360e08110156103df57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356108e2565b6101cc6004803603604081101561043d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610b1b565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561050c5780601f106104e15761010080835404028352916020019161050c565b820191906000526020600020905b8154815290600101906020018083116104ef57829003601f168201915b505050505090505b90565b600061052b610524610bce565b8484610bd2565b50600192915050565b60025490565b6000610547848484610d19565b6105d184610553610bce565b6105cc856040518060600160405280602881526020016114226028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602052604081209061059e610bce565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610ee9565b610bd2565b5060019392505050565b60055460ff1690565b60006105ee610f9a565b905090565b600061052b610600610bce565b846105cc8560016000610611610bce565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610b53565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b73ffffffffffffffffffffffffffffffffffffffff811660009081526006602052604081206106a490611064565b92915050565b853073ffffffffffffffffffffffffffffffffffffffff16637ecebe008a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561071257600080fd5b505afa158015610726573d6000803e3d6000fd5b505050506040513d602081101561073c57600080fd5b505114610794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061136b602b913960400191505060405180910390fd5b6107d08888866107a55760006107c7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b888787876108e2565b5050505050505050565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561050c5780601f106104e15761010080835404028352916020019161050c565b600061052b610866610bce565b846105cc856040518060600160405280602581526020016114936025913960016000610890610bce565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610ee9565b600061052b6108db610bce565b8484610d19565b8342111561095157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff871660009081526006602052604081207f0000000000000000000000000000000000000000000000000000000000000000908990899089906109a790611064565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012090506000610a2a82611068565b90506000610a3a828787876110cf565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ad657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8a166000908152600660205260409020610b04906112c6565b610b0f8a8a8a610bd2565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b600082820183811015610bc757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610c3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061146f6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610caa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806113966022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061144a6025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610df1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806113486023913960400191505060405180910390fd5b610dfc8383836112cf565b610e46816040518060600160405280602681526020016113b86026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610ee9565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610e829082610b53565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610f92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f57578181015183820152602001610f3f565b50505050905090810190601f168015610f845780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60007f0000000000000000000000000000000000000000000000000000000000000000610fc56112d4565b1415610ff257507f0000000000000000000000000000000000000000000000000000000000000000610514565b61105d7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006112d8565b9050610514565b5490565b6000611072610f9a565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a082111561114a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806113de6022913960400191505060405180910390fd5b8360ff16601b148061115f57508360ff16601c145b6111b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806114006022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611210573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166112bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b95945050505050565b80546001019055565b505050565b4690565b60008383836112e56112d4565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001209050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573735465737445524332305065726d6974416c6c6f7765643a3a7065726d69743a2077726f6e67206e6f6e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c756545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x357 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x3C9 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x427 JUMPI PUSH2 0xF5 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x2B3 JUMPI DUP1 PUSH4 0x8FCBAF0C EQ PUSH2 0x2E6 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x34F JUMPI PUSH2 0xF5 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x221 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x247 JUMPI PUSH2 0xF5 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xFA JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1C4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0x462 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x169 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x517 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1CC PUSH2 0x534 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x53A JUMP JUMPDEST PUSH2 0x229 PUSH2 0x5DB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1CC PUSH2 0x5E4 JUMP JUMPDEST PUSH2 0x1B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5F3 JUMP JUMPDEST PUSH2 0x1CC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x64E JUMP JUMPDEST PUSH2 0x1CC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x676 JUMP JUMPDEST PUSH2 0x34D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x2FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xA0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x6AA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x102 PUSH2 0x7DA JUMP JUMPDEST PUSH2 0x1B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x36D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x859 JUMP JUMPDEST PUSH2 0x1B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8CE JUMP JUMPDEST PUSH2 0x34D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x3DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x8E2 JUMP JUMPDEST PUSH2 0x1CC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xB1B JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x50C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4E1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x50C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4EF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52B PUSH2 0x524 PUSH2 0xBCE JUMP JUMPDEST DUP5 DUP5 PUSH2 0xBD2 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x547 DUP5 DUP5 DUP5 PUSH2 0xD19 JUMP JUMPDEST PUSH2 0x5D1 DUP5 PUSH2 0x553 PUSH2 0xBCE JUMP JUMPDEST PUSH2 0x5CC DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1422 PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x59E PUSH2 0xBCE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xEE9 JUMP JUMPDEST PUSH2 0xBD2 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5EE PUSH2 0xF9A JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52B PUSH2 0x600 PUSH2 0xBCE JUMP JUMPDEST DUP5 PUSH2 0x5CC DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x611 PUSH2 0xBCE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0xB53 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x6A4 SWAP1 PUSH2 0x1064 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP6 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x7ECEBE00 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x712 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x726 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x73C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x794 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x136B PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7D0 DUP9 DUP9 DUP7 PUSH2 0x7A5 JUMPI PUSH1 0x0 PUSH2 0x7C7 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF JUMPDEST DUP9 DUP8 DUP8 DUP8 PUSH2 0x8E2 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x50C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4E1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x50C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52B PUSH2 0x866 PUSH2 0xBCE JUMP JUMPDEST DUP5 PUSH2 0x5CC DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1493 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x890 PUSH2 0xBCE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xEE9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52B PUSH2 0x8DB PUSH2 0xBCE JUMP JUMPDEST DUP5 DUP5 PUSH2 0xD19 JUMP JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x951 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332305065726D69743A206578706972656420646561646C696E65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH32 0x0 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH2 0x9A7 SWAP1 PUSH2 0x1064 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0xA2A DUP3 PUSH2 0x1068 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xA3A DUP3 DUP8 DUP8 DUP8 PUSH2 0x10CF JUMP JUMPDEST SWAP1 POP DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xAD6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332305065726D69743A20696E76616C6964207369676E61747572650000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xB04 SWAP1 PUSH2 0x12C6 JUMP JUMPDEST PUSH2 0xB0F DUP11 DUP11 DUP11 PUSH2 0xBD2 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xBC7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0xC3E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x146F PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xCAA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1396 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0xD85 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x144A PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xDF1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1348 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xDFC DUP4 DUP4 DUP4 PUSH2 0x12CF JUMP JUMPDEST PUSH2 0xE46 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x13B8 PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xEE9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xE82 SWAP1 DUP3 PUSH2 0xB53 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xF92 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF57 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF3F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF84 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH2 0xFC5 PUSH2 0x12D4 JUMP JUMPDEST EQ ISZERO PUSH2 0xFF2 JUMPI POP PUSH32 0x0 PUSH2 0x514 JUMP JUMPDEST PUSH2 0x105D PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x12D8 JUMP JUMPDEST SWAP1 POP PUSH2 0x514 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1072 PUSH2 0xF9A JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP3 GT ISZERO PUSH2 0x114A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13DE PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0xFF AND PUSH1 0x1B EQ DUP1 PUSH2 0x115F JUMPI POP DUP4 PUSH1 0xFF AND PUSH1 0x1C EQ JUMPDEST PUSH2 0x11B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1400 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1210 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x12BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 PUSH2 0x12E5 PUSH2 0x12D4 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 SLOAD PUSH6 0x737445524332 ADDRESS POP PUSH6 0x726D6974416C PUSH13 0x6F7765643A3A7065726D69743A KECCAK256 PUSH24 0x726F6E67206E6F6E636545524332303A20617070726F7665 KECCAK256 PUSH21 0x6F20746865207A65726F2061646472657373455243 ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x2062616C616E636545434453413A20696E76616C PUSH10 0x64207369676E61747572 PUSH6 0x202773272076 PUSH2 0x6C75 PUSH6 0x45434453413A KECCAK256 PUSH10 0x6E76616C696420736967 PUSH15 0x6174757265202776272076616C7565 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA164736F PUSH13 0x6343000706000A000000000000 ","sourceMap":"231:537:110:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2153:89:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4229:166;;;;;;;;;;;;;;;;-1:-1:-1;4229:166:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3220:106;;;:::i;:::-;;;;;;;;;;;;;;;;4862:317;;;;;;;;;;;;;;;;-1:-1:-1;4862:317:30;;;;;;;;;;;;;;;;;;:::i;3071:89::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2548:113:24;;;:::i;5574:215:30:-;;;;;;;;;;;;;;;;-1:-1:-1;5574:215:30;;;;;;;;;:::i;3384:125::-;;;;;;;;;;;;;;;;-1:-1:-1;3384:125:30;;;;:::i;2306:118:24:-;;;;;;;;;;;;;;;;-1:-1:-1;2306:118:24;;;;:::i;369:397:110:-;;;;;;;;;;;;;;;;-1:-1:-1;369:397:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2355:93:30;;;:::i;6276:266::-;;;;;;;;;;;;;;;;-1:-1:-1;6276:266:30;;;;;;;;;:::i;3712:172::-;;;;;;;;;;;;;;;;-1:-1:-1;3712:172:30;;;;;;;;;:::i;1451:794:24:-;;;;;;;;;;;;;;;;-1:-1:-1;1451:794:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3942:149:30:-;;;;;;;;;;;;;;;;-1:-1:-1;3942:149:30;;;;;;;;;;;:::i;2153:89::-;2230:5;2223:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2198:13;;2223:12;;2230:5;;2223:12;;2230:5;2223:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2153:89;;:::o;4229:166::-;4312:4;4328:39;4337:12;:10;:12::i;:::-;4351:7;4360:6;4328:8;:39::i;:::-;-1:-1:-1;4384:4:30;4229:166;;;;:::o;3220:106::-;3307:12;;3220:106;:::o;4862:317::-;4968:4;4984:36;4994:6;5002:9;5013:6;4984:9;:36::i;:::-;5030:121;5039:6;5047:12;:10;:12::i;:::-;5061:89;5099:6;5061:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;5081:12;:10;:12::i;:::-;5061:33;;;;;;;;;;;;;-1:-1:-1;5061:33:30;;;:89;:37;:89::i;:::-;5030:8;:121::i;:::-;-1:-1:-1;5168:4:30;4862:317;;;;;:::o;3071:89::-;3144:9;;;;3071:89;:::o;2548:113:24:-;2608:7;2634:20;:18;:20::i;:::-;2627:27;;2548:113;:::o;5574:215:30:-;5662:4;5678:83;5687:12;:10;:12::i;:::-;5701:7;5710:50;5749:10;5710:11;:25;5722:12;:10;:12::i;:::-;5710:25;;;;;;;;;;;;;;;;;;-1:-1:-1;5710:25:30;;;:34;;;;;;;;;;;:38;:50::i;3384:125::-;3484:18;;3458:7;3484:18;;;;;;;;;;;;3384:125::o;2306:118:24:-;2393:14;;;2367:7;2393:14;;;:7;:14;;;;;:24;;:22;:24::i;:::-;2386:31;2306:118;-1:-1:-1;;2306:118:24:o;369:397:110:-;623:5;600:4;:11;;;612:6;600:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;600:19:110;:28;592:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;686:73;693:6;701:7;710;:31;;740:1;710:31;;;720:17;710:31;743:6;751:1;754;757;686:6;:73::i;:::-;369:397;;;;;;;;:::o;2355:93:30:-;2434:7;2427:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2402:13;;2427:14;;2434:7;;2427:14;;2434:7;2427:14;;;;;;;;;;;;;;;;;;;;;;;;6276:266;6369:4;6385:129;6394:12;:10;:12::i;:::-;6408:7;6417:96;6456:15;6417:96;;;;;;;;;;;;;;;;;:11;:25;6429:12;:10;:12::i;:::-;6417:25;;;;;;;;;;;;;;;;;;-1:-1:-1;6417:25:30;;;:34;;;;;;;;;;;:96;:38;:96::i;3712:172::-;3798:4;3814:42;3824:12;:10;:12::i;:::-;3838:9;3849:6;3814:9;:42::i;1451:794:24:-;1678:8;1659:15;:27;;1651:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1908:14;;;1731:18;1908:14;;;:7;:14;;;;;1803:16;;1837:5;;1860:7;;1885:5;;1908:24;;:22;:24::i;:::-;1950:8;1775:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1752:230;;;;;;1731:251;;1993:12;2008:28;2025:10;2008:16;:28::i;:::-;1993:43;;2047:14;2064:28;2078:4;2084:1;2087;2090;2064:13;:28::i;:::-;2047:45;;2120:5;2110:15;;:6;:15;;;2102:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2171:14;;;;;;;:7;:14;;;;;:26;;:24;:26::i;:::-;2207:31;2216:5;2223:7;2232:5;2207:8;:31::i;:::-;1451:794;;;;;;;;;;:::o;3942:149:30:-;4057:18;;;;4031:7;4057:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3942:149::o;2682:175:28:-;2740:7;2771:5;;;2794:6;;;;2786:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2849:1;2682:175;-1:-1:-1;;;2682:175:28:o;598:104:38:-;685:10;598:104;:::o;9340:340:30:-;9441:19;;;9433:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9519:21;;;9511:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9590:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9641:32;;;;;;;;;;;;;;;;;9340:340;;;:::o;7016:530::-;7121:20;;;7113:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7201:23;;;7193:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7275:47;7296:6;7304:9;7315:6;7275:20;:47::i;:::-;7353:71;7375:6;7353:71;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;7333:17;;;;:9;:17;;;;;;;;;;;:91;;;;7457:20;;;;;;;:32;;7482:6;7457:24;:32::i;:::-;7434:20;;;;:9;:20;;;;;;;;;;;;:55;;;;7504:35;;;;;;;7434:20;;7504:35;;;;;;;;;;;;;7016:530;;;:::o;5424:163:28:-;5510:7;5545:12;5537:6;;;;5529:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5575:5:28;;;5424:163::o;2952:283:23:-;3013:7;3053:16;3036:13;:11;:13::i;:::-;:33;3032:197;;;-1:-1:-1;3092:24:23;3085:31;;3032:197;3154:64;3176:10;3188:12;3202:15;3154:21;:64::i;:::-;3147:71;;;;1098:112:39;1189:14;;1098:112::o;4193:183:23:-;4270:7;4335:20;:18;:20::i;:::-;4357:10;4306:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4296:73;;;;;;4289:80;;4193:183;;;:::o;1952:1414:22:-;2037:7;2952:66;2938:80;;;2930:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3075:1;:7;;3080:2;3075:7;:18;;;;3086:1;:7;;3091:2;3086:7;3075:18;3067:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3227:14;3244:24;3254:4;3260:1;3263;3266;3244:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3244:24:22;;;;;;-1:-1:-1;;3286:20:22;;;3278:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3353:6;1952:1414;-1:-1:-1;;;;;1952:1414:22:o;1216:178:39:-;1368:19;;1386:1;1368:19;;;1216:178::o;10686:92:30:-;;;;:::o;4382:320:23:-;4677:9;;4652:44::o;3241:327::-;3343:7;3420:8;3446:4;3468:7;3493:13;:11;:13::i;:::-;3532:4;3392:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3369:192;;;;;;3362:199;;3241:327;;;;;:::o"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)":"8fcbaf0c","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToMint\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)\":{\"details\":\"This is the permit interface used by DAI and CHAI\",\"params\":{\"allowed\":\"Boolean that sets approval amount, true for type(uint256).max and false for 0\",\"expiry\":\"The timestamp at which the permit is no longer valid\",\"holder\":\"The address of the token holder, the token owner\",\"nonce\":\"The holder's nonce, increases at each call to permit\",\"r\":\"Must produce valid secp256k1 signature from the holder along with `v` and `s`\",\"s\":\"Must produce valid secp256k1 signature from the holder along with `r` and `v`\",\"spender\":\"The address of the token spender\",\"v\":\"Must produce valid secp256k1 signature from the holder along with `r` and `s`\"}},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)\":{\"notice\":\"Approve the spender to spend some tokens via the holder signature\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TestERC20PermitAllowed.sol\":\"TestERC20PermitAllowed\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/cryptography/ECDSA.sol\":{\"keccak256\":\"0xc80ce3fcc5e444a2c5bdb902fe4d4f4ecba04e9b416425697d00ae95c1955f82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a84a791d3dfe88a0dcc5b3b825e8375d0ed60c96067b5beb9e2f7dabb0afb0e6\",\"dweb:/ipfs/QmPWUkNDWJkNgEZp1WuAMKkd2XvkuZBcx8HTTTauaj837Y\"]},\"@openzeppelin/contracts/drafts/EIP712.sol\":{\"keccak256\":\"0xe4bc5cda2bfee483ff10334881c9ea5cc4df7faa7b18a5a4b8f02fc51cf8adca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0f0314cb3b722c5d221eeef6f5c050d4fd339bf7f2bf41c9304a62ff95bf33a\",\"dweb:/ipfs/QmVSBgT22SEY2mAkd8qNjsqTq8tciugToxbRzwPSSADPuJ\"]},\"@openzeppelin/contracts/drafts/ERC20Permit.sol\":{\"keccak256\":\"0x680c4b732f003b048d6a3cf227398d2f7f620eca779ab379662430adb6b19dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb8490d82756117d1ace222668f78756a1982deef7f4483d070fc37a1aeeb85c\",\"dweb:/ipfs/QmWv8kZ4y2joQ8iSe7Xc6ceULqns8TemtvW2j2KRsdryzD\"]},\"@openzeppelin/contracts/drafts/IERC20Permit.sol\":{\"keccak256\":\"0x1aab7754719ba764a8a05bec47e975001400f62986474945eb3dbee6d871259f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c14e8ff1b384bdb68f262669364b1e79fbbd82b85938b7ce788a1395c40c6a2\",\"dweb:/ipfs/QmUKLXfSeEuRUXkeWLBhjHTKeSFoNBCS1RaMXv1AmHXYzn\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xe22a1fc7400ae196eba2ad1562d0386462b00a6363b742d55a2fd2021a58586f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a635cec58fb4141a16cfd408f1a21ac944c335a3beaba541c35d2e95c04536f\",\"dweb:/ipfs/QmXWcz73UenN1ji8jiWMbzxHjjfLbNQwLVKTEB5zNFE34K\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x36b5ca4eabe888b39b10973621ca0dcc9b1508f8d06db9ddf045d7aa7c867d4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccbd79e8d556aa7011babb0e5d1e55a966add74853e7ba0274ff184bd96ef002\",\"dweb:/ipfs/QmV28ozNRUFDiDUMvCwcFmLTQPG6nfvgeKr4cmbHWoegtH\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0x2424442932373c51391b31409f9620d1e1396c37f41ab9d82c51d69bebdd1ab5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dcdf37ee59c10644338fbdfb3b7692125ff42003b34990eff8b04beedd89846f\",\"dweb:/ipfs/QmTMAvXQ4DoZbUSS3oBkNr2SddRPCTrE7DZNXrFArHnk8x\"]},\"contracts/interfaces/external/IERC20PermitAllowed.sol\":{\"keccak256\":\"0x8c4c1b8e724e0a78cb691d703dd37cd91b8bd6600537fb227807a194025a792d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://783be851155842a02cdb0483c3a69ecc0e7ae8545f65cec1d4aeb355b2026a7d\",\"dweb:/ipfs/QmZNBQosTjpGNKB3Eo2K6Zzye7FYiLVoEki5iPB2Y69jz2\"]},\"contracts/test/TestERC20.sol\":{\"keccak256\":\"0x949018b853ff82728babf2bcfdc2c218081c5a826eb1bb3a2caac94b9b78b822\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7018299440a66d9048d94b80e867f255f531911254e086a4eff4a8aa7c1c530e\",\"dweb:/ipfs/QmbWUgTqbj7VdJZwFvreocWQnPJmrfD91wKsyKGDFrrdTM\"]},\"contracts/test/TestERC20PermitAllowed.sol\":{\"keccak256\":\"0x88e806f716fd7b6bce7394838dded60227265af1c7d33d44ef7d8efd51700133\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4ba6b5838f4213d2cb5dbc708850489ee65e9e003dd970ca5b2bd91279cc0610\",\"dweb:/ipfs/QmdrkXEneQ2vZEXyzuLiAka9TQBcKTgHD6YRNRGSs7QVhW\"]}},\"version\":1}"}},"contracts/test/TestMulticall.sol":{"TestMulticall":{"abi":[{"inputs":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"name":"functionThatReturnsTuple","outputs":[{"components":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"internalType":"struct TestMulticall.Tuple","name":"tuple","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"error","type":"string"}],"name":"functionThatRevertsWithError","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"paid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pays","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"returnSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506106ce806100206000396000f3fe6080604052600436106100655760003560e01c80635170a9d0116100435780635170a9d0146100e4578063ac9650d814610106578063f3e222971461012657610065565b8063295b4e171461006a57806334621235146100955780633b16a6a3146100b7575b600080fd5b34801561007657600080fd5b5061007f61012e565b60405161008c91906105ba565b60405180910390f35b3480156100a157600080fd5b506100b56100b0366004610383565b610134565b005b3480156100c357600080fd5b506100d76100d236600461046f565b610171565b60405161008c91906105a3565b3480156100f057600080fd5b506100f9610192565b60405161008c91906104ea565b610119610114366004610314565b610196565b60405161008c919061050b565b6100b56102f0565b60005481565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101689190610589565b60405180910390fd5b6101796102fa565b5060408051808201909152908152602081019190915290565b3390565b60608167ffffffffffffffff811180156101af57600080fd5b506040519080825280602002602001820160405280156101e357816020015b60608152602001906001900390816101ce5790505b50905060005b828110156102e9576000803086868581811061020157fe5b905060200281019061021391906105c3565b6040516102219291906104da565b600060405180830381855af49150503d806000811461025c576040519150601f19603f3d011682016040523d82523d6000602084013e610261565b606091505b5091509150816102c75760448151101561027a57600080fd5b6004810190508080602001905181019061029491906103fc565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101689190610589565b808484815181106102d457fe5b602090810291909101015250506001016101e9565b5092915050565b6000805434019055565b604051806040016040528060008152602001600081525090565b60008060208385031215610326578182fd5b823567ffffffffffffffff8082111561033d578384fd5b818501915085601f830112610350578384fd5b81358181111561035e578485fd5b8660208083028501011115610371578485fd5b60209290920196919550909350505050565b600060208284031215610394578081fd5b813567ffffffffffffffff8111156103aa578182fd5b8201601f810184136103ba578182fd5b80356103cd6103c882610651565b61062d565b8181528560208385010111156103e1578384fd5b81602084016020830137908101602001929092525092915050565b60006020828403121561040d578081fd5b815167ffffffffffffffff811115610423578182fd5b8201601f81018413610433578182fd5b80516104416103c882610651565b818152856020838501011115610455578384fd5b610466826020830160208601610691565b95945050505050565b60008060408385031215610481578182fd5b50508035926020909101359150565b600081518084526104a8816020860160208601610691565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000828483379101908152919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b8281101561057c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261056a858351610490565b94509285019290850190600101610530565b5092979650505050505050565b60006020825261059c6020830184610490565b9392505050565b815181526020918201519181019190915260400190565b90815260200190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126105f7578283fd5b83018035915067ffffffffffffffff821115610611578283fd5b60200191503681900382131561062657600080fd5b9250929050565b60405181810167ffffffffffffffff8111828210171561064957fe5b604052919050565b600067ffffffffffffffff82111561066557fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b838110156106ac578181015183820152602001610694565b838111156106bb576000848401525b5050505056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6CE DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x65 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5170A9D0 GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x5170A9D0 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x106 JUMPI DUP1 PUSH4 0xF3E22297 EQ PUSH2 0x126 JUMPI PUSH2 0x65 JUMP JUMPDEST DUP1 PUSH4 0x295B4E17 EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x34621235 EQ PUSH2 0x95 JUMPI DUP1 PUSH4 0x3B16A6A3 EQ PUSH2 0xB7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7F PUSH2 0x12E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x5BA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB5 PUSH2 0xB0 CALLDATASIZE PUSH1 0x4 PUSH2 0x383 JUMP JUMPDEST PUSH2 0x134 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD7 PUSH2 0xD2 CALLDATASIZE PUSH1 0x4 PUSH2 0x46F JUMP JUMPDEST PUSH2 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x5A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF9 PUSH2 0x192 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x4EA JUMP JUMPDEST PUSH2 0x119 PUSH2 0x114 CALLDATASIZE PUSH1 0x4 PUSH2 0x314 JUMP JUMPDEST PUSH2 0x196 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x50B JUMP JUMPDEST PUSH2 0xB5 PUSH2 0x2F0 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x168 SWAP2 SWAP1 PUSH2 0x589 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x179 PUSH2 0x2FA JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1E3 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1CE JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2E9 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x201 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x213 SWAP2 SWAP1 PUSH2 0x5C3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP3 SWAP2 SWAP1 PUSH2 0x4DA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x25C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x261 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2C7 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x294 SWAP2 SWAP1 PUSH2 0x3FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x168 SWAP2 SWAP1 PUSH2 0x589 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2D4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x1E9 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD CALLVALUE ADD SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x326 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x33D JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x350 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x35E JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x371 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x394 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3AA JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x3BA JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3CD PUSH2 0x3C8 DUP3 PUSH2 0x651 JUMP JUMPDEST PUSH2 0x62D JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x3E1 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x423 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x433 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x441 PUSH2 0x3C8 DUP3 PUSH2 0x651 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x455 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x466 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x691 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x481 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x4A8 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x691 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x57C JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x56A DUP6 DUP4 MLOAD PUSH2 0x490 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x530 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x59C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x490 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 ADD MLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x5F7 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x611 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x626 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x649 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x665 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6AC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x694 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x6BB JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"117:555:111:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6125:115","statements":[{"nodeType":"YulBlock","src":"6:3:115","statements":[]},{"body":{"nodeType":"YulBlock","src":"130:561:115","statements":[{"body":{"nodeType":"YulBlock","src":"176:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"185:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"193:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"178:6:115"},"nodeType":"YulFunctionCall","src":"178:22:115"},"nodeType":"YulExpressionStatement","src":"178:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"151:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"160:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"147:3:115"},"nodeType":"YulFunctionCall","src":"147:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"172:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"143:3:115"},"nodeType":"YulFunctionCall","src":"143:32:115"},"nodeType":"YulIf","src":"140:2:115"},{"nodeType":"YulVariableDeclaration","src":"211:37:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"238:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"225:12:115"},"nodeType":"YulFunctionCall","src":"225:23:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"215:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"257:28:115","value":{"kind":"number","nodeType":"YulLiteral","src":"267:18:115","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"261:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"312:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"321:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"329:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"314:6:115"},"nodeType":"YulFunctionCall","src":"314:22:115"},"nodeType":"YulExpressionStatement","src":"314:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"308:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"297:2:115"},"nodeType":"YulFunctionCall","src":"297:14:115"},"nodeType":"YulIf","src":"294:2:115"},{"nodeType":"YulVariableDeclaration","src":"347:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"361:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"372:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"357:3:115"},"nodeType":"YulFunctionCall","src":"357:22:115"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"351:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"427:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"436:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"444:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"429:6:115"},"nodeType":"YulFunctionCall","src":"429:22:115"},"nodeType":"YulExpressionStatement","src":"429:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"406:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"410:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"402:3:115"},"nodeType":"YulFunctionCall","src":"402:13:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"417:7:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"398:3:115"},"nodeType":"YulFunctionCall","src":"398:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"391:6:115"},"nodeType":"YulFunctionCall","src":"391:35:115"},"nodeType":"YulIf","src":"388:2:115"},{"nodeType":"YulVariableDeclaration","src":"462:30:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"489:2:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"476:12:115"},"nodeType":"YulFunctionCall","src":"476:16:115"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"466:6:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"519:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"528:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"536:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"521:6:115"},"nodeType":"YulFunctionCall","src":"521:22:115"},"nodeType":"YulExpressionStatement","src":"521:22:115"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"507:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"515:2:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"504:2:115"},"nodeType":"YulFunctionCall","src":"504:14:115"},"nodeType":"YulIf","src":"501:2:115"},{"body":{"nodeType":"YulBlock","src":"604:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"613:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"621:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"606:6:115"},"nodeType":"YulFunctionCall","src":"606:22:115"},"nodeType":"YulExpressionStatement","src":"606:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"568:2:115"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"576:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"584:2:115","type":"","value":"32"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"572:3:115"},"nodeType":"YulFunctionCall","src":"572:15:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"564:3:115"},"nodeType":"YulFunctionCall","src":"564:24:115"},{"kind":"number","nodeType":"YulLiteral","src":"590:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"560:3:115"},"nodeType":"YulFunctionCall","src":"560:33:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"595:7:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"557:2:115"},"nodeType":"YulFunctionCall","src":"557:46:115"},"nodeType":"YulIf","src":"554:2:115"},{"nodeType":"YulAssignment","src":"639:21:115","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"653:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"657:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"649:3:115"},"nodeType":"YulFunctionCall","src":"649:11:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"639:6:115"}]},{"nodeType":"YulAssignment","src":"669:16:115","value":{"name":"length","nodeType":"YulIdentifier","src":"679:6:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"669:6:115"}]}]},"name":"abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"88:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"99:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"111:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"119:6:115","type":""}],"src":"14:677:115"},{"body":{"nodeType":"YulBlock","src":"776:639:115","statements":[{"body":{"nodeType":"YulBlock","src":"822:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"831:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"839:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"824:6:115"},"nodeType":"YulFunctionCall","src":"824:22:115"},"nodeType":"YulExpressionStatement","src":"824:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"797:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"806:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"793:3:115"},"nodeType":"YulFunctionCall","src":"793:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"818:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"789:3:115"},"nodeType":"YulFunctionCall","src":"789:32:115"},"nodeType":"YulIf","src":"786:2:115"},{"nodeType":"YulVariableDeclaration","src":"857:37:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"884:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"871:12:115"},"nodeType":"YulFunctionCall","src":"871:23:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"861:6:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"937:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"946:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"954:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"939:6:115"},"nodeType":"YulFunctionCall","src":"939:22:115"},"nodeType":"YulExpressionStatement","src":"939:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"909:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"917:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"906:2:115"},"nodeType":"YulFunctionCall","src":"906:30:115"},"nodeType":"YulIf","src":"903:2:115"},{"nodeType":"YulVariableDeclaration","src":"972:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"986:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"997:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"982:3:115"},"nodeType":"YulFunctionCall","src":"982:22:115"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"976:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"1052:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1061:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"1069:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1054:6:115"},"nodeType":"YulFunctionCall","src":"1054:22:115"},"nodeType":"YulExpressionStatement","src":"1054:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1031:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"1035:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1027:3:115"},"nodeType":"YulFunctionCall","src":"1027:13:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1042:7:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1023:3:115"},"nodeType":"YulFunctionCall","src":"1023:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1016:6:115"},"nodeType":"YulFunctionCall","src":"1016:35:115"},"nodeType":"YulIf","src":"1013:2:115"},{"nodeType":"YulVariableDeclaration","src":"1087:26:115","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1110:2:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1097:12:115"},"nodeType":"YulFunctionCall","src":"1097:16:115"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"1091:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1122:63:115","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1181:2:115"}],"functionName":{"name":"array_allocation_size_t_string","nodeType":"YulIdentifier","src":"1150:30:115"},"nodeType":"YulFunctionCall","src":"1150:34:115"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"1135:14:115"},"nodeType":"YulFunctionCall","src":"1135:50:115"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"1126:5:115","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"1201:5:115"},{"name":"_2","nodeType":"YulIdentifier","src":"1208:2:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1194:6:115"},"nodeType":"YulFunctionCall","src":"1194:17:115"},"nodeType":"YulExpressionStatement","src":"1194:17:115"},{"body":{"nodeType":"YulBlock","src":"1257:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1266:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"1274:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1259:6:115"},"nodeType":"YulFunctionCall","src":"1259:22:115"},"nodeType":"YulExpressionStatement","src":"1259:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1234:2:115"},{"name":"_2","nodeType":"YulIdentifier","src":"1238:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1230:3:115"},"nodeType":"YulFunctionCall","src":"1230:11:115"},{"kind":"number","nodeType":"YulLiteral","src":"1243:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1226:3:115"},"nodeType":"YulFunctionCall","src":"1226:20:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1248:7:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1223:2:115"},"nodeType":"YulFunctionCall","src":"1223:33:115"},"nodeType":"YulIf","src":"1220:2:115"},{"expression":{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"1309:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"1316:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1305:3:115"},"nodeType":"YulFunctionCall","src":"1305:14:115"},{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1325:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"1329:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1321:3:115"},"nodeType":"YulFunctionCall","src":"1321:11:115"},{"name":"_2","nodeType":"YulIdentifier","src":"1334:2:115"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"1292:12:115"},"nodeType":"YulFunctionCall","src":"1292:45:115"},"nodeType":"YulExpressionStatement","src":"1292:45:115"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"1361:5:115"},{"name":"_2","nodeType":"YulIdentifier","src":"1368:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1357:3:115"},"nodeType":"YulFunctionCall","src":"1357:14:115"},{"kind":"number","nodeType":"YulLiteral","src":"1373:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1353:3:115"},"nodeType":"YulFunctionCall","src":"1353:23:115"},{"name":"value0","nodeType":"YulIdentifier","src":"1378:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1346:6:115"},"nodeType":"YulFunctionCall","src":"1346:39:115"},"nodeType":"YulExpressionStatement","src":"1346:39:115"},{"nodeType":"YulAssignment","src":"1394:15:115","value":{"name":"array","nodeType":"YulIdentifier","src":"1404:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1394:6:115"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"742:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"753:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"765:6:115","type":""}],"src":"696:719:115"},{"body":{"nodeType":"YulBlock","src":"1511:586:115","statements":[{"body":{"nodeType":"YulBlock","src":"1557:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1566:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"1574:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1559:6:115"},"nodeType":"YulFunctionCall","src":"1559:22:115"},"nodeType":"YulExpressionStatement","src":"1559:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1532:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"1541:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1528:3:115"},"nodeType":"YulFunctionCall","src":"1528:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"1553:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1524:3:115"},"nodeType":"YulFunctionCall","src":"1524:32:115"},"nodeType":"YulIf","src":"1521:2:115"},{"nodeType":"YulVariableDeclaration","src":"1592:30:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1612:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1606:5:115"},"nodeType":"YulFunctionCall","src":"1606:16:115"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1596:6:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"1665:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1674:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"1682:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1667:6:115"},"nodeType":"YulFunctionCall","src":"1667:22:115"},"nodeType":"YulExpressionStatement","src":"1667:22:115"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1637:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"1645:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1634:2:115"},"nodeType":"YulFunctionCall","src":"1634:30:115"},"nodeType":"YulIf","src":"1631:2:115"},{"nodeType":"YulVariableDeclaration","src":"1700:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1714:9:115"},{"name":"offset","nodeType":"YulIdentifier","src":"1725:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1710:3:115"},"nodeType":"YulFunctionCall","src":"1710:22:115"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1704:2:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"1780:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1789:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"1797:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1782:6:115"},"nodeType":"YulFunctionCall","src":"1782:22:115"},"nodeType":"YulExpressionStatement","src":"1782:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1759:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"1763:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1755:3:115"},"nodeType":"YulFunctionCall","src":"1755:13:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1770:7:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1751:3:115"},"nodeType":"YulFunctionCall","src":"1751:27:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1744:6:115"},"nodeType":"YulFunctionCall","src":"1744:35:115"},"nodeType":"YulIf","src":"1741:2:115"},{"nodeType":"YulVariableDeclaration","src":"1815:19:115","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1831:2:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1825:5:115"},"nodeType":"YulFunctionCall","src":"1825:9:115"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"1819:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1843:63:115","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1902:2:115"}],"functionName":{"name":"array_allocation_size_t_string","nodeType":"YulIdentifier","src":"1871:30:115"},"nodeType":"YulFunctionCall","src":"1871:34:115"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"1856:14:115"},"nodeType":"YulFunctionCall","src":"1856:50:115"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"1847:5:115","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"1922:5:115"},{"name":"_2","nodeType":"YulIdentifier","src":"1929:2:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1915:6:115"},"nodeType":"YulFunctionCall","src":"1915:17:115"},"nodeType":"YulExpressionStatement","src":"1915:17:115"},{"body":{"nodeType":"YulBlock","src":"1978:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1987:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"1995:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1980:6:115"},"nodeType":"YulFunctionCall","src":"1980:22:115"},"nodeType":"YulExpressionStatement","src":"1980:22:115"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1955:2:115"},{"name":"_2","nodeType":"YulIdentifier","src":"1959:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1951:3:115"},"nodeType":"YulFunctionCall","src":"1951:11:115"},{"kind":"number","nodeType":"YulLiteral","src":"1964:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1947:3:115"},"nodeType":"YulFunctionCall","src":"1947:20:115"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1969:7:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1944:2:115"},"nodeType":"YulFunctionCall","src":"1944:33:115"},"nodeType":"YulIf","src":"1941:2:115"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2039:2:115"},{"kind":"number","nodeType":"YulLiteral","src":"2043:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2035:3:115"},"nodeType":"YulFunctionCall","src":"2035:11:115"},{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2052:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"2059:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2048:3:115"},"nodeType":"YulFunctionCall","src":"2048:14:115"},{"name":"_2","nodeType":"YulIdentifier","src":"2064:2:115"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2013:21:115"},"nodeType":"YulFunctionCall","src":"2013:54:115"},"nodeType":"YulExpressionStatement","src":"2013:54:115"},{"nodeType":"YulAssignment","src":"2076:15:115","value":{"name":"array","nodeType":"YulIdentifier","src":"2086:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2076:6:115"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1477:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1488:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1500:6:115","type":""}],"src":"1420:677:115"},{"body":{"nodeType":"YulBlock","src":"2189:171:115","statements":[{"body":{"nodeType":"YulBlock","src":"2235:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2244:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2252:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2237:6:115"},"nodeType":"YulFunctionCall","src":"2237:22:115"},"nodeType":"YulExpressionStatement","src":"2237:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2210:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"2219:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2206:3:115"},"nodeType":"YulFunctionCall","src":"2206:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"2231:2:115","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2202:3:115"},"nodeType":"YulFunctionCall","src":"2202:32:115"},"nodeType":"YulIf","src":"2199:2:115"},{"nodeType":"YulAssignment","src":"2270:33:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2293:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2280:12:115"},"nodeType":"YulFunctionCall","src":"2280:23:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2270:6:115"}]},{"nodeType":"YulAssignment","src":"2312:42:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2339:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2350:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2335:3:115"},"nodeType":"YulFunctionCall","src":"2335:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2322:12:115"},"nodeType":"YulFunctionCall","src":"2322:32:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2312:6:115"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2147:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2158:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2170:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2178:6:115","type":""}],"src":"2102:258:115"},{"body":{"nodeType":"YulBlock","src":"2416:267:115","statements":[{"nodeType":"YulVariableDeclaration","src":"2426:26:115","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2446:5:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2440:5:115"},"nodeType":"YulFunctionCall","src":"2440:12:115"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2430:6:115","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2468:3:115"},{"name":"length","nodeType":"YulIdentifier","src":"2473:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2461:6:115"},"nodeType":"YulFunctionCall","src":"2461:19:115"},"nodeType":"YulExpressionStatement","src":"2461:19:115"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2515:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"2522:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2511:3:115"},"nodeType":"YulFunctionCall","src":"2511:16:115"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2533:3:115"},{"kind":"number","nodeType":"YulLiteral","src":"2538:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2529:3:115"},"nodeType":"YulFunctionCall","src":"2529:14:115"},{"name":"length","nodeType":"YulIdentifier","src":"2545:6:115"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2489:21:115"},"nodeType":"YulFunctionCall","src":"2489:63:115"},"nodeType":"YulExpressionStatement","src":"2489:63:115"},{"nodeType":"YulAssignment","src":"2561:116:115","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2576:3:115"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2589:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"2597:2:115","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2585:3:115"},"nodeType":"YulFunctionCall","src":"2585:15:115"},{"kind":"number","nodeType":"YulLiteral","src":"2602:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2581:3:115"},"nodeType":"YulFunctionCall","src":"2581:88:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2572:3:115"},"nodeType":"YulFunctionCall","src":"2572:98:115"},{"kind":"number","nodeType":"YulLiteral","src":"2672:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2568:3:115"},"nodeType":"YulFunctionCall","src":"2568:109:115"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2561:3:115"}]}]},"name":"abi_encode_t_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2393:5:115","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2400:3:115","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2408:3:115","type":""}],"src":"2365:318:115"},{"body":{"nodeType":"YulBlock","src":"2835:126:115","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2858:3:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2863:6:115"},{"name":"value1","nodeType":"YulIdentifier","src":"2871:6:115"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"2845:12:115"},"nodeType":"YulFunctionCall","src":"2845:33:115"},"nodeType":"YulExpressionStatement","src":"2845:33:115"},{"nodeType":"YulVariableDeclaration","src":"2887:26:115","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2901:3:115"},{"name":"value1","nodeType":"YulIdentifier","src":"2906:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2897:3:115"},"nodeType":"YulFunctionCall","src":"2897:16:115"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2891:2:115","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2929:2:115"},{"name":"end","nodeType":"YulIdentifier","src":"2933:3:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2922:6:115"},"nodeType":"YulFunctionCall","src":"2922:15:115"},"nodeType":"YulExpressionStatement","src":"2922:15:115"},{"nodeType":"YulAssignment","src":"2946:9:115","value":{"name":"_1","nodeType":"YulIdentifier","src":"2953:2:115"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2946:3:115"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2803:3:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2808:6:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2816:6:115","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2827:3:115","type":""}],"src":"2688:273:115"},{"body":{"nodeType":"YulBlock","src":"3067:125:115","statements":[{"nodeType":"YulAssignment","src":"3077:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3089:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"3100:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3085:3:115"},"nodeType":"YulFunctionCall","src":"3085:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3077:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3119:9:115"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3134:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"3142:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3130:3:115"},"nodeType":"YulFunctionCall","src":"3130:55:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3112:6:115"},"nodeType":"YulFunctionCall","src":"3112:74:115"},"nodeType":"YulExpressionStatement","src":"3112:74:115"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3036:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3047:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3058:4:115","type":""}],"src":"2966:226:115"},{"body":{"nodeType":"YulBlock","src":"3366:696:115","statements":[{"nodeType":"YulVariableDeclaration","src":"3376:12:115","value":{"kind":"number","nodeType":"YulLiteral","src":"3386:2:115","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3380:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3397:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3415:9:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3426:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3411:3:115"},"nodeType":"YulFunctionCall","src":"3411:18:115"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3401:6:115","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3445:9:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3456:2:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3438:6:115"},"nodeType":"YulFunctionCall","src":"3438:21:115"},"nodeType":"YulExpressionStatement","src":"3438:21:115"},{"nodeType":"YulVariableDeclaration","src":"3468:17:115","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3479:6:115"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3472:3:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3494:27:115","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3514:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3508:5:115"},"nodeType":"YulFunctionCall","src":"3508:13:115"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3498:6:115","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3537:6:115"},{"name":"length","nodeType":"YulIdentifier","src":"3545:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3530:6:115"},"nodeType":"YulFunctionCall","src":"3530:22:115"},"nodeType":"YulExpressionStatement","src":"3530:22:115"},{"nodeType":"YulAssignment","src":"3561:25:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3572:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"3583:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3568:3:115"},"nodeType":"YulFunctionCall","src":"3568:18:115"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3561:3:115"}]},{"nodeType":"YulVariableDeclaration","src":"3595:54:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3617:9:115"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3632:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3640:2:115"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3628:3:115"},"nodeType":"YulFunctionCall","src":"3628:15:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3613:3:115"},"nodeType":"YulFunctionCall","src":"3613:31:115"},{"kind":"number","nodeType":"YulLiteral","src":"3646:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3609:3:115"},"nodeType":"YulFunctionCall","src":"3609:40:115"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"3599:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3658:29:115","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3676:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3684:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3672:3:115"},"nodeType":"YulFunctionCall","src":"3672:15:115"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3662:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3696:13:115","value":{"name":"tail","nodeType":"YulIdentifier","src":"3705:4:115"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3700:1:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"3767:266:115","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3788:3:115"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"3801:6:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"3809:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3797:3:115"},"nodeType":"YulFunctionCall","src":"3797:22:115"},{"kind":"number","nodeType":"YulLiteral","src":"3821:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3793:3:115"},"nodeType":"YulFunctionCall","src":"3793:95:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3781:6:115"},"nodeType":"YulFunctionCall","src":"3781:108:115"},"nodeType":"YulExpressionStatement","src":"3781:108:115"},{"nodeType":"YulAssignment","src":"3902:51:115","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3937:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3931:5:115"},"nodeType":"YulFunctionCall","src":"3931:13:115"},{"name":"tail_2","nodeType":"YulIdentifier","src":"3946:6:115"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"3912:18:115"},"nodeType":"YulFunctionCall","src":"3912:41:115"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"3902:6:115"}]},{"nodeType":"YulAssignment","src":"3966:25:115","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3980:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3988:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3976:3:115"},"nodeType":"YulFunctionCall","src":"3976:15:115"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3966:6:115"}]},{"nodeType":"YulAssignment","src":"4004:19:115","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4015:3:115"},{"name":"_1","nodeType":"YulIdentifier","src":"4020:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4011:3:115"},"nodeType":"YulFunctionCall","src":"4011:12:115"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"4004:3:115"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3729:1:115"},{"name":"length","nodeType":"YulIdentifier","src":"3732:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3726:2:115"},"nodeType":"YulFunctionCall","src":"3726:13:115"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3740:18:115","statements":[{"nodeType":"YulAssignment","src":"3742:14:115","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3751:1:115"},{"kind":"number","nodeType":"YulLiteral","src":"3754:1:115","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3747:3:115"},"nodeType":"YulFunctionCall","src":"3747:9:115"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3742:1:115"}]}]},"pre":{"nodeType":"YulBlock","src":"3722:3:115","statements":[]},"src":"3718:315:115"},{"nodeType":"YulAssignment","src":"4042:14:115","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"4050:6:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4042:4:115"}]}]},"name":"abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3335:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3346:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3357:4:115","type":""}],"src":"3197:865:115"},{"body":{"nodeType":"YulBlock","src":"4188:100:115","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4205:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4216:2:115","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4198:6:115"},"nodeType":"YulFunctionCall","src":"4198:21:115"},"nodeType":"YulExpressionStatement","src":"4198:21:115"},{"nodeType":"YulAssignment","src":"4228:54:115","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4255:6:115"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4267:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4278:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4263:3:115"},"nodeType":"YulFunctionCall","src":"4263:18:115"}],"functionName":{"name":"abi_encode_t_bytes","nodeType":"YulIdentifier","src":"4236:18:115"},"nodeType":"YulFunctionCall","src":"4236:46:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4228:4:115"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4157:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4168:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4179:4:115","type":""}],"src":"4067:221:115"},{"body":{"nodeType":"YulBlock","src":"4442:146:115","statements":[{"nodeType":"YulAssignment","src":"4452:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4464:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4475:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4460:3:115"},"nodeType":"YulFunctionCall","src":"4460:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4452:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4494:9:115"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4511:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4505:5:115"},"nodeType":"YulFunctionCall","src":"4505:13:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4487:6:115"},"nodeType":"YulFunctionCall","src":"4487:32:115"},"nodeType":"YulExpressionStatement","src":"4487:32:115"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4539:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4550:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4535:3:115"},"nodeType":"YulFunctionCall","src":"4535:20:115"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4567:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"4575:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4563:3:115"},"nodeType":"YulFunctionCall","src":"4563:17:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4557:5:115"},"nodeType":"YulFunctionCall","src":"4557:24:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4528:6:115"},"nodeType":"YulFunctionCall","src":"4528:54:115"},"nodeType":"YulExpressionStatement","src":"4528:54:115"}]},"name":"abi_encode_tuple_t_struct$_Tuple_$16822_memory_ptr__to_t_struct$_Tuple_$16822_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4411:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4422:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4433:4:115","type":""}],"src":"4293:295:115"},{"body":{"nodeType":"YulBlock","src":"4694:76:115","statements":[{"nodeType":"YulAssignment","src":"4704:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4716:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"4727:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4712:3:115"},"nodeType":"YulFunctionCall","src":"4712:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4704:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4746:9:115"},{"name":"value0","nodeType":"YulIdentifier","src":"4757:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4739:6:115"},"nodeType":"YulFunctionCall","src":"4739:25:115"},"nodeType":"YulExpressionStatement","src":"4739:25:115"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4663:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4674:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4685:4:115","type":""}],"src":"4593:177:115"},{"body":{"nodeType":"YulBlock","src":"4869:498:115","statements":[{"nodeType":"YulVariableDeclaration","src":"4879:51:115","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"4918:11:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4905:12:115"},"nodeType":"YulFunctionCall","src":"4905:25:115"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"4883:18:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"5078:22:115","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"5087:4:115"},{"name":"addr","nodeType":"YulIdentifier","src":"5093:4:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5080:6:115"},"nodeType":"YulFunctionCall","src":"5080:18:115"},"nodeType":"YulExpressionStatement","src":"5080:18:115"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"4953:18:115"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"4981:12:115"},"nodeType":"YulFunctionCall","src":"4981:14:115"},{"name":"base_ref","nodeType":"YulIdentifier","src":"4997:8:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4977:3:115"},"nodeType":"YulFunctionCall","src":"4977:29:115"},{"kind":"number","nodeType":"YulLiteral","src":"5008:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4973:3:115"},"nodeType":"YulFunctionCall","src":"4973:102:115"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4949:3:115"},"nodeType":"YulFunctionCall","src":"4949:127:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4942:6:115"},"nodeType":"YulFunctionCall","src":"4942:135:115"},"nodeType":"YulIf","src":"4939:2:115"},{"nodeType":"YulVariableDeclaration","src":"5109:47:115","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"5127:8:115"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"5137:18:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5123:3:115"},"nodeType":"YulFunctionCall","src":"5123:33:115"},"variables":[{"name":"addr_1","nodeType":"YulTypedName","src":"5113:6:115","type":""}]},{"nodeType":"YulAssignment","src":"5165:30:115","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"5188:6:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5175:12:115"},"nodeType":"YulFunctionCall","src":"5175:20:115"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5165:6:115"}]},{"body":{"nodeType":"YulBlock","src":"5238:22:115","statements":[{"expression":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"5247:4:115"},{"name":"addr","nodeType":"YulIdentifier","src":"5253:4:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5240:6:115"},"nodeType":"YulFunctionCall","src":"5240:18:115"},"nodeType":"YulExpressionStatement","src":"5240:18:115"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5210:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"5218:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5207:2:115"},"nodeType":"YulFunctionCall","src":"5207:30:115"},"nodeType":"YulIf","src":"5204:2:115"},{"nodeType":"YulAssignment","src":"5269:25:115","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"5281:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"5289:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5277:3:115"},"nodeType":"YulFunctionCall","src":"5277:17:115"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"5269:4:115"}]},{"body":{"nodeType":"YulBlock","src":"5345:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5354:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5357:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5347:6:115"},"nodeType":"YulFunctionCall","src":"5347:12:115"},"nodeType":"YulExpressionStatement","src":"5347:12:115"}]},"condition":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"5310:4:115"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"5320:12:115"},"nodeType":"YulFunctionCall","src":"5320:14:115"},{"name":"length","nodeType":"YulIdentifier","src":"5336:6:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5316:3:115"},"nodeType":"YulFunctionCall","src":"5316:27:115"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"5306:3:115"},"nodeType":"YulFunctionCall","src":"5306:38:115"},"nodeType":"YulIf","src":"5303:2:115"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"4826:8:115","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"4836:11:115","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"4852:4:115","type":""},{"name":"length","nodeType":"YulTypedName","src":"4858:6:115","type":""}],"src":"4775:592:115"},{"body":{"nodeType":"YulBlock","src":"5416:198:115","statements":[{"nodeType":"YulAssignment","src":"5426:19:115","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5442:2:115","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5436:5:115"},"nodeType":"YulFunctionCall","src":"5436:9:115"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5426:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"5454:35:115","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5476:6:115"},{"name":"size","nodeType":"YulIdentifier","src":"5484:4:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5472:3:115"},"nodeType":"YulFunctionCall","src":"5472:17:115"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"5458:10:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"5564:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"5566:7:115"},"nodeType":"YulFunctionCall","src":"5566:9:115"},"nodeType":"YulExpressionStatement","src":"5566:9:115"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5507:10:115"},{"kind":"number","nodeType":"YulLiteral","src":"5519:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5504:2:115"},"nodeType":"YulFunctionCall","src":"5504:34:115"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5543:10:115"},{"name":"memPtr","nodeType":"YulIdentifier","src":"5555:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5540:2:115"},"nodeType":"YulFunctionCall","src":"5540:22:115"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5501:2:115"},"nodeType":"YulFunctionCall","src":"5501:62:115"},"nodeType":"YulIf","src":"5498:2:115"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5593:2:115","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5597:10:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5586:6:115"},"nodeType":"YulFunctionCall","src":"5586:22:115"},"nodeType":"YulExpressionStatement","src":"5586:22:115"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"5396:4:115","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"5405:6:115","type":""}],"src":"5372:242:115"},{"body":{"nodeType":"YulBlock","src":"5679:181:115","statements":[{"body":{"nodeType":"YulBlock","src":"5723:13:115","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"5725:7:115"},"nodeType":"YulFunctionCall","src":"5725:9:115"},"nodeType":"YulExpressionStatement","src":"5725:9:115"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5695:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"5703:18:115","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5692:2:115"},"nodeType":"YulFunctionCall","src":"5692:30:115"},"nodeType":"YulIf","src":"5689:2:115"},{"nodeType":"YulAssignment","src":"5745:109:115","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5765:6:115"},{"kind":"number","nodeType":"YulLiteral","src":"5773:4:115","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5761:3:115"},"nodeType":"YulFunctionCall","src":"5761:17:115"},{"kind":"number","nodeType":"YulLiteral","src":"5780:66:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5757:3:115"},"nodeType":"YulFunctionCall","src":"5757:90:115"},{"kind":"number","nodeType":"YulLiteral","src":"5849:4:115","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5753:3:115"},"nodeType":"YulFunctionCall","src":"5753:101:115"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"5745:4:115"}]}]},"name":"array_allocation_size_t_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"5659:6:115","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"5670:4:115","type":""}],"src":"5619:241:115"},{"body":{"nodeType":"YulBlock","src":"5918:205:115","statements":[{"nodeType":"YulVariableDeclaration","src":"5928:10:115","value":{"kind":"number","nodeType":"YulLiteral","src":"5937:1:115","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5932:1:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"5997:63:115","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6022:3:115"},{"name":"i","nodeType":"YulIdentifier","src":"6027:1:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6018:3:115"},"nodeType":"YulFunctionCall","src":"6018:11:115"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6041:3:115"},{"name":"i","nodeType":"YulIdentifier","src":"6046:1:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6037:3:115"},"nodeType":"YulFunctionCall","src":"6037:11:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6031:5:115"},"nodeType":"YulFunctionCall","src":"6031:18:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6011:6:115"},"nodeType":"YulFunctionCall","src":"6011:39:115"},"nodeType":"YulExpressionStatement","src":"6011:39:115"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5958:1:115"},{"name":"length","nodeType":"YulIdentifier","src":"5961:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5955:2:115"},"nodeType":"YulFunctionCall","src":"5955:13:115"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5969:19:115","statements":[{"nodeType":"YulAssignment","src":"5971:15:115","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5980:1:115"},{"kind":"number","nodeType":"YulLiteral","src":"5983:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5976:3:115"},"nodeType":"YulFunctionCall","src":"5976:10:115"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5971:1:115"}]}]},"pre":{"nodeType":"YulBlock","src":"5951:3:115","statements":[]},"src":"5947:113:115"},{"body":{"nodeType":"YulBlock","src":"6086:31:115","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6099:3:115"},{"name":"length","nodeType":"YulIdentifier","src":"6104:6:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6095:3:115"},"nodeType":"YulFunctionCall","src":"6095:16:115"},{"kind":"number","nodeType":"YulLiteral","src":"6113:1:115","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6088:6:115"},"nodeType":"YulFunctionCall","src":"6088:27:115"},"nodeType":"YulExpressionStatement","src":"6088:27:115"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6075:1:115"},{"name":"length","nodeType":"YulIdentifier","src":"6078:6:115"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6072:2:115"},"nodeType":"YulFunctionCall","src":"6072:13:115"},"nodeType":"YulIf","src":"6069:2:115"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"5896:3:115","type":""},{"name":"dst","nodeType":"YulTypedName","src":"5901:3:115","type":""},{"name":"length","nodeType":"YulTypedName","src":"5906:6:115","type":""}],"src":"5865:258:115"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value0, value0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(value0, value0) }\n        if gt(add(add(_2, mul(length, 32)), 32), dataEnd) { revert(value0, value0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _2 := calldataload(_1)\n        let array := allocateMemory(array_allocation_size_t_string(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(value0, value0) }\n        calldatacopy(add(array, 32), add(_1, 32), _2)\n        mstore(add(add(array, _2), 32), value0)\n        value0 := array\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _2 := mload(_1)\n        let array := allocateMemory(array_allocation_size_t_string(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(value0, value0) }\n        copy_memory_to_memory(add(_1, 32), add(array, 32), _2)\n        value0 := array\n    }\n    function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_t_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, end)\n        end := _1\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let tail_2 := add(add(headStart, mul(length, _1)), 64)\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0))\n            tail_2 := abi_encode_t_bytes(mload(srcPtr), tail_2)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        tail := tail_2\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_t_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_struct$_Tuple_$16822_memory_ptr__to_t_struct$_Tuple_$16822_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, mload(value0))\n        mstore(add(headStart, 0x20), mload(add(value0, 0x20)))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(addr, addr) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(addr, addr) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function allocateMemory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, size)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_t_string(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        size := add(and(add(length, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n}","id":115,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100655760003560e01c80635170a9d0116100435780635170a9d0146100e4578063ac9650d814610106578063f3e222971461012657610065565b8063295b4e171461006a57806334621235146100955780633b16a6a3146100b7575b600080fd5b34801561007657600080fd5b5061007f61012e565b60405161008c91906105ba565b60405180910390f35b3480156100a157600080fd5b506100b56100b0366004610383565b610134565b005b3480156100c357600080fd5b506100d76100d236600461046f565b610171565b60405161008c91906105a3565b3480156100f057600080fd5b506100f9610192565b60405161008c91906104ea565b610119610114366004610314565b610196565b60405161008c919061050b565b6100b56102f0565b60005481565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101689190610589565b60405180910390fd5b6101796102fa565b5060408051808201909152908152602081019190915290565b3390565b60608167ffffffffffffffff811180156101af57600080fd5b506040519080825280602002602001820160405280156101e357816020015b60608152602001906001900390816101ce5790505b50905060005b828110156102e9576000803086868581811061020157fe5b905060200281019061021391906105c3565b6040516102219291906104da565b600060405180830381855af49150503d806000811461025c576040519150601f19603f3d011682016040523d82523d6000602084013e610261565b606091505b5091509150816102c75760448151101561027a57600080fd5b6004810190508080602001905181019061029491906103fc565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101689190610589565b808484815181106102d457fe5b602090810291909101015250506001016101e9565b5092915050565b6000805434019055565b604051806040016040528060008152602001600081525090565b60008060208385031215610326578182fd5b823567ffffffffffffffff8082111561033d578384fd5b818501915085601f830112610350578384fd5b81358181111561035e578485fd5b8660208083028501011115610371578485fd5b60209290920196919550909350505050565b600060208284031215610394578081fd5b813567ffffffffffffffff8111156103aa578182fd5b8201601f810184136103ba578182fd5b80356103cd6103c882610651565b61062d565b8181528560208385010111156103e1578384fd5b81602084016020830137908101602001929092525092915050565b60006020828403121561040d578081fd5b815167ffffffffffffffff811115610423578182fd5b8201601f81018413610433578182fd5b80516104416103c882610651565b818152856020838501011115610455578384fd5b610466826020830160208601610691565b95945050505050565b60008060408385031215610481578182fd5b50508035926020909101359150565b600081518084526104a8816020860160208601610691565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000828483379101908152919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b8281101561057c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261056a858351610490565b94509285019290850190600101610530565b5092979650505050505050565b60006020825261059c6020830184610490565b9392505050565b815181526020918201519181019190915260400190565b90815260200190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126105f7578283fd5b83018035915067ffffffffffffffff821115610611578283fd5b60200191503681900382131561062657600080fd5b9250929050565b60405181810167ffffffffffffffff8111828210171561064957fe5b604052919050565b600067ffffffffffffffff82111561066557fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b838110156106ac578181015183820152602001610694565b838111156106bb576000848401525b5050505056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x65 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5170A9D0 GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x5170A9D0 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x106 JUMPI DUP1 PUSH4 0xF3E22297 EQ PUSH2 0x126 JUMPI PUSH2 0x65 JUMP JUMPDEST DUP1 PUSH4 0x295B4E17 EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x34621235 EQ PUSH2 0x95 JUMPI DUP1 PUSH4 0x3B16A6A3 EQ PUSH2 0xB7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7F PUSH2 0x12E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x5BA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB5 PUSH2 0xB0 CALLDATASIZE PUSH1 0x4 PUSH2 0x383 JUMP JUMPDEST PUSH2 0x134 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD7 PUSH2 0xD2 CALLDATASIZE PUSH1 0x4 PUSH2 0x46F JUMP JUMPDEST PUSH2 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x5A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF9 PUSH2 0x192 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x4EA JUMP JUMPDEST PUSH2 0x119 PUSH2 0x114 CALLDATASIZE PUSH1 0x4 PUSH2 0x314 JUMP JUMPDEST PUSH2 0x196 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x50B JUMP JUMPDEST PUSH2 0xB5 PUSH2 0x2F0 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x168 SWAP2 SWAP1 PUSH2 0x589 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x179 PUSH2 0x2FA JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1E3 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1CE JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2E9 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x201 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x213 SWAP2 SWAP1 PUSH2 0x5C3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x221 SWAP3 SWAP2 SWAP1 PUSH2 0x4DA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x25C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x261 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2C7 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x294 SWAP2 SWAP1 PUSH2 0x3FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x168 SWAP2 SWAP1 PUSH2 0x589 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2D4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x1E9 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD CALLVALUE ADD SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x326 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x33D JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x350 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x35E JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x371 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x394 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3AA JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x3BA JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3CD PUSH2 0x3C8 DUP3 PUSH2 0x651 JUMP JUMPDEST PUSH2 0x62D JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x3E1 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x423 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x433 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x441 PUSH2 0x3C8 DUP3 PUSH2 0x651 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x455 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x466 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x691 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x481 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x4A8 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x691 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP4 CALLDATACOPY SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x57C JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x56A DUP6 DUP4 MLOAD PUSH2 0x490 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x530 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x59C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x490 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 ADD MLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x5F7 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x611 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x626 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x649 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x665 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6AC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x694 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x6BB JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"117:555:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;481:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;159:103;;;;;;;;;;-1:-1:-1;159:103:111;;;;;:::i;:::-;;:::i;:::-;;332:143;;;;;;;;;;-1:-1:-1;332:143:111;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;580:90::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;308:653:49:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;507:67:111:-;;;:::i;481:19::-;;;;:::o;159:103::-;249:5;242:13;;;;;;;;;;;:::i;:::-;;;;;;;;332:143;411:18;;:::i;:::-;-1:-1:-1;449:19:111;;;;;;;;;;;;;;;;;;;;332:143::o;580:90::-;653:10;580:90;:::o;308:653:49:-;383:22;439:4;427:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;417:34;;466:9;461:494;481:15;;;461:494;;;518:12;;563:4;582;;587:1;582:7;;;;;;;;;;;;;;;;;;:::i;:::-;555:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;517:73;;;;610:7;605:306;;737:2;721:6;:13;:18;717:32;;;741:8;;;717:32;820:4;812:6;808:17;798:27;;878:6;867:28;;;;;;;;;;;;:::i;:::-;860:36;;;;;;;;;;;:::i;605:306::-;938:6;925:7;933:1;925:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;498:3:49;;461:494;;;;308:653;;;;:::o;507:67:111:-;550:4;:17;;558:9;550:17;;;507:67::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;14:677:115:-;;;172:2;160:9;151:7;147:23;143:32;140:2;;;193:6;185;178:22;140:2;238:9;225:23;267:18;308:2;300:6;297:14;294:2;;;329:6;321;314:22;294:2;372:6;361:9;357:22;347:32;;417:7;410:4;406:2;402:13;398:27;388:2;;444:6;436;429:22;388:2;489;476:16;515:2;507:6;504:14;501:2;;;536:6;528;521:22;501:2;595:7;590:2;584;576:6;572:15;568:2;564:24;560:33;557:46;554:2;;;621:6;613;606:22;554:2;657;649:11;;;;;679:6;;-1:-1:-1;130:561:115;;-1:-1:-1;;;;130:561:115:o;696:719::-;;818:2;806:9;797:7;793:23;789:32;786:2;;;839:6;831;824:22;786:2;884:9;871:23;917:18;909:6;906:30;903:2;;;954:6;946;939:22;903:2;982:22;;1035:4;1027:13;;1023:27;-1:-1:-1;1013:2:115;;1069:6;1061;1054:22;1013:2;1110;1097:16;1135:50;1150:34;1181:2;1150:34;:::i;:::-;1135:50;:::i;:::-;1208:2;1201:5;1194:17;1248:7;1243:2;1238;1234;1230:11;1226:20;1223:33;1220:2;;;1274:6;1266;1259:22;1220:2;1334;1329;1325;1321:11;1316:2;1309:5;1305:14;1292:45;1357:14;;;1373:2;1353:23;1346:39;;;;-1:-1:-1;1361:5:115;776:639;-1:-1:-1;;776:639:115:o;1420:677::-;;1553:2;1541:9;1532:7;1528:23;1524:32;1521:2;;;1574:6;1566;1559:22;1521:2;1612:9;1606:16;1645:18;1637:6;1634:30;1631:2;;;1682:6;1674;1667:22;1631:2;1710:22;;1763:4;1755:13;;1751:27;-1:-1:-1;1741:2:115;;1797:6;1789;1782:22;1741:2;1831;1825:9;1856:50;1871:34;1902:2;1871:34;:::i;1856:50::-;1929:2;1922:5;1915:17;1969:7;1964:2;1959;1955;1951:11;1947:20;1944:33;1941:2;;;1995:6;1987;1980:22;1941:2;2013:54;2064:2;2059;2052:5;2048:14;2043:2;2039;2035:11;2013:54;:::i;:::-;2086:5;1511:586;-1:-1:-1;;;;;1511:586:115:o;2102:258::-;;;2231:2;2219:9;2210:7;2206:23;2202:32;2199:2;;;2252:6;2244;2237:22;2199:2;-1:-1:-1;;2280:23:115;;;2350:2;2335:18;;;2322:32;;-1:-1:-1;2189:171:115:o;2365:318::-;;2446:5;2440:12;2473:6;2468:3;2461:19;2489:63;2545:6;2538:4;2533:3;2529:14;2522:4;2515:5;2511:16;2489:63;:::i;:::-;2597:2;2585:15;2602:66;2581:88;2572:98;;;;2672:4;2568:109;;2416:267;-1:-1:-1;;2416:267:115:o;2688:273::-;;2871:6;2863;2858:3;2845:33;2897:16;;2922:15;;;2897:16;2835:126;-1:-1:-1;2835:126:115:o;2966:226::-;3142:42;3130:55;;;;3112:74;;3100:2;3085:18;;3067:125::o;3197:865::-;;3386:2;3426;3415:9;3411:18;3456:2;3445:9;3438:21;3479:6;3514;3508:13;3545:6;3537;3530:22;3583:2;3572:9;3568:18;3561:25;;3646:2;3640;3632:6;3628:15;3617:9;3613:31;3609:40;3595:54;;3684:2;3676:6;3672:15;3705:4;3718:315;3732:6;3729:1;3726:13;3718:315;;;3821:66;3809:9;3801:6;3797:22;3793:95;3788:3;3781:108;3912:41;3946:6;3937;3931:13;3912:41;:::i;:::-;3902:51;-1:-1:-1;4011:12:115;;;;3976:15;;;;3754:1;3747:9;3718:315;;;-1:-1:-1;4050:6:115;;3366:696;-1:-1:-1;;;;;;;3366:696:115:o;4067:221::-;;4216:2;4205:9;4198:21;4236:46;4278:2;4267:9;4263:18;4255:6;4236:46;:::i;:::-;4228:54;4188:100;-1:-1:-1;;;4188:100:115:o;4293:295::-;4505:13;;4487:32;;4575:4;4563:17;;;4557:24;4535:20;;;4528:54;;;;4475:2;4460:18;;4442:146::o;4593:177::-;4739:25;;;4727:2;4712:18;;4694:76::o;4775:592::-;;;4918:11;4905:25;5008:66;4997:8;4981:14;4977:29;4973:102;4953:18;4949:127;4939:2;;5093:4;5087;5080:18;4939:2;5123:33;;5175:20;;;-1:-1:-1;5218:18:115;5207:30;;5204:2;;;5253:4;5247;5240:18;5204:2;5289:4;5277:17;;-1:-1:-1;5320:14:115;5316:27;;;5306:38;;5303:2;;;5357:1;5354;5347:12;5303:2;4869:498;;;;;:::o;5372:242::-;5442:2;5436:9;5472:17;;;5519:18;5504:34;;5540:22;;;5501:62;5498:2;;;5566:9;5498:2;5593;5586:22;5416:198;;-1:-1:-1;5416:198:115:o;5619:241::-;;5703:18;5695:6;5692:30;5689:2;;;5725:9;5689:2;-1:-1:-1;5773:4:115;5761:17;5780:66;5757:90;5849:4;5753:101;;5679:181::o;5865:258::-;5937:1;5947:113;5961:6;5958:1;5955:13;5947:113;;;6037:11;;;6031:18;6018:11;;;6011:39;5983:2;5976:10;5947:113;;;6078:6;6075:1;6072:13;6069:2;;;6113:1;6104:6;6099:3;6095:16;6088:27;6069:2;;5918:205;;;:::o"},"methodIdentifiers":{"functionThatReturnsTuple(uint256,uint256)":"3b16a6a3","functionThatRevertsWithError(string)":"34621235","multicall(bytes[])":"ac9650d8","paid()":"295b4e17","pays()":"f3e22297","returnSender()":"5170a9d0"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"b\",\"type\":\"uint256\"}],\"name\":\"functionThatReturnsTuple\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"b\",\"type\":\"uint256\"}],\"internalType\":\"struct TestMulticall.Tuple\",\"name\":\"tuple\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"functionThatRevertsWithError\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paid\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pays\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"returnSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"multicall(bytes[])\":{\"details\":\"The `msg.value` should not be trusted for any method callable from multicall.\",\"params\":{\"data\":\"The encoded function data for each of the calls to make to this contract\"},\"returns\":{\"results\":\"The results from each of the calls passed in via data\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"multicall(bytes[])\":{\"notice\":\"Call multiple functions in the current contract and return the data from all of them if they all succeed\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TestMulticall.sol\":\"TestMulticall\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/base/Multicall.sol\":{\"keccak256\":\"0xfcfd78c62d2145634a791d5680a1af7055fbd301c415d29c09333c99c37d9037\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0d1c8f4a18cec8ad49e5269c5b07c7f6fd497dfc1b7b777f8ddcfb8055efd803\",\"dweb:/ipfs/QmdeCTnfHM3RGtQuo3DMX9m7gPspGGwQp7ho6m9cJjjnER\"]},\"contracts/interfaces/IMulticall.sol\":{\"keccak256\":\"0xa8f9d0061ee730a522dc4bae6bd5cabb3e997e2c5983da183e912bdca93dfa7b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://496b68d4f72d58cc83cf51bd9cc9c99aaa46dc3c3df7c951a9e50ba29ee33016\",\"dweb:/ipfs/Qmc3bkXwuRP8mDpcKgvLgbCKn8tD8PGCaBjnLHSPMJCRGD\"]},\"contracts/test/TestMulticall.sol\":{\"keccak256\":\"0x5d6dfddfcfe6cb7472b05ae5faf86a2218f834474df133faec1739f8885bb3cb\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://74658567f2b1526f5c71502852c3c4005077e9ebcaa7f4db991a49ad3352a768\",\"dweb:/ipfs/Qmba8ukVjggAuixxMYepYxiRVXsuXAJBSE5gi48UfrtsYz\"]}},\"version\":1}"}},"contracts/test/TestPositionNFTOwner.sol":{"TestPositionNFTOwner":{"abi":[{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610306806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806313af4035146100465780631626ba7e1461007b5780638da5cb5b1461015d575b600080fd5b6100796004803603602081101561005c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661018e565b005b6101286004803603604081101561009157600080fd5b813591908101906040810160208201356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506101d5945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6101656102dd565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6020818101516040808401516060808601516000805485518281528089018088528b905292821a83870181905293830187905260808301859052945190969394929373ffffffffffffffffffffffffffffffffffffffff9093169260019260a0808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610278573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff1614156102ca57507f1626ba7e0000000000000000000000000000000000000000000000000000000092506102d7915050565b50600092506102d7915050565b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff168156fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x306 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x13AF4035 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0x7B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x15D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x79 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x18E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x128 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1D5 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x165 PUSH2 0x2DD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x40 DUP1 DUP5 ADD MLOAD PUSH1 0x60 DUP1 DUP7 ADD MLOAD PUSH1 0x0 DUP1 SLOAD DUP6 MLOAD DUP3 DUP2 MSTORE DUP1 DUP10 ADD DUP1 DUP9 MSTORE DUP12 SWAP1 MSTORE SWAP3 DUP3 BYTE DUP4 DUP8 ADD DUP2 SWAP1 MSTORE SWAP4 DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP5 MLOAD SWAP1 SWAP7 SWAP4 SWAP5 SWAP3 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 PUSH1 0x1 SWAP3 PUSH1 0xA0 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x278 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2CA JUMPI POP PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 SWAP3 POP PUSH2 0x2D7 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x2D7 SWAP2 POP POP JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"111:652:112:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c806313af4035146100465780631626ba7e1461007b5780638da5cb5b1461015d575b600080fd5b6100796004803603602081101561005c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661018e565b005b6101286004803603604081101561009157600080fd5b813591908101906040810160208201356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506101d5945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6101656102dd565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6020818101516040808401516060808601516000805485518281528089018088528b905292821a83870181905293830187905260808301859052945190969394929373ffffffffffffffffffffffffffffffffffffffff9093169260019260a0808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610278573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff1614156102ca57507f1626ba7e0000000000000000000000000000000000000000000000000000000092506102d7915050565b50600092506102d7915050565b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff168156fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x13AF4035 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0x7B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x15D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x79 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x18E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x128 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1D5 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x165 PUSH2 0x2DD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x40 DUP1 DUP5 ADD MLOAD PUSH1 0x60 DUP1 DUP7 ADD MLOAD PUSH1 0x0 DUP1 SLOAD DUP6 MLOAD DUP3 DUP2 MSTORE DUP1 DUP10 ADD DUP1 DUP9 MSTORE DUP12 SWAP1 MSTORE SWAP3 DUP3 BYTE DUP4 DUP8 ADD DUP2 SWAP1 MSTORE SWAP4 DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP5 MLOAD SWAP1 SWAP7 SWAP4 SWAP5 SWAP3 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 PUSH1 0x1 SWAP3 PUSH1 0xA0 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x278 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2CA JUMPI POP PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 SWAP3 POP PUSH2 0x2D7 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH2 0x2D7 SWAP2 POP POP JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"111:652:112:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;186:74;;;;;;;;;;;;;;;;-1:-1:-1;186:74:112;;;;:::i;:::-;;266:495;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;266:495:112;;-1:-1:-1;266:495:112;;-1:-1:-1;;;;;266:495:112:i;:::-;;;;;;;;;;;;;;;;;;;159:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;186:74;239:5;:14;;;;;;;;;;;;;;;186:74::o;266:495::-;495:4;480:20;;;474:27;540:4;525:20;;;519:27;593:4;578:20;;;572:27;362:17;651:5;;623:24;;;;;;;;;;;;;;564:36;;;623:24;;;;;;;;;;;;;;;;;;;;362:17;;519:27;;564:36;;651:5;;;;;;;623:24;;;;;-1:-1:-1;623:24:112;;;;;;;;;;651:5;623:24;;;;;;;;;;;;;;;;;;;;;;;:33;;;619:136;;;-1:-1:-1;679:18:112;;-1:-1:-1;672:25:112;;-1:-1:-1;;672:25:112;619:136;-1:-1:-1;742:1:112;;-1:-1:-1;728:16:112;;-1:-1:-1;;728:16:112;266:495;;;;;:::o;159:20::-;;;;;;:::o"},"methodIdentifiers":{"isValidSignature(bytes32,bytes)":"1626ba7e","owner()":"8da5cb5b","setOwner(address)":"13af4035"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"details\":\"MUST return the bytes4 magic value 0x1626ba7e when function passes. MUST NOT modify state (using STATICCALL for solc < 0.5, view modifier for solc > 0.5). MUST allow external calls.\",\"params\":{\"hash\":\"Hash of the data to be signed\",\"signature\":\"Signature byte array associated with _data\"},\"returns\":{\"magicValue\":\"The bytes4 magic value 0x1626ba7e\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Returns whether the provided signature is valid for the provided data\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TestPositionNFTOwner.sol\":\"TestPositionNFTOwner\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/external/IERC1271.sol\":{\"keccak256\":\"0xfafb0a232f7410fa2fbcae4627e357dfa8f43a58dea6ba796d8bf5523c5c7b89\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f3877e40332b89fc7a14fa3266b4a2bd154725c322816a8985eabfbaeb6ab372\",\"dweb:/ipfs/QmVj7tjRKWdW9H6vhP2JTDgt82Pk8sGHEJHtJJwPqmgrRi\"]},\"contracts/test/TestPositionNFTOwner.sol\":{\"keccak256\":\"0xd8e25cd7f5ab25169081ea7ac70260c82fdec536d78f64b76d30882009bb6350\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ce388d3e2270fa2d14c6bba82d2c712058e91c2938fe9991e0015c8f7056cadd\",\"dweb:/ipfs/QmdLecebMJaXS9pbx8USNaak2ZkEj1jSYEKfURdpUCeNcS\"]}},\"version\":1}"}},"contracts/test/TestUniswapV3Callee.sol":{"TestAstraCLCallee":{"abi":[{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"astraCLSwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"name":"swap0ForExact1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"name":"swap1ForExact0","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"amount0In","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"name":"swapExact0For1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"amount1In","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"name":"swapExact1For0","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610785806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063bac7bf7811610050578063bac7bf7814610133578063e2be91091461017c578063f603482c146101c557610067565b806311c178481461006c5780636dfc0ddb146100ea575b600080fd5b6100e86004803603606081101561008257600080fd5b8135916020810135918101906060810160408201356401000000008111156100a957600080fd5b8201836020820111156100bb57600080fd5b803590602001918460018302840111640100000000831117156100dd57600080fd5b50909250905061020e565b005b6100e86004803603608081101561010057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359160408201358116916060013516610495565b6100e86004803603608081101561014957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359160408201358116916060013516610607565b6100e86004803603608081101561019257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013591604082013581169160600135166106fa565b6100e8600480360360808110156101db57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359160408201358116916060013516610722565b60008282602081101561022057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1690506000851315610366573373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561028957600080fd5b505afa15801561029d573d6000803e3d6000fd5b505050506040513d60208110156102b357600080fd5b5051604080517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015233602483015260448201899052915191909216916323b872dd9160648083019260209291908290030181600087803b15801561033457600080fd5b505af1158015610348573d6000803e3d6000fd5b505050506040513d602081101561035e57600080fd5b5061048e9050565b6000841361037057fe5b3373ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156103b657600080fd5b505afa1580156103ca573d6000803e3d6000fd5b505050506040513d60208110156103e057600080fd5b5051604080517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015233602483015260448201889052915191909216916323b872dd9160648083019260209291908290030181600087803b15801561046157600080fd5b505af1158015610475573d6000803e3d6000fd5b505050506040513d602081101561048b57600080fd5b50505b5050505050565b8373ffffffffffffffffffffffffffffffffffffffff1663128acb088360016104bd87610746565b8533604051602001808273ffffffffffffffffffffffffffffffffffffffff1681526020019150506040516020818303038152906040526040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff16815260200185151581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561058657818101518382015260200161056e565b50505050905090810190601f1680156105b35780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b1580156105d557600080fd5b505af11580156105e9573d6000803e3d6000fd5b505050506040513d60408110156105ff57600080fd5b505050505050565b8373ffffffffffffffffffffffffffffffffffffffff1663128acb0883600161062f87610746565b6000038533604051602001808273ffffffffffffffffffffffffffffffffffffffff1681526020019150506040516020818303038152906040526040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff16815260200185151581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360008381101561058657818101518382015260200161056e565b8373ffffffffffffffffffffffffffffffffffffffff1663128acb088360006104bd87610746565b8373ffffffffffffffffffffffffffffffffffffffff1663128acb0883600061062f875b60007f8000000000000000000000000000000000000000000000000000000000000000821061077457600080fd5b509056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x785 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBAC7BF78 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xBAC7BF78 EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0xE2BE9109 EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0xF603482C EQ PUSH2 0x1C5 JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x11C17848 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x6DFC0DDB EQ PUSH2 0xEA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x20E JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0x495 JUMP JUMPDEST PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0x607 JUMP JUMPDEST PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0x6FA JUMP JUMPDEST PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0x722 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP6 SGT ISZERO PUSH2 0x366 JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDFE1681 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP10 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x334 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x348 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x35E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48E SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP5 SGT PUSH2 0x370 JUMPI INVALID JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD21220A7 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP9 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x475 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x48B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 DUP4 PUSH1 0x1 PUSH2 0x4BD DUP8 PUSH2 0x746 JUMP JUMPDEST DUP6 CALLER PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x586 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x56E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x5B3 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 DUP4 PUSH1 0x1 PUSH2 0x62F DUP8 PUSH2 0x746 JUMP JUMPDEST PUSH1 0x0 SUB DUP6 CALLER PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 DUP2 LT ISZERO PUSH2 0x586 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x56E JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 DUP4 PUSH1 0x0 PUSH2 0x4BD DUP8 PUSH2 0x746 JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 DUP4 PUSH1 0x0 PUSH2 0x62F DUP8 JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 LT PUSH2 0x774 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"503:1551:113:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c8063bac7bf7811610050578063bac7bf7814610133578063e2be91091461017c578063f603482c146101c557610067565b806311c178481461006c5780636dfc0ddb146100ea575b600080fd5b6100e86004803603606081101561008257600080fd5b8135916020810135918101906060810160408201356401000000008111156100a957600080fd5b8201836020820111156100bb57600080fd5b803590602001918460018302840111640100000000831117156100dd57600080fd5b50909250905061020e565b005b6100e86004803603608081101561010057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359160408201358116916060013516610495565b6100e86004803603608081101561014957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359160408201358116916060013516610607565b6100e86004803603608081101561019257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013591604082013581169160600135166106fa565b6100e8600480360360808110156101db57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359160408201358116916060013516610722565b60008282602081101561022057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1690506000851315610366573373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561028957600080fd5b505afa15801561029d573d6000803e3d6000fd5b505050506040513d60208110156102b357600080fd5b5051604080517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015233602483015260448201899052915191909216916323b872dd9160648083019260209291908290030181600087803b15801561033457600080fd5b505af1158015610348573d6000803e3d6000fd5b505050506040513d602081101561035e57600080fd5b5061048e9050565b6000841361037057fe5b3373ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156103b657600080fd5b505afa1580156103ca573d6000803e3d6000fd5b505050506040513d60208110156103e057600080fd5b5051604080517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015233602483015260448201889052915191909216916323b872dd9160648083019260209291908290030181600087803b15801561046157600080fd5b505af1158015610475573d6000803e3d6000fd5b505050506040513d602081101561048b57600080fd5b50505b5050505050565b8373ffffffffffffffffffffffffffffffffffffffff1663128acb088360016104bd87610746565b8533604051602001808273ffffffffffffffffffffffffffffffffffffffff1681526020019150506040516020818303038152906040526040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff16815260200185151581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561058657818101518382015260200161056e565b50505050905090810190601f1680156105b35780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b1580156105d557600080fd5b505af11580156105e9573d6000803e3d6000fd5b505050506040513d60408110156105ff57600080fd5b505050505050565b8373ffffffffffffffffffffffffffffffffffffffff1663128acb0883600161062f87610746565b6000038533604051602001808273ffffffffffffffffffffffffffffffffffffffff1681526020019150506040516020818303038152906040526040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff16815260200185151581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360008381101561058657818101518382015260200161056e565b8373ffffffffffffffffffffffffffffffffffffffff1663128acb088360006104bd87610746565b8373ffffffffffffffffffffffffffffffffffffffff1663128acb0883600061062f875b60007f8000000000000000000000000000000000000000000000000000000000000000821061077457600080fd5b509056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBAC7BF78 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xBAC7BF78 EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0xE2BE9109 EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0xF603482C EQ PUSH2 0x1C5 JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x11C17848 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x6DFC0DDB EQ PUSH2 0xEA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x20E JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0x495 JUMP JUMPDEST PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0x607 JUMP JUMPDEST PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0x6FA JUMP JUMPDEST PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0x722 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP6 SGT ISZERO PUSH2 0x366 JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDFE1681 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP10 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x334 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x348 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x35E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48E SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP5 SGT PUSH2 0x370 JUMPI INVALID JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD21220A7 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP9 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x475 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x48B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 DUP4 PUSH1 0x1 PUSH2 0x4BD DUP8 PUSH2 0x746 JUMP JUMPDEST DUP6 CALLER PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x586 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x56E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x5B3 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 DUP4 PUSH1 0x1 PUSH2 0x62F DUP8 PUSH2 0x746 JUMP JUMPDEST PUSH1 0x0 SUB DUP6 CALLER PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 DUP2 LT ISZERO PUSH2 0x586 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x56E JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 DUP4 PUSH1 0x0 PUSH2 0x4BD DUP8 PUSH2 0x746 JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x128ACB08 DUP4 PUSH1 0x0 PUSH2 0x62F DUP8 JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 LT PUSH2 0x774 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"503:1551:113:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1561:491;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1561:491:113;;-1:-1:-1;1561:491:113;-1:-1:-1;1561:491:113;:::i;:::-;;593:234;;;;;;;;;;;;;;;;-1:-1:-1;593:234:113;;;;;;;;;;;;;;;;;;;;;;;:::i;833:237::-;;;;;;;;;;;;;;;;-1:-1:-1;833:237:113;;;;;;;;;;;;;;;;;;;;;;;:::i;1076:235::-;;;;;;;;;;;;;;;;-1:-1:-1;1076:235:113;;;;;;;;;;;;;;;;;;;;;;;:::i;1317:238::-;;;;;;;;;;;;;;;;-1:-1:-1;1317:238:113;;;;;;;;;;;;;;;;;;;;;;;:::i;1561:491::-;1681:14;1709:4;;1698:27;;;;;;;;;;-1:-1:-1;1698:27:113;;;;-1:-1:-1;1755:1:113;1740:16;;1736:310;;;1792:10;1779:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1779:33:113;1772:97;;;;;;:54;:97;;;;;;;1835:10;1772:97;;;;;;;;;;;;:54;;;;;;;:97;;;;;1779:33;;1772:97;;;;;;;-1:-1:-1;1772:54:113;:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1736:310:113;;-1:-1:-1;1736:310:113;;1922:1;1907:12;:16;1900:24;;;;1958:10;1945:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1945:33:113;1938:97;;;;;;:54;:97;;;;;;;2001:10;1938:97;;;;;;;;;;;;:54;;;;;;;:97;;;;;1945:33;;1938:97;;;;;;;-1:-1:-1;1938:54:113;:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1736:310:113;1561:491;;;;;:::o;593:234::-;728:4;715:23;;;739:9;750:4;756:20;:9;:18;:20::i;:::-;778:17;808:10;797:22;;;;;;;;;;;;;;;;;;;;;;;;;;;715:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;593:234:113:o;833:237::-;969:4;956:23;;;980:9;991:4;998:21;:10;:19;:21::i;:::-;997:22;;1021:17;1051:10;1040:22;;;;;;;;;;;;;;;;;;;;;;;;;;;956:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1076:235;1211:4;1198:23;;;1222:9;1233:5;1240:20;:9;:18;:20::i;1317:238::-;1453:4;1440:23;;;1464:9;1475:5;1483:21;:10;924:123:17;976:8;1008;1004:1;:12;996:21;;;;;;-1:-1:-1;1038:1:17;924:123::o"},"methodIdentifiers":{"astraCLSwapCallback(int256,int256,bytes)":"11c17848","swap0ForExact1(address,uint256,address,uint160)":"bac7bf78","swap1ForExact0(address,uint256,address,uint160)":"f603482c","swapExact0For1(address,uint256,address,uint160)":"6dfc0ddb","swapExact1For0(address,uint256,address,uint160)":"e2be9109"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"astraCLSwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swap0ForExact1\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swap1ForExact0\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swapExact0For1\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swapExact1For0\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a AstraCLPool deployed by the canonical AstraCLFactory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IAstraCLPoolActions#swap call\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"astraCLSwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IAstraCLPool#swap.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TestUniswapV3Callee.sol\":\"TestAstraCLCallee\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/callback/IAstraCLSwapCallback.sol\":{\"keccak256\":\"0xaa82f63f0c930e51d6aaae0d59e7bf3ef5b32371ac0549f6e07bfcab5b4dcb16\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://73419af0b4f35f02c3b89d387d6ac46041637a7133e249de617103b7567bf4c4\",\"dweb:/ipfs/QmTfwEX1dCoUUUMaMFzDnqDcFXihHQnEG1fbkBFpidRs8o\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"@airdao/astra-cl-core/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0xd4c1c1b67f946b077d7c52a158113763a89a210fc2927b8491055a962ecd18c0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5344400c74320ca8dbe19241db7ff49babbd6c875c1b561c79d6e4315a9fb5f9\",\"dweb:/ipfs/QmRKCNTbkovxK1WvejXZr3iAHhGN97ZT1yWGsWCJFkrT5X\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"contracts/test/TestUniswapV3Callee.sol\":{\"keccak256\":\"0x3ba535803dcf7afc4d691cb2824ebebea00e7a51245516808e2039c984ac17ee\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://80a92f459ef9514667b940556470fc2308fcdfe22ca6c404c334e36373f4bc0b\",\"dweb:/ipfs/QmXt8vns5hH9fRAvzZz4HQjtJvmmcnmwiknBziAL7XSEJ2\"]}},\"version\":1}"}},"contracts/test/TickLensTest.sol":{"TickLensTest":{"abi":[{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"int16","name":"tickBitmapIndex","type":"int16"}],"name":"getGasCostOfGetPopulatedTicksInWord","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"int16","name":"tickBitmapIndex","type":"int16"}],"name":"getPopulatedTicksInWord","outputs":[{"components":[{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"int128","name":"liquidityNet","type":"int128"},{"internalType":"uint128","name":"liquidityGross","type":"uint128"}],"internalType":"struct ITickLens.PopulatedTick[]","name":"populatedTicks","type":"tuple[]"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506105b8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063351fb4781461003b578063f0c2e7bc14610064575b600080fd5b61004e6100493660046103c2565b610084565b60405161005b91906104f0565b60405180910390f35b6100776100723660046103c2565b610353565b60405161005b919061057d565b606060008373ffffffffffffffffffffffffffffffffffffffff16635339c296846040518263ffffffff1660e01b81526004016100c19190610561565b60206040518083038186803b1580156100d957600080fd5b505afa1580156100ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011191906104d8565b90506000805b61010081101561013b576001811b831615610133576001909101905b600101610117565b5060008573ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561018457600080fd5b505afa158015610198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101bc9190610400565b90508167ffffffffffffffff811180156101d557600080fd5b5060405190808252806020026020018201604052801561020f57816020015b6101fc61036e565b8152602001906001900390816101f45790505b50935060005b610100811015610349576001811b841615610341576040517ff30dba93000000000000000000000000000000000000000000000000000000008152600187900b60020b60081b8201830290600090819073ffffffffffffffffffffffffffffffffffffffff8b169063f30dba939061029190869060040161056f565b6101006040518083038186803b1580156102aa57600080fd5b505afa1580156102be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e29190610428565b5050505050509150915060405180606001604052808460020b815260200182600f0b8152602001836fffffffffffffffffffffffffffffffff168152508887600190039750878151811061033257fe5b60200260200101819052505050505b600101610215565b5050505092915050565b6000805a90506103638484610084565b505a90039392505050565b604080516060810182526000808252602082018190529181019190915290565b8051801515811461039e57600080fd5b919050565b805161039e81610586565b805163ffffffff8116811461039e57600080fd5b600080604083850312156103d4578182fd5b82356103df81610586565b91506020830135600181900b81146103f5578182fd5b809150509250929050565b600060208284031215610411578081fd5b81518060020b8114610421578182fd5b9392505050565b600080600080600080600080610100898b031215610444578384fd5b88516fffffffffffffffffffffffffffffffff81168114610463578485fd5b80985050602089015180600f0b811461047a578485fd5b80975050604089015195506060890151945060808901518060060b811461049f578485fd5b93506104ad60a08a016103a3565b92506104bb60c08a016103ae565b91506104c960e08a0161038e565b90509295985092959890939650565b6000602082840312156104e9578081fd5b5051919050565b602080825282518282018190526000919060409081850190868401855b82811015610554578151805160020b855286810151600f0b878601528501516fffffffffffffffffffffffffffffffff16858501526060909301929085019060010161050d565b5091979650505050505050565b60019190910b815260200190565b60029190910b815260200190565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff811681146105a857600080fd5b5056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5B8 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x351FB478 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xF0C2E7BC EQ PUSH2 0x64 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C2 JUMP JUMPDEST PUSH2 0x84 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x4F0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x77 PUSH2 0x72 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C2 JUMP JUMPDEST PUSH2 0x353 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x57D JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5339C296 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC1 SWAP2 SWAP1 PUSH2 0x561 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x111 SWAP2 SWAP1 PUSH2 0x4D8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x13B JUMPI PUSH1 0x1 DUP2 SHL DUP4 AND ISZERO PUSH2 0x133 JUMPI PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x1 ADD PUSH2 0x117 JUMP JUMPDEST POP PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x184 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x198 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BC SWAP2 SWAP1 PUSH2 0x400 JUMP JUMPDEST SWAP1 POP DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x20F JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1FC PUSH2 0x36E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1F4 JUMPI SWAP1 POP JUMPDEST POP SWAP4 POP PUSH1 0x0 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x349 JUMPI PUSH1 0x1 DUP2 SHL DUP5 AND ISZERO PUSH2 0x341 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF30DBA9300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 DUP8 SWAP1 SIGNEXTEND PUSH1 0x2 SIGNEXTEND PUSH1 0x8 SHL DUP3 ADD DUP4 MUL SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP1 PUSH4 0xF30DBA93 SWAP1 PUSH2 0x291 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x56F JUMP JUMPDEST PUSH2 0x100 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x428 JUMP JUMPDEST POP POP POP POP POP POP SWAP2 POP SWAP2 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP9 DUP8 PUSH1 0x1 SWAP1 SUB SWAP8 POP DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x332 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x215 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x363 DUP5 DUP5 PUSH2 0x84 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x39E DUP2 PUSH2 0x586 JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3DF DUP2 PUSH2 0x586 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x3F5 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x411 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x421 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x444 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x463 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 SWAP9 POP POP PUSH1 0x20 DUP10 ADD MLOAD DUP1 PUSH1 0xF SIGNEXTEND DUP2 EQ PUSH2 0x47A JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 SWAP8 POP POP PUSH1 0x40 DUP10 ADD MLOAD SWAP6 POP PUSH1 0x60 DUP10 ADD MLOAD SWAP5 POP PUSH1 0x80 DUP10 ADD MLOAD DUP1 PUSH1 0x6 SIGNEXTEND DUP2 EQ PUSH2 0x49F JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP4 POP PUSH2 0x4AD PUSH1 0xA0 DUP11 ADD PUSH2 0x3A3 JUMP JUMPDEST SWAP3 POP PUSH2 0x4BB PUSH1 0xC0 DUP11 ADD PUSH2 0x3AE JUMP JUMPDEST SWAP2 POP PUSH2 0x4C9 PUSH1 0xE0 DUP11 ADD PUSH2 0x38E JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4E9 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x554 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH1 0x2 SIGNEXTEND DUP6 MSTORE DUP7 DUP2 ADD MLOAD PUSH1 0xF SIGNEXTEND DUP8 DUP7 ADD MSTORE DUP6 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 ADD MSTORE PUSH1 0x60 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x50D JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP2 SWAP1 SWAP2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"276:296:114:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4169:115","statements":[{"nodeType":"YulBlock","src":"6:3:115","statements":[]},{"body":{"nodeType":"YulBlock","src":"73:107:115","statements":[{"nodeType":"YulAssignment","src":"83:22:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"98:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"92:5:115"},"nodeType":"YulFunctionCall","src":"92:13:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"83:5:115"}]},{"body":{"nodeType":"YulBlock","src":"158:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"167:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"170:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"160:6:115"},"nodeType":"YulFunctionCall","src":"160:12:115"},"nodeType":"YulExpressionStatement","src":"160:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"127:5:115"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"148:5:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"141:6:115"},"nodeType":"YulFunctionCall","src":"141:13:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"134:6:115"},"nodeType":"YulFunctionCall","src":"134:21:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"124:2:115"},"nodeType":"YulFunctionCall","src":"124:32:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"117:6:115"},"nodeType":"YulFunctionCall","src":"117:40:115"},"nodeType":"YulIf","src":"114:2:115"}]},"name":"abi_decode_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"52:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"63:5:115","type":""}],"src":"14:166:115"},{"body":{"nodeType":"YulBlock","src":"247:80:115","statements":[{"nodeType":"YulAssignment","src":"257:22:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"272:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"266:5:115"},"nodeType":"YulFunctionCall","src":"266:13:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"257:5:115"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"315:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"288:26:115"},"nodeType":"YulFunctionCall","src":"288:33:115"},"nodeType":"YulExpressionStatement","src":"288:33:115"}]},"name":"abi_decode_t_uint160_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"226:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"237:5:115","type":""}],"src":"185:142:115"},{"body":{"nodeType":"YulBlock","src":"393:108:115","statements":[{"nodeType":"YulAssignment","src":"403:22:115","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"418:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"412:5:115"},"nodeType":"YulFunctionCall","src":"412:13:115"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"403:5:115"}]},{"body":{"nodeType":"YulBlock","src":"479:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"488:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"491:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"481:6:115"},"nodeType":"YulFunctionCall","src":"481:12:115"},"nodeType":"YulExpressionStatement","src":"481:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"447:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"458:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"465:10:115","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"454:3:115"},"nodeType":"YulFunctionCall","src":"454:22:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"444:2:115"},"nodeType":"YulFunctionCall","src":"444:33:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"437:6:115"},"nodeType":"YulFunctionCall","src":"437:41:115"},"nodeType":"YulIf","src":"434:2:115"}]},"name":"abi_decode_t_uint32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"372:6:115","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"383:5:115","type":""}],"src":"332:169:115"},{"body":{"nodeType":"YulBlock","src":"591:353:115","statements":[{"body":{"nodeType":"YulBlock","src":"637:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"646:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"654:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"639:6:115"},"nodeType":"YulFunctionCall","src":"639:22:115"},"nodeType":"YulExpressionStatement","src":"639:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"612:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"621:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"608:3:115"},"nodeType":"YulFunctionCall","src":"608:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"633:2:115","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"604:3:115"},"nodeType":"YulFunctionCall","src":"604:32:115"},"nodeType":"YulIf","src":"601:2:115"},{"nodeType":"YulVariableDeclaration","src":"672:36:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"698:9:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"685:12:115"},"nodeType":"YulFunctionCall","src":"685:23:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"676:5:115","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"744:5:115"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"717:26:115"},"nodeType":"YulFunctionCall","src":"717:33:115"},"nodeType":"YulExpressionStatement","src":"717:33:115"},{"nodeType":"YulAssignment","src":"759:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"769:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"759:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"783:47:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"815:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"826:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"811:3:115"},"nodeType":"YulFunctionCall","src":"811:18:115"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"798:12:115"},"nodeType":"YulFunctionCall","src":"798:32:115"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"787:7:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"886:26:115","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"895:6:115"},{"name":"value1","nodeType":"YulIdentifier","src":"903:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"888:6:115"},"nodeType":"YulFunctionCall","src":"888:22:115"},"nodeType":"YulExpressionStatement","src":"888:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"852:7:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"872:1:115","type":"","value":"1"},{"name":"value_1","nodeType":"YulIdentifier","src":"875:7:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"861:10:115"},"nodeType":"YulFunctionCall","src":"861:22:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"849:2:115"},"nodeType":"YulFunctionCall","src":"849:35:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"842:6:115"},"nodeType":"YulFunctionCall","src":"842:43:115"},"nodeType":"YulIf","src":"839:2:115"},{"nodeType":"YulAssignment","src":"921:17:115","value":{"name":"value_1","nodeType":"YulIdentifier","src":"931:7:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"921:6:115"}]}]},"name":"abi_decode_tuple_t_addresst_int16","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"549:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"560:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"572:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"580:6:115","type":""}],"src":"506:438:115"},{"body":{"nodeType":"YulBlock","src":"1028:218:115","statements":[{"body":{"nodeType":"YulBlock","src":"1074:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1083:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"1091:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1076:6:115"},"nodeType":"YulFunctionCall","src":"1076:22:115"},"nodeType":"YulExpressionStatement","src":"1076:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1049:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"1058:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1045:3:115"},"nodeType":"YulFunctionCall","src":"1045:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"1070:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1041:3:115"},"nodeType":"YulFunctionCall","src":"1041:32:115"},"nodeType":"YulIf","src":"1038:2:115"},{"nodeType":"YulVariableDeclaration","src":"1109:29:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1128:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1122:5:115"},"nodeType":"YulFunctionCall","src":"1122:16:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1113:5:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"1190:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1199:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"1207:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1192:6:115"},"nodeType":"YulFunctionCall","src":"1192:22:115"},"nodeType":"YulExpressionStatement","src":"1192:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1160:5:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1178:1:115","type":"","value":"2"},{"name":"value","nodeType":"YulIdentifier","src":"1181:5:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"1167:10:115"},"nodeType":"YulFunctionCall","src":"1167:20:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1157:2:115"},"nodeType":"YulFunctionCall","src":"1157:31:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1150:6:115"},"nodeType":"YulFunctionCall","src":"1150:39:115"},"nodeType":"YulIf","src":"1147:2:115"},{"nodeType":"YulAssignment","src":"1225:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"1235:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1225:6:115"}]}]},"name":"abi_decode_tuple_t_int24_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"994:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1005:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1017:6:115","type":""}],"src":"949:297:115"},{"body":{"nodeType":"YulBlock","src":"1444:858:115","statements":[{"body":{"nodeType":"YulBlock","src":"1491:26:115","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1500:6:115"},{"name":"value4","nodeType":"YulIdentifier","src":"1508:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1493:6:115"},"nodeType":"YulFunctionCall","src":"1493:22:115"},"nodeType":"YulExpressionStatement","src":"1493:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1465:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"1474:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1461:3:115"},"nodeType":"YulFunctionCall","src":"1461:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"1486:3:115","type":"","value":"256"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1457:3:115"},"nodeType":"YulFunctionCall","src":"1457:33:115"},"nodeType":"YulIf","src":"1454:2:115"},{"nodeType":"YulVariableDeclaration","src":"1526:29:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1545:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1539:5:115"},"nodeType":"YulFunctionCall","src":"1539:16:115"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1530:5:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"1633:26:115","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1642:6:115"},{"name":"value4","nodeType":"YulIdentifier","src":"1650:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1635:6:115"},"nodeType":"YulFunctionCall","src":"1635:22:115"},"nodeType":"YulExpressionStatement","src":"1635:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1577:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1588:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"1595:34:115","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1584:3:115"},"nodeType":"YulFunctionCall","src":"1584:46:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1574:2:115"},"nodeType":"YulFunctionCall","src":"1574:57:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1567:6:115"},"nodeType":"YulFunctionCall","src":"1567:65:115"},"nodeType":"YulIf","src":"1564:2:115"},{"nodeType":"YulAssignment","src":"1668:15:115","value":{"name":"value","nodeType":"YulIdentifier","src":"1678:5:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1668:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"1692:40:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1717:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1728:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1713:3:115"},"nodeType":"YulFunctionCall","src":"1713:18:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1707:5:115"},"nodeType":"YulFunctionCall","src":"1707:25:115"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1696:7:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"1789:26:115","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1798:6:115"},{"name":"value4","nodeType":"YulIdentifier","src":"1806:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1791:6:115"},"nodeType":"YulFunctionCall","src":"1791:22:115"},"nodeType":"YulExpressionStatement","src":"1791:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1754:7:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1774:2:115","type":"","value":"15"},{"name":"value_1","nodeType":"YulIdentifier","src":"1778:7:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"1763:10:115"},"nodeType":"YulFunctionCall","src":"1763:23:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1751:2:115"},"nodeType":"YulFunctionCall","src":"1751:36:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1744:6:115"},"nodeType":"YulFunctionCall","src":"1744:44:115"},"nodeType":"YulIf","src":"1741:2:115"},{"nodeType":"YulAssignment","src":"1824:17:115","value":{"name":"value_1","nodeType":"YulIdentifier","src":"1834:7:115"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1824:6:115"}]},{"nodeType":"YulAssignment","src":"1850:35:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1870:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1881:2:115","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1866:3:115"},"nodeType":"YulFunctionCall","src":"1866:18:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1860:5:115"},"nodeType":"YulFunctionCall","src":"1860:25:115"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1850:6:115"}]},{"nodeType":"YulAssignment","src":"1894:35:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1914:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1925:2:115","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1910:3:115"},"nodeType":"YulFunctionCall","src":"1910:18:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1904:5:115"},"nodeType":"YulFunctionCall","src":"1904:25:115"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1894:6:115"}]},{"nodeType":"YulVariableDeclaration","src":"1938:41:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1963:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"1974:3:115","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1959:3:115"},"nodeType":"YulFunctionCall","src":"1959:19:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1953:5:115"},"nodeType":"YulFunctionCall","src":"1953:26:115"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"1942:7:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"2035:26:115","statements":[{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"2044:6:115"},{"name":"value4","nodeType":"YulIdentifier","src":"2052:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2037:6:115"},"nodeType":"YulFunctionCall","src":"2037:22:115"},"nodeType":"YulExpressionStatement","src":"2037:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"2001:7:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2021:1:115","type":"","value":"6"},{"name":"value_2","nodeType":"YulIdentifier","src":"2024:7:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"2010:10:115"},"nodeType":"YulFunctionCall","src":"2010:22:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1998:2:115"},"nodeType":"YulFunctionCall","src":"1998:35:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1991:6:115"},"nodeType":"YulFunctionCall","src":"1991:43:115"},"nodeType":"YulIf","src":"1988:2:115"},{"nodeType":"YulAssignment","src":"2070:17:115","value":{"name":"value_2","nodeType":"YulIdentifier","src":"2080:7:115"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"2070:6:115"}]},{"nodeType":"YulAssignment","src":"2096:62:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2142:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2153:3:115","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2138:3:115"},"nodeType":"YulFunctionCall","src":"2138:19:115"}],"functionName":{"name":"abi_decode_t_uint160_fromMemory","nodeType":"YulIdentifier","src":"2106:31:115"},"nodeType":"YulFunctionCall","src":"2106:52:115"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"2096:6:115"}]},{"nodeType":"YulAssignment","src":"2167:61:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2212:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2223:3:115","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2208:3:115"},"nodeType":"YulFunctionCall","src":"2208:19:115"}],"functionName":{"name":"abi_decode_t_uint32_fromMemory","nodeType":"YulIdentifier","src":"2177:30:115"},"nodeType":"YulFunctionCall","src":"2177:51:115"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"2167:6:115"}]},{"nodeType":"YulAssignment","src":"2237:59:115","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2280:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"2291:3:115","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2276:3:115"},"nodeType":"YulFunctionCall","src":"2276:19:115"}],"functionName":{"name":"abi_decode_t_bool_fromMemory","nodeType":"YulIdentifier","src":"2247:28:115"},"nodeType":"YulFunctionCall","src":"2247:49:115"},"variableNames":[{"name":"value7","nodeType":"YulIdentifier","src":"2237:6:115"}]}]},"name":"abi_decode_tuple_t_uint128t_int128t_uint256t_uint256t_int56t_uint160t_uint32t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1354:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1365:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1377:6:115","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1385:6:115","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1393:6:115","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1401:6:115","type":""},{"name":"value4","nodeType":"YulTypedName","src":"1409:6:115","type":""},{"name":"value5","nodeType":"YulTypedName","src":"1417:6:115","type":""},{"name":"value6","nodeType":"YulTypedName","src":"1425:6:115","type":""},{"name":"value7","nodeType":"YulTypedName","src":"1433:6:115","type":""}],"src":"1251:1051:115"},{"body":{"nodeType":"YulBlock","src":"2388:113:115","statements":[{"body":{"nodeType":"YulBlock","src":"2434:26:115","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2443:6:115"},{"name":"value0","nodeType":"YulIdentifier","src":"2451:6:115"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2436:6:115"},"nodeType":"YulFunctionCall","src":"2436:22:115"},"nodeType":"YulExpressionStatement","src":"2436:22:115"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2409:7:115"},{"name":"headStart","nodeType":"YulIdentifier","src":"2418:9:115"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2405:3:115"},"nodeType":"YulFunctionCall","src":"2405:23:115"},{"kind":"number","nodeType":"YulLiteral","src":"2430:2:115","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2401:3:115"},"nodeType":"YulFunctionCall","src":"2401:32:115"},"nodeType":"YulIf","src":"2398:2:115"},{"nodeType":"YulAssignment","src":"2469:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2485:9:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2479:5:115"},"nodeType":"YulFunctionCall","src":"2479:16:115"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2469:6:115"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2354:9:115","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2365:7:115","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2377:6:115","type":""}],"src":"2307:194:115"},{"body":{"nodeType":"YulBlock","src":"2721:717:115","statements":[{"nodeType":"YulVariableDeclaration","src":"2731:12:115","value":{"kind":"number","nodeType":"YulLiteral","src":"2741:2:115","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2735:2:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2752:32:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2770:9:115"},{"name":"_1","nodeType":"YulIdentifier","src":"2781:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2766:3:115"},"nodeType":"YulFunctionCall","src":"2766:18:115"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"2756:6:115","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2800:9:115"},{"name":"_1","nodeType":"YulIdentifier","src":"2811:2:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2793:6:115"},"nodeType":"YulFunctionCall","src":"2793:21:115"},"nodeType":"YulExpressionStatement","src":"2793:21:115"},{"nodeType":"YulVariableDeclaration","src":"2823:17:115","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"2834:6:115"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"2827:3:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2849:27:115","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2869:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2863:5:115"},"nodeType":"YulFunctionCall","src":"2863:13:115"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2853:6:115","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"2892:6:115"},{"name":"length","nodeType":"YulIdentifier","src":"2900:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2885:6:115"},"nodeType":"YulFunctionCall","src":"2885:22:115"},"nodeType":"YulExpressionStatement","src":"2885:22:115"},{"nodeType":"YulVariableDeclaration","src":"2916:12:115","value":{"kind":"number","nodeType":"YulLiteral","src":"2926:2:115","type":"","value":"64"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2920:2:115","type":""}]},{"nodeType":"YulAssignment","src":"2937:25:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2948:9:115"},{"name":"_2","nodeType":"YulIdentifier","src":"2959:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2944:3:115"},"nodeType":"YulFunctionCall","src":"2944:18:115"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2937:3:115"}]},{"nodeType":"YulVariableDeclaration","src":"2971:29:115","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2989:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"2997:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2985:3:115"},"nodeType":"YulFunctionCall","src":"2985:15:115"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"2975:6:115","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3009:13:115","value":{"name":"tail","nodeType":"YulIdentifier","src":"3018:4:115"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3013:1:115","type":""}]},{"body":{"nodeType":"YulBlock","src":"3080:332:115","statements":[{"nodeType":"YulVariableDeclaration","src":"3094:23:115","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3110:6:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3104:5:115"},"nodeType":"YulFunctionCall","src":"3104:13:115"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"3098:2:115","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3137:3:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3153:1:115","type":"","value":"2"},{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3162:2:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3156:5:115"},"nodeType":"YulFunctionCall","src":"3156:9:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"3142:10:115"},"nodeType":"YulFunctionCall","src":"3142:24:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3130:6:115"},"nodeType":"YulFunctionCall","src":"3130:37:115"},"nodeType":"YulExpressionStatement","src":"3130:37:115"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3191:3:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3196:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3187:3:115"},"nodeType":"YulFunctionCall","src":"3187:12:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3212:2:115","type":"","value":"15"},{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3226:2:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3230:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3222:3:115"},"nodeType":"YulFunctionCall","src":"3222:11:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3216:5:115"},"nodeType":"YulFunctionCall","src":"3216:18:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"3201:10:115"},"nodeType":"YulFunctionCall","src":"3201:34:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3180:6:115"},"nodeType":"YulFunctionCall","src":"3180:56:115"},"nodeType":"YulExpressionStatement","src":"3180:56:115"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3260:3:115"},{"name":"_2","nodeType":"YulIdentifier","src":"3265:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3256:3:115"},"nodeType":"YulFunctionCall","src":"3256:12:115"},{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3284:2:115"},{"name":"_2","nodeType":"YulIdentifier","src":"3288:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3280:3:115"},"nodeType":"YulFunctionCall","src":"3280:11:115"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3274:5:115"},"nodeType":"YulFunctionCall","src":"3274:18:115"},{"kind":"number","nodeType":"YulLiteral","src":"3294:34:115","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3270:3:115"},"nodeType":"YulFunctionCall","src":"3270:59:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3249:6:115"},"nodeType":"YulFunctionCall","src":"3249:81:115"},"nodeType":"YulExpressionStatement","src":"3249:81:115"},{"nodeType":"YulAssignment","src":"3343:21:115","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3354:3:115"},{"kind":"number","nodeType":"YulLiteral","src":"3359:4:115","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3350:3:115"},"nodeType":"YulFunctionCall","src":"3350:14:115"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3343:3:115"}]},{"nodeType":"YulAssignment","src":"3377:25:115","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3391:6:115"},{"name":"_1","nodeType":"YulIdentifier","src":"3399:2:115"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3387:3:115"},"nodeType":"YulFunctionCall","src":"3387:15:115"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3377:6:115"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3042:1:115"},{"name":"length","nodeType":"YulIdentifier","src":"3045:6:115"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3039:2:115"},"nodeType":"YulFunctionCall","src":"3039:13:115"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3053:18:115","statements":[{"nodeType":"YulAssignment","src":"3055:14:115","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3064:1:115"},{"kind":"number","nodeType":"YulLiteral","src":"3067:1:115","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3060:3:115"},"nodeType":"YulFunctionCall","src":"3060:9:115"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3055:1:115"}]}]},"pre":{"nodeType":"YulBlock","src":"3035:3:115","statements":[]},"src":"3031:381:115"},{"nodeType":"YulAssignment","src":"3421:11:115","value":{"name":"pos","nodeType":"YulIdentifier","src":"3429:3:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3421:4:115"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_PopulatedTick_$10152_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_PopulatedTick_$10152_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2690:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2701:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2712:4:115","type":""}],"src":"2506:932:115"},{"body":{"nodeType":"YulBlock","src":"3540:91:115","statements":[{"nodeType":"YulAssignment","src":"3550:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3562:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"3573:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3558:3:115"},"nodeType":"YulFunctionCall","src":"3558:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3550:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3592:9:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3614:1:115","type":"","value":"1"},{"name":"value0","nodeType":"YulIdentifier","src":"3617:6:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"3603:10:115"},"nodeType":"YulFunctionCall","src":"3603:21:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3585:6:115"},"nodeType":"YulFunctionCall","src":"3585:40:115"},"nodeType":"YulExpressionStatement","src":"3585:40:115"}]},"name":"abi_encode_tuple_t_int16__to_t_int16__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3509:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3520:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3531:4:115","type":""}],"src":"3443:188:115"},{"body":{"nodeType":"YulBlock","src":"3733:91:115","statements":[{"nodeType":"YulAssignment","src":"3743:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3755:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"3766:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3751:3:115"},"nodeType":"YulFunctionCall","src":"3751:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3743:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3785:9:115"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3807:1:115","type":"","value":"2"},{"name":"value0","nodeType":"YulIdentifier","src":"3810:6:115"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"3796:10:115"},"nodeType":"YulFunctionCall","src":"3796:21:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3778:6:115"},"nodeType":"YulFunctionCall","src":"3778:40:115"},"nodeType":"YulExpressionStatement","src":"3778:40:115"}]},"name":"abi_encode_tuple_t_int24__to_t_int24__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3702:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3713:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3724:4:115","type":""}],"src":"3636:188:115"},{"body":{"nodeType":"YulBlock","src":"3930:76:115","statements":[{"nodeType":"YulAssignment","src":"3940:26:115","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3952:9:115"},{"kind":"number","nodeType":"YulLiteral","src":"3963:2:115","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3948:3:115"},"nodeType":"YulFunctionCall","src":"3948:18:115"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3940:4:115"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3982:9:115"},{"name":"value0","nodeType":"YulIdentifier","src":"3993:6:115"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3975:6:115"},"nodeType":"YulFunctionCall","src":"3975:25:115"},"nodeType":"YulExpressionStatement","src":"3975:25:115"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3899:9:115","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3910:6:115","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3921:4:115","type":""}],"src":"3829:177:115"},{"body":{"nodeType":"YulBlock","src":"4058:109:115","statements":[{"body":{"nodeType":"YulBlock","src":"4145:16:115","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4154:1:115","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4157:1:115","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4147:6:115"},"nodeType":"YulFunctionCall","src":"4147:12:115"},"nodeType":"YulExpressionStatement","src":"4147:12:115"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4081:5:115"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4092:5:115"},{"kind":"number","nodeType":"YulLiteral","src":"4099:42:115","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4088:3:115"},"nodeType":"YulFunctionCall","src":"4088:54:115"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4078:2:115"},"nodeType":"YulFunctionCall","src":"4078:65:115"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4071:6:115"},"nodeType":"YulFunctionCall","src":"4071:73:115"},"nodeType":"YulIf","src":"4068:2:115"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4047:5:115","type":""}],"src":"4011:156:115"}]},"contents":"{\n    { }\n    function abi_decode_t_bool_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_t_uint160_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        validator_revert_t_address(value)\n    }\n    function abi_decode_t_uint32_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_int16(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, signextend(1, value_1))) { revert(value1, value1) }\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_int24_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        if iszero(eq(value, signextend(2, value))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint128t_int128t_uint256t_uint256t_int56t_uint160t_uint32t_bool_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n    {\n        if slt(sub(dataEnd, headStart), 256) { revert(value4, value4) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffff))) { revert(value4, value4) }\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        if iszero(eq(value_1, signextend(15, value_1))) { revert(value4, value4) }\n        value1 := value_1\n        value2 := mload(add(headStart, 64))\n        value3 := mload(add(headStart, 96))\n        let value_2 := mload(add(headStart, 128))\n        if iszero(eq(value_2, signextend(6, value_2))) { revert(value4, value4) }\n        value4 := value_2\n        value5 := abi_decode_t_uint160_fromMemory(add(headStart, 160))\n        value6 := abi_decode_t_uint32_fromMemory(add(headStart, 192))\n        value7 := abi_decode_t_bool_fromMemory(add(headStart, 224))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_array$_t_struct$_PopulatedTick_$10152_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_PopulatedTick_$10152_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        let _2 := 64\n        pos := add(headStart, _2)\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let _3 := mload(srcPtr)\n            mstore(pos, signextend(2, mload(_3)))\n            mstore(add(pos, _1), signextend(15, mload(add(_3, _1))))\n            mstore(add(pos, _2), and(mload(add(_3, _2)), 0xffffffffffffffffffffffffffffffff))\n            pos := add(pos, 0x60)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_int16__to_t_int16__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, signextend(1, value0))\n    }\n    function abi_encode_tuple_t_int24__to_t_int24__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, signextend(2, value0))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function validator_revert_t_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n}","id":115,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c8063351fb4781461003b578063f0c2e7bc14610064575b600080fd5b61004e6100493660046103c2565b610084565b60405161005b91906104f0565b60405180910390f35b6100776100723660046103c2565b610353565b60405161005b919061057d565b606060008373ffffffffffffffffffffffffffffffffffffffff16635339c296846040518263ffffffff1660e01b81526004016100c19190610561565b60206040518083038186803b1580156100d957600080fd5b505afa1580156100ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011191906104d8565b90506000805b61010081101561013b576001811b831615610133576001909101905b600101610117565b5060008573ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561018457600080fd5b505afa158015610198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101bc9190610400565b90508167ffffffffffffffff811180156101d557600080fd5b5060405190808252806020026020018201604052801561020f57816020015b6101fc61036e565b8152602001906001900390816101f45790505b50935060005b610100811015610349576001811b841615610341576040517ff30dba93000000000000000000000000000000000000000000000000000000008152600187900b60020b60081b8201830290600090819073ffffffffffffffffffffffffffffffffffffffff8b169063f30dba939061029190869060040161056f565b6101006040518083038186803b1580156102aa57600080fd5b505afa1580156102be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e29190610428565b5050505050509150915060405180606001604052808460020b815260200182600f0b8152602001836fffffffffffffffffffffffffffffffff168152508887600190039750878151811061033257fe5b60200260200101819052505050505b600101610215565b5050505092915050565b6000805a90506103638484610084565b505a90039392505050565b604080516060810182526000808252602082018190529181019190915290565b8051801515811461039e57600080fd5b919050565b805161039e81610586565b805163ffffffff8116811461039e57600080fd5b600080604083850312156103d4578182fd5b82356103df81610586565b91506020830135600181900b81146103f5578182fd5b809150509250929050565b600060208284031215610411578081fd5b81518060020b8114610421578182fd5b9392505050565b600080600080600080600080610100898b031215610444578384fd5b88516fffffffffffffffffffffffffffffffff81168114610463578485fd5b80985050602089015180600f0b811461047a578485fd5b80975050604089015195506060890151945060808901518060060b811461049f578485fd5b93506104ad60a08a016103a3565b92506104bb60c08a016103ae565b91506104c960e08a0161038e565b90509295985092959890939650565b6000602082840312156104e9578081fd5b5051919050565b602080825282518282018190526000919060409081850190868401855b82811015610554578151805160020b855286810151600f0b878601528501516fffffffffffffffffffffffffffffffff16858501526060909301929085019060010161050d565b5091979650505050505050565b60019190910b815260200190565b60029190910b815260200190565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff811681146105a857600080fd5b5056fea164736f6c6343000706000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x351FB478 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xF0C2E7BC EQ PUSH2 0x64 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C2 JUMP JUMPDEST PUSH2 0x84 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x4F0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x77 PUSH2 0x72 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C2 JUMP JUMPDEST PUSH2 0x353 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x57D JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5339C296 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC1 SWAP2 SWAP1 PUSH2 0x561 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x111 SWAP2 SWAP1 PUSH2 0x4D8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x13B JUMPI PUSH1 0x1 DUP2 SHL DUP4 AND ISZERO PUSH2 0x133 JUMPI PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x1 ADD PUSH2 0x117 JUMP JUMPDEST POP PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0C93A7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x184 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x198 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BC SWAP2 SWAP1 PUSH2 0x400 JUMP JUMPDEST SWAP1 POP DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x20F JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1FC PUSH2 0x36E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1F4 JUMPI SWAP1 POP JUMPDEST POP SWAP4 POP PUSH1 0x0 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x349 JUMPI PUSH1 0x1 DUP2 SHL DUP5 AND ISZERO PUSH2 0x341 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF30DBA9300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 DUP8 SWAP1 SIGNEXTEND PUSH1 0x2 SIGNEXTEND PUSH1 0x8 SHL DUP3 ADD DUP4 MUL SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP1 PUSH4 0xF30DBA93 SWAP1 PUSH2 0x291 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x56F JUMP JUMPDEST PUSH2 0x100 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x428 JUMP JUMPDEST POP POP POP POP POP POP SWAP2 POP SWAP2 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0xF SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP9 DUP8 PUSH1 0x1 SWAP1 SUB SWAP8 POP DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x332 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x215 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x363 DUP5 DUP5 PUSH2 0x84 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x39E DUP2 PUSH2 0x586 JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3DF DUP2 PUSH2 0x586 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x3F5 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x411 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x421 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x444 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x463 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 SWAP9 POP POP PUSH1 0x20 DUP10 ADD MLOAD DUP1 PUSH1 0xF SIGNEXTEND DUP2 EQ PUSH2 0x47A JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 SWAP8 POP POP PUSH1 0x40 DUP10 ADD MLOAD SWAP6 POP PUSH1 0x60 DUP10 ADD MLOAD SWAP5 POP PUSH1 0x80 DUP10 ADD MLOAD DUP1 PUSH1 0x6 SIGNEXTEND DUP2 EQ PUSH2 0x49F JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP4 POP PUSH2 0x4AD PUSH1 0xA0 DUP11 ADD PUSH2 0x3A3 JUMP JUMPDEST SWAP3 POP PUSH2 0x4BB PUSH1 0xC0 DUP11 ADD PUSH2 0x3AE JUMP JUMPDEST SWAP2 POP PUSH2 0x4C9 PUSH1 0xE0 DUP11 ADD PUSH2 0x38E JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4E9 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x554 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH1 0x2 SIGNEXTEND DUP6 MSTORE DUP7 DUP2 ADD MLOAD PUSH1 0xF SIGNEXTEND DUP8 DUP7 ADD MSTORE DUP6 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 ADD MSTORE PUSH1 0x60 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x50D JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP2 SWAP1 SWAP2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP SMOD MOD STOP EXP ","sourceMap":"276:296:114:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;351:1203:78;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;316:254:114;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;351:1203:78:-;473:37;546:14;576:4;563:29;;;593:15;563:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;546:63;-1:-1:-1;671:30:78;;711:110;735:3;731:1;:7;711:110;;;773:1;:6;;763:17;;:21;759:51;;786:24;;;;;759:51;740:3;;711:110;;;;868:17;901:4;888:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;868:52;;967:22;947:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;930:60;;1005:9;1000:548;1024:3;1020:1;:7;1000:548;;;1062:1;:6;;1052:17;;:21;1048:490;;1249:39;;;;;1117:22;;;;:27;;1143:1;1117:27;1116:40;;1115:56;;;1093:19;;;;1249:24;;;;;;:39;;1115:56;;1249:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1189:99;;;;;;;;;;1349:174;;;;;;;;1391:13;1349:174;;;;;;1440:12;1349:174;;;;;;1490:14;1349:174;;;;;1306:14;1321:24;;;;;;;1306:40;;;;;;;;;;;;;:217;;;;1048:490;;;;1029:3;;1000:548;;;;351:1203;;;;;;;:::o;316:254:114:-;421:7;440:17;460:9;440:29;;479:46;503:4;509:15;479:23;:46::i;:::-;;554:9;542:21;;;316:254;-1:-1:-1;;;316:254:114:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:166:115:-;92:13;;141;;134:21;124:32;;114:2;;170:1;167;160:12;114:2;73:107;;;:::o;185:142::-;266:13;;288:33;266:13;288:33;:::i;332:169::-;412:13;;465:10;454:22;;444:33;;434:2;;491:1;488;481:12;506:438;;;633:2;621:9;612:7;608:23;604:32;601:2;;;654:6;646;639:22;601:2;698:9;685:23;717:33;744:5;717:33;:::i;:::-;769:5;-1:-1:-1;826:2:115;811:18;;798:32;872:1;861:22;;;849:35;;839:2;;903:6;895;888:22;839:2;931:7;921:17;;;591:353;;;;;:::o;949:297::-;;1070:2;1058:9;1049:7;1045:23;1041:32;1038:2;;;1091:6;1083;1076:22;1038:2;1128:9;1122:16;1181:5;1178:1;1167:20;1160:5;1157:31;1147:2;;1207:6;1199;1192:22;1147:2;1235:5;1028:218;-1:-1:-1;;;1028:218:115:o;1251:1051::-;;;;;;;;;1486:3;1474:9;1465:7;1461:23;1457:33;1454:2;;;1508:6;1500;1493:22;1454:2;1545:9;1539:16;1595:34;1588:5;1584:46;1577:5;1574:57;1564:2;;1650:6;1642;1635:22;1564:2;1678:5;1668:15;;;1728:2;1717:9;1713:18;1707:25;1778:7;1774:2;1763:23;1754:7;1751:36;1741:2;;1806:6;1798;1791:22;1741:2;1834:7;1824:17;;;1881:2;1870:9;1866:18;1860:25;1850:35;;1925:2;1914:9;1910:18;1904:25;1894:35;;1974:3;1963:9;1959:19;1953:26;2024:7;2021:1;2010:22;2001:7;1998:35;1988:2;;2052:6;2044;2037:22;1988:2;2080:7;-1:-1:-1;2106:52:115;2153:3;2138:19;;2106:52;:::i;:::-;2096:62;;2177:51;2223:3;2212:9;2208:19;2177:51;:::i;:::-;2167:61;;2247:49;2291:3;2280:9;2276:19;2247:49;:::i;:::-;2237:59;;1444:858;;;;;;;;;;;:::o;2307:194::-;;2430:2;2418:9;2409:7;2405:23;2401:32;2398:2;;;2451:6;2443;2436:22;2398:2;-1:-1:-1;2479:16:115;;2388:113;-1:-1:-1;2388:113:115:o;2506:932::-;2741:2;2793:21;;;2863:13;;2766:18;;;2885:22;;;2506:932;;2741:2;2926;;2944:18;;;;2985:15;;;2506:932;3031:381;3045:6;3042:1;3039:13;3031:381;;;3104:13;;3156:9;;3153:1;3142:24;3130:37;;3222:11;;;3216:18;3212:2;3201:34;3187:12;;;3180:56;3280:11;;3274:18;3294:34;3270:59;3256:12;;;3249:81;3359:4;3350:14;;;;3387:15;;;;3067:1;3060:9;3031:381;;;-1:-1:-1;3429:3:115;;2721:717;-1:-1:-1;;;;;;;2721:717:115:o;3443:188::-;3614:1;3603:21;;;;3585:40;;3573:2;3558:18;;3540:91::o;3636:188::-;3807:1;3796:21;;;;3778:40;;3766:2;3751:18;;3733:91::o;3829:177::-;3975:25;;;3963:2;3948:18;;3930:76::o;4011:156::-;4099:42;4092:5;4088:54;4081:5;4078:65;4068:2;;4157:1;4154;4147:12;4068:2;4058:109;:::o"},"methodIdentifiers":{"getGasCostOfGetPopulatedTicksInWord(address,int16)":"f0c2e7bc","getPopulatedTicksInWord(address,int16)":"351fb478"}},"metadata":"{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"int16\",\"name\":\"tickBitmapIndex\",\"type\":\"int16\"}],\"name\":\"getGasCostOfGetPopulatedTicksInWord\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"int16\",\"name\":\"tickBitmapIndex\",\"type\":\"int16\"}],\"name\":\"getPopulatedTicksInWord\",\"outputs\":[{\"components\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"internalType\":\"uint128\",\"name\":\"liquidityGross\",\"type\":\"uint128\"}],\"internalType\":\"struct ITickLens.PopulatedTick[]\",\"name\":\"populatedTicks\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getPopulatedTicksInWord(address,int16)\":{\"params\":{\"pool\":\"The address of the pool for which to fetch populated tick data\",\"tickBitmapIndex\":\"The index of the word in the tick bitmap for which to parse the bitmap and fetch all the populated ticks\"},\"returns\":{\"populatedTicks\":\"An array of tick data for the given word in the tick bitmap\"}}},\"title\":\"Tick Lens contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getPopulatedTicksInWord(address,int16)\":{\"notice\":\"Get all the tick data for the populated ticks from a word of the tick bitmap of a pool\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TickLensTest.sol\":\"TickLensTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@airdao/astra-cl-core/contracts/interfaces/IAstraCLPool.sol\":{\"keccak256\":\"0xd86f876af8f4253bfc7564ae46cfad2d09d83290f4a6a4b133a44740e73d2640\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bde092b2aba1f27df9701ff9ed1ec7370fb443b0373be6f468ae57dd1e433273\",\"dweb:/ipfs/Qmd3M893Bosob7PVUqC33hcoD2XYHTVFtjgAPhRQibWkFe\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolActions.sol\":{\"keccak256\":\"0x29e91b8993d8df671a62aa4c3a861bac77990d2ac9f7b8ba883eacfb271964f0\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d520d78a7d6ed69f53b72fcfea1267fd1d9fa517df6a4138df996f931f8161d8\",\"dweb:/ipfs/QmcRtZcqFBjs163wJxFZ9A4JE6CyR4ySSRqBcDe4KsL4dD\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolDerivedState.sol\":{\"keccak256\":\"0x17b2c352ea0e1b5c8137c6f1c3aef7ef3b02ac95a6d9a7e165c573c45518748c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://45af49340294535c5e28f80df0f3a2927a8a8f8b2d8a656197c36734ba018659\",\"dweb:/ipfs/QmYXJZArrZF93TaUMibWe8GDQEqAp4yP7oDMDjTqkaPzVW\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolEvents.sol\":{\"keccak256\":\"0x33715230197f3b2e24a7d76c9b4ea78dacbde03d5b5e4614b118f59fad2ca004\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1da6ef4e8c8549ea5836e040233afe78424b33de50bbf8a83bc521fc1ae0b7f5\",\"dweb:/ipfs/QmVt57cHvYNaQ94VrnTgRhDN81hq7zeV3UU1EQ3F8z2kw7\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolImmutables.sol\":{\"keccak256\":\"0x366c9b646ed0a7e8a2ff3b01e61b078b0397b605459804948a3b5dbfadf87f07\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4a211d5a178f08cd93b082fddd142fb144f4bc76a0d56f7bddc6b01b5433f864\",\"dweb:/ipfs/QmXbsAbdrcyiHZwksqvQ45m579Qc9C6ThPXQUttP72gUFa\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolOwnerActions.sol\":{\"keccak256\":\"0xf783673049e12e1f5ab4784c9ffdbaef66d4cd7709ac7c43af3ab163dfcc4819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c64e566d63ff5e1cf081d718e5356810fedce220a473330c20aef166275cd9a9\",\"dweb:/ipfs/QmdsBonXzuaiQC8BxYVCvmcWUtnkKzp873poeH6jbsuidP\"]},\"@airdao/astra-cl-core/contracts/interfaces/pool/IAstraCLPoolState.sol\":{\"keccak256\":\"0xb41dbeb5a9faebd4222678080759032377f8dedf65388bfe1644dc6f2aaeef39\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c7ebd43d4b1c485d5b536160d138b0206b985cf6c5f82c19dd945ff0d87ca350\",\"dweb:/ipfs/QmPuuoryMaBArNtHvNaY5PpDGmfNajoqjdyWBmGWCdbXkW\"]},\"contracts/interfaces/ITickLens.sol\":{\"keccak256\":\"0xddfabb24ac5132c33db3735bdf6235ba39ea5e9a23a41e3dd5ec64ea76149ba8\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://be307ee42e6576cdf3591e230eac28ddd490ddd4c33d0359c77b862706d86c17\",\"dweb:/ipfs/QmbgK9ziqjyv945r4giTyDaZDF4JVmQ5jQA3Sz78UENFMZ\"]},\"contracts/lens/TickLens.sol\":{\"keccak256\":\"0xbf9639d33651aeba48b8daf22d5eb554b9b14f84f01d7b53b1e1c18afdd1247d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://30a969408f365dd1826115fec7c986bf815e1f10fddfa381b1942161f3f6843e\",\"dweb:/ipfs/QmWELCdtnAzkGMyjvHJvFxxNJgtQcWZg8XCUuqWxMqa8LD\"]},\"contracts/test/TickLensTest.sol\":{\"keccak256\":\"0x3f453c0440e1ec733d824ee040ed8b9c3a27ed4f7966869a25937dc9ea8cd9d9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b26d65492c7dce23166755106778498ce27296d855009bcb33264ca4af5bcecd\",\"dweb:/ipfs/QmaXphC6sGAYNDZtgZMuBXa6cUr7R9DjtH8kcLBoWVKa4f\"]}},\"version\":1}"}}}}}